はじめに
著者が学習サイトを参考にブラウザへ「おはようございます」と表示させるコントローラーを作った際に、次のエラーが出た時の話です。
エラーページ
存在しないページにアクセスしたときに表示される404エラーでした
結論
編集したコントローラーのコードが上書き保存
がされておらず、
上書き保存後、ブラウザを更新
したら解決しました
データ構造
LessonController.javaまでのパス
/Applications/Eclipse_2023-06.app/Contents/workspace/spring_boot_introduction/src/main/java/com/example/controller/LessonController.java
LessonController.javaの内容
package com.example.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
@RequestMapping("/lesson")
public class LessonController {
@GetMapping
@ResponseBody
public String hello() {
return "おはようございます";
}
// 結果: "/lesson" にリクエストした場合
// ”おはようございます"と出力される
@GetMapping("/sample")
@ResponseBody
public String sample() {
return "こんにちは";
}
// 結果: "/lesson/sample" にリクエストした場合
// ”こんにちは"と出力される
@GetMapping("/sample2")
@ResponseBody
public String sample2() {
return "こんばんは";
}
// 結果: "/lesson/sample2" にリクエストした場合
// ”こんばんは"と出力される
}
SpringBootは実行されている
ポート番号:8080
URL:http://localhost:8080/lesson/
なぜ解決策に気付いたのか
作成したLessonController.javaをEclipse
ではなく
VSCode
で開いた場合、コードがほとんど記述されていなかったため
Eclipseでどのような操作をしたのか(Mac)
Eclipseの画面をアクティブにした状態でCmd+S
にて上書き保存を実行
ブラウザを更新するとコントローラーに記述した内容が反映されていることを確認
HTMLが表示されない
次のようにcontrollerのコードを修正した際、上書き保存をするも参照先のHTMLファイルを表示することができませんでした
package com.example.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@RequestMapping("/lesson")
public class LessonController {
@GetMapping("/sample")
// HTMLをレスポンスにする場合、@ResponseBodyを必ず削除します
// @ResponseBody
public String sample() {
return "index";
}
}
ファイルやフォルダの構造には問題はありません
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Hello World</title>
</head>
<body>
<span>Hello World</span>
</body>
</html>
結論
サーバーを一度停止して、再度サーバーを実行するとHTMLを読み込んで出力できました
アプリケーションを再起動する
サーバーが稼働している場合はサーバーを停止させる
サーバーを停止するボタン
アプリケーションを実行することによりWebサーバーが起動し、リクエストに応じたプログラムが動くようになります。
今回作成した対象のプロジェクトを右クリックで選択し、
実行
→Spring Boot アプリケーション
を選択します
実行することでコンソールに次の表示が出ていれば起動が完了しています
ポート番号も8080
という番号が表示されています。
Hello World
今後の対策
Eclipseに自動保存の設定を行う
自動保存の設定手順
- メニューバーから [Eclipse] > [設定] を選択します。
- 左側のリストから [一般] > [エディタ] > [自動保存] を選択
- 右側のペインに自動保存の設定が表示される。
- [エディタの自動保存を有効にする] チェックボックスを選択
- 自動保存を有効にし、自動保存するまでの間隔を指定する
未保存のエディタが指定した時間が経過すると自動的に保存される
あとがき
今回のWhitelabel Error Pageというエラーは頻繁に発生しているようでGoogleには結構な数の記事や質問が掲載されていました。フォルダ構造や名前の付け方など様々な解決方法を示されていましたが著者のケースとは該当せず解決に半日を要しました。
解決すると簡単なことでしたが、気づかないうちは難問なのでここに失敗例をアウトプットいたします。誰かのお役に立てれば幸いです。