Spring Boot
コントローラー や テンプレート を書いてサーバーを起動しても、画面が出ない、サーバーが起動しないことがあります。ブラウザーとターミナルに出る現象から、原因を絞り込めます。
テンプレートが見つからない
Section titled “テンプレートが見つからない”ビュー名に対応するテンプレートが見つからないと、ブラウザーには Whitelabel Error Page、サーバーのターミナルには TemplateInputException が出力されます。
org.thymeleaf.exceptions.TemplateInputException: Error resolving template [home], template might not exist or might not be accessible by any of the configured Template Resolverstemplate [home] の部分に、コントローラーが返したビュー名が入ります。次の原因が典型的です。
- ビュー名に
.htmlを含めている(return "home.html") - 大文字小文字が違う(
return "Home"とhome.html) - テンプレートが
templates/以外の場所にある
ビュー名と templates/ 配下のファイル名が一致しているか、拡張子を含めていないかを確認します。
URL に対応するパスがない
Section titled “URL に対応するパスがない”404 Not Found は、リクエストした URL に対応するパスがないときに返ります。@GetMapping のパスと URL が一致しているか、コントローラーのクラスに @Controller を付け忘れていないかを確認します。
CSS や画像が反映されない
Section titled “CSS や画像が反映されない”スタイルや画像が反映されないのは、静的リソースのパスが合っていないためです。static/ 配下のパスと href・src のパスが一致しているか、先頭の /(ルート相対パス)を忘れていないかを確認します。
ポートが使用中でサーバーが起動しない
Section titled “ポートが使用中でサーバーが起動しない”サーバーが起動せず、ターミナルに次のエラーが出るのは、ポート 8080 を別のプロセスが使っているためです。
Web server failed to start. Port 8080 was already in use.前回起動したサーバーを止め忘れていると、ポートが解放されず、このエラーになります。サーバーの停止 で前のサーバーを止めてから、起動し直します。