SpringBootでRequestMappingを使ってhtmlを呼び出せない

受付中

回答 2

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 865

Kiyonom

score 4

 前提・実現したいこと

初歩的なことですが、教えていただきたいです。
SpringBootを使って、htmlを表示させたいです。
@Controllerと@RequestMappingを使っています。

マッピングの位置は違っていないはずですが、ファイルが見つからず、表示されません。

 発生している問題・エラーメッセージ

http://localhost:8080/をうつと、404が返ってきます。
該当ページがない旨のエラーであると認識しています。

 該当のソースコード

特に処理などはないです。

import static org.springframework.web.bind.annotation.RequestMethod.*;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class MyBootAppController {
    @RequestMapping(value = "/", method = { GET, POST })
    public String menu() {
        return "index";
    }
}

index.html

<!DOCTYPE html>
<html lang="ja" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
</head>
<body>
Hello World!
</body>
</html>
#==============
# thymeleaf
#==============

spring.thymeleaf.mode=HTML
spring.thymeleaf.cache=false

 試したこと

@RequestMappingのカッコの中に
①("/")
②({"/"})
③value=("/")
を入れて試しました。

ソースの階層は下記のとおりです。
イメージ説明

第一歩で躓いてしまいました。
宜しくお願い致します。

追記です

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.tuyano.springboot</groupId>
    <artifactId>MyBootApp</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>MyBootApp</name>
    <description>sample project for Spring Boot</description>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.5.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
              <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>


</project>
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • asahina1979

    2018/10/03 12:30

    pom.xml の dependencies 追記

    キャンセル

  • Kiyonom

    2018/10/03 14:12

    追記しました!

    キャンセル

回答 2

+1

アプリケーションを起動し、ブラウザのアドレスバーに次のように入力してみてください。

http://localhost:8080/

2018/10/03追記

質問文に提示して頂いている内容でほぼ同じアプリケーションを作って実行し、"http://localhost:8080/"にアクセスしてみたところ、ブラウザには”Hello World!”と表示されました。
なので、プログラムや設定ファイルには問題が無いように見えます。

2点ご確認頂きたいことがあります。

1) 下記のログは私の環境でアプリケーションを起動したときのログの一部です。
このなかの上から3行目が"MyBootAppController.menu()"が"/"にマップされていることを示しています。
Kiyonomさんの環境でも同じログが出力されているかご確認ください。

o.s.w.s.handler.SimpleUrlHandlerMapping  : Mapped URL path [/**/favicon.ico] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
s.w.s.m.m.a.RequestMappingHandlerAdapter : Looking for @ControllerAdvice: org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@27216cd: startup date [Wed Oct 03 21:13:53 JST 2018]; root of context hierarchy
s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/],methods=[GET || POST]}" onto public java.lang.String com.example.demo.MyBootAppController.menu()
s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error]}" onto public org.springframework.http.ResponseEntity<java.util.Map<java.lang.String, java.lang.Object>> org.springframework.boot.autoconfigure.web.servlet.error.BasicErrorController.error(javax.servlet.http.HttpServletRequest)
s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error],produces=[text/html]}" onto public org.springframework.web.servlet.ModelAndView org.springframework.boot.autoconfigure.web.servlet.error.BasicErrorController.errorHtml(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse)
o.s.w.s.handler.SimpleUrlHandlerMapping  : Mapped URL path [/webjars/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
o.s.w.s.handler.SimpleUrlHandlerMapping  : Mapped URL path [/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]

2) 考えにくいことですがブラウザがエラーページをキャッシュしているということがあるかもしれません。
ブラウザのキャッシュをクリアして再度アクセスしてみてください。
Windows環境でChromeの場合は、Shift + F5キーを同時に押すことでキャッシュをクリアしてリロードできます。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/10/03 11:55

    ありがとうございます。
    試してみましたが、エラーは変わらずでした。

    キャンセル

  • 2018/10/03 11:58

    参考にした書籍には、htmlがあるファイル「templates」は、src > main > resourcesの下とありますが、このパスはあっているでしょうか?

    キャンセル

  • 2018/10/03 21:29

    はい、"src\main\resources\templates"であっていると思います。

    キャンセル

-1

たしか閉じタグがいるんじゃなかったかな。

<meta charset="UTF-8"/>

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/10/03 12:27 編集

    thymeleaf 2 まではそうだが thymeleaf 3では問題なくなっっている。
    thymeleaf 2でも そのエラーは HTTP STATUS CODE 500 で whitelabel に飛ぶ

    キャンセル

  • 2018/10/04 08:52

    そうでしたか、失礼しました。

    キャンセル

  • 2018/10/04 08:53

    同様のプログラムを書いてみましたが、問題なく動いていました。
    githubに載せました。相違するところはないでしょうか。
    https://github.com/ringo-apo/java_sb_tt

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.21%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る