rion0726ittoti
@rion0726ittoti

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

超初歩 springboot画面表示

画面表示について

「Spring徹底入門」chapter4.2.4入力画面表示処理の実装

エンジニアになりたて研修中のいとっちです。研修でspringbootをやるとのことで、自主学習として自分でもやってみようと思い、Eclipseでspringboot新規プロジェクトを立ち上げました。
ローカル環境でアプリケーションを起動してみると、エラーはでないで、URLに[http://localhost:8080/hello] を入れるとindex.htmlの画面表示に成功しました。(下記参照)
キータ質問hello.png
キータ質問(2).png

発生している問題・エラー

次にinput.htmlを表示したくて、EchoControllerを作成し、下記の写真のようにコードを打ちました。
しかし、表示されず下記のようにエラー表示がでました。
キータ質問(3).png

キータ質問(4).png

自分で考えたこと・質問したいこと

①EchoController.javaでreturn "/input.html";を記述したことで最後にinput.htmlが返される。なので、この記述を画面表示の指定を行っているという解釈で合っているか。
②なぜ、/echoでエラーが発生するのか、記述方法はHelloController.javaと同じはずだと思うのですが。
③JSPファイルを作成したいのですが、templatesフォルダの中に作成してよいのか。
超初歩的な質問で自分で考えればできるだろ・・・と思うかもしれませんが、初めてのspringbootでさっぱり何度も書籍を読みましたがわかりませんでした。
よろしくお願いします!

0

1Answer

①EchoController.javaでreturn "/input.html";を記述したことで最後にinput.htmlが返される。なので、この記述を画面表示の指定を行っているという解釈で合っているか。

その解釈で問題ないです。

②なぜ、/echoでエラーが発生するのか、記述方法はHelloController.javaと同じはずだと思うのですが。

表示されたエラーページを見るとstatus=404という表示が見えるかと思います。HTTPステータスコードはWeb開発には必須の基本知識ですので覚えておくと良いです。
404は指定されたパスが見つからなかったことを意味します。なので、今回の場合は/echoが見つからなかったことを意味しています。
これは@RequestMappingなどのパス指定が誤っていたり、コントローラ(@Controllerがアノテートされたクラスなど)自体が読み込まれていない場合に発生します。
ソースコードを見る限りパス指定はあっているのでEchoControllerが読み込まれていないと思われます。
SpringBootは@ComponentScan@SpringBootApplicationscanBasePackagesなどで指定されたパッケージ、またアプリケーションクラス(@SpringBootApplicationがアノテートされたクラス。おそらくAppApplication)のパッケージ配下を自動的にスキャンしてコントローラなどを見つけ出して読み込みます。
おそらくEchoControllerが自動スキャンの対象になっていないのでしょう。
一番簡単な対処はEchoControllerHelloControllerと同じパッケージに移動することです。

③JSPファイルを作成したいのですが、templatesフォルダの中に作成してよいのか。

プロジェクトの設定等がわからないのでなんとも言えませんが、おそらくViewのエンジンにThymeleafを利用しているのでJSPは使えません(頑張れば併用できますが普通はViewのエンジンは1つにします)。
input.htmlの配置場所としては正しいと思います。

超初歩的な質問で自分で考えればできるだろ・・・と思うかもしれませんが、

フレームワークのことは考えてわかることではなく、知らなければわからないことですので悲観しなくて良いかと思います。手を動かして初めて理解できることも多いですので頑張ってください。

初めてのspringbootでさっぱり何度も書籍を読みましたがわかりませんでした。

Spring Bootは仕事で使っている人でも理解している人は少ないので無理もありません。
サンプルレベルのものは簡単に作れますが、少しカスタマイズしようとすると必要になる知識や理解が格段に増えます。
Spring Bootを使わない開発を色々経験した後にSpring Bootを触れることで、初めてSpring Bootの良さを理解できるのではないかと思います。

0Like

Comments

  1. @rion0726ittoti

    Questioner

    @mrbonjinさん回答ありがとうございます!
    EchoControllerをHelloControllerと同じパッケージに移動したら、画面表示されました!
    私の解釈、質問に対して、ひとつひとつ丁寧に回答、アドバイス、励ましの言葉ありがとうございます!
    HTTPステータスコードのURL共有参考にさせていただきます。
    まだまだ駆け出しでわからないことだらけですが、継続して学習に取り組み、技術を高めていきます!
    また、わからないことがあったら質問すると思うので、お時間ありましたら回答していただけると幸いです!
    ありがとうございました!!!

Your answer might help someone💌