🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Spring Boot

Spring Bootは、Javaのフレームワークの一つ。Springプロジェクトが提供する様々なフレームワークを統合した、アプリケーションを高速で開発するために設計されたフレームワークです。

Q&A

1回答

10566閲覧

SpringBootのフォルダ構成について

limitman80

総合スコア40

Spring Boot

Spring Bootは、Javaのフレームワークの一つ。Springプロジェクトが提供する様々なフレームワークを統合した、アプリケーションを高速で開発するために設計されたフレームワークです。

0グッド

0クリップ

投稿2019/12/02 06:10

編集2019/12/02 06:27

SpringBootのVer 2.2で下記のフォルダ構成を検討しているのですが、
Whitelabel Error Pageが出てHTMLの表示ができません。

spBoot +-src  +-main +-java +-com +-example +-test1 +-controller +-controller.java +-test2 +-controller +-controller.java +-src  +-main +-resources +-templates +-test1 +-test1.html +-test2 +-test2.html

上記のようなフォルダ構成を考えています。
test1、test2とわけており、今後もtest3、test4・・・と増えていく予定です。

test1のcontroller.javaは

java

1package com.example.test1.controller; 2 3import java.io.IOException; 4import java.io.PrintWriter; 5import java.text.SimpleDateFormat; 6import java.util.Date; 7import java.util.List; 8 9import javax.servlet.http.HttpServletResponse; 10 11import org.springframework.beans.factory.annotation.Autowired; 12import org.springframework.http.ResponseEntity; 13import org.springframework.stereotype.Controller; 14import org.springframework.transaction.annotation.Transactional; 15import org.springframework.ui.Model; 16import org.springframework.util.MimeTypeUtils; 17import org.springframework.web.bind.annotation.ModelAttribute; 18import org.springframework.web.bind.annotation.RequestBody; 19import org.springframework.web.bind.annotation.RequestMapping; 20import org.springframework.web.bind.annotation.RequestMethod; 21import org.springframework.web.bind.annotation.ResponseBody; 22 23@Controller 24public class test1Controller { 25 26 @RequestMapping(value = "/test1/test1", method = RequestMethod.GET) 27 public String displayUserAdd(Model model) { 28 model.addAttribute("memberRequest", new MemberRequest()); 29 return "test1/test1"; 30 } 31}

test2のcontroller.javaは

java

1package com.example.test2.controller; 2 3import java.io.IOException; 4import java.io.PrintWriter; 5import java.text.SimpleDateFormat; 6import java.util.Date; 7import java.util.List; 8 9import javax.servlet.http.HttpServletResponse; 10 11import org.springframework.beans.factory.annotation.Autowired; 12import org.springframework.http.ResponseEntity; 13import org.springframework.stereotype.Controller; 14import org.springframework.transaction.annotation.Transactional; 15import org.springframework.ui.Model; 16import org.springframework.util.MimeTypeUtils; 17import org.springframework.web.bind.annotation.ModelAttribute; 18import org.springframework.web.bind.annotation.RequestBody; 19import org.springframework.web.bind.annotation.RequestMapping; 20import org.springframework.web.bind.annotation.RequestMethod; 21import org.springframework.web.bind.annotation.ResponseBody; 22 23@Controller 24public class test2Controller { 25 26 @RequestMapping(value = "/test2/test2", method = RequestMethod.GET) 27 public String displayUserAdd(Model model) { 28 model.addAttribute("memberRequest", new MemberRequest()); 29 return "test2/test2"; 30 } 31}

としています。

localhost:8080/test1/test1にアクセスするとtest1.htmlが表示されるのですが、
localhost:8080/test2/test2にアクセスするとWhitelabel Error Pageが表示され、test2.htmlが表示されません。

フォルダ構成に間違い等あるのでしょうか?
最適なフォルダ構成を教えてもらえないでしょうか?

controller.javaに追記しました。
test1のcontroller.javaの飛び先をtest2/test2にすると問題なくtest2.htmが表示されました。

気になる質問をクリップする

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2019/12/02 06:17

最適な、と言われましても、testなど仮の名前っぽいのだと難しいのでは。 念のためpackage宣言も含めてコントローラのコード提示していただけますか? あとコンソールやログファイルに何かエラー等出力されていませんか?
limitman80

2019/12/02 06:23

コンソールには何も出力されてません。
m.ts10806

2019/12/02 06:31

デバッグモードでの実行ではどうでしょうか。 というかエラーなくても状況をコンソール出力しておくのは開発時期や学習時期は定石の対応です。
limitman80

2019/12/02 06:43

コンソールに出力するようにします。 特にエラー等は出力されてません。 デバッグモードでやってみたらtest2側のcontroller.javaには止まりません。 認識してないというか動作してないみたいです。
m.ts10806

2019/12/02 07:10

それぞれのhtmlも提示いただいた方が良いかもしれません。 あとtest1からtest2へのリンクを貼ってそこからの遷移も試してみてください。
limitman80

2019/12/02 07:14

htmlはhello world test1とhello world test2が表示されるだけになってます。 test1からtest2は問題なく遷移できてます。
m.ts10806

2019/12/02 07:20

あくまで白紙ページが出るのはブラウザから直に実行したときだけと言うことですね? test1からtest2の遷移は、リダイレクトやフォワードではなく、aタグでのリンクで遷移させましたよね? では、そのURLとリンク遷移させたときのリンクURLを見比べてみると良いです。後者は必ずブラウザの「ソースを表示」からhtmlを拾ってくること。 アドレス直打ちとリンク遷移はGetリクエストという点で同じですから、片方が問題ないということはURLが間違っていると言えます
limitman80

2019/12/02 07:38

aタグですね。 リンク間違いで遷移できてませんでした。
A-pZ

2019/12/02 08:47

SpringBootの起動クラスは、com.example パッケージ直下でしょうか?
limitman80

2019/12/02 08:52

SpringBootの起動クラスはtest1、test2にそれぞれ配置しています。 2つあるから間違ってますか?
A-pZ

2019/12/02 08:59

通常は1つだけです。続きは回答に記載します。
guest

回答1

0

SpringBootの起動クラスのアノテーションは、そこに所属するパッケージ以下のSpringのアノテーションがついているクラスをスキャンして配置します。そのため、片方の起動クラス以下のパッケージしか反応しません。

追加したい場合は、@ComponentScanで対象パッケージをすべて記述します。(ワイルドカードの指定も可能です)

https://www.baeldung.com/spring-component-scanning

投稿2019/12/02 09:02

A-pZ

総合スコア12011

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問