おぼえがき

おぼえがき、独り言、etc...

【spring】サンプルページその2(入出力画面とか)

おぼえがき。

tirimen00.hatenablog.com↑の続き。

とりあえず試しにトップページ作る。

f:id:tirimen00:20200709225342p:plain

f:id:tirimen00:20200709225401p:plain

動いた。

cタグ使えてる理由は、共通jsp読み込みしてるため。

jspって拡張子のファイル読み込む時(url-pattern)は

jspの先頭に「include.jsp」をincludeする(include-prelude)って言ってる。なるほどなあ

f:id:tirimen00:20200709225534p:plain

 

ログイン画面とメニュー画面作る(ハリボテ、ただのinput/output画面)

f:id:tirimen00:20200709231959p:plain


f:id:tirimen00:20200709232033p:plain

f:id:tirimen00:20200709232053p:plain

動いた。いや怖、どんな画面だ
タイトルも変え忘れてるやん

 

それぞれの解説とか

 

LoginController.java


 
    @RequestMapping("login")

前回同様。先頭スラッシュなくてもSpringが勝手に足してくれるっぽい。

value = "/login"」みたいな形式でも書ける。
(path = でも良い。は?パターン多いと逆に困る)
他にオプションつけたい時はこっち

 

LoginController.java


 
    @RequestMapping(method = RequestMethod.GET)
    @RequestMapping(method = RequestMethod.POST)

ServletのdoGet,doPostみたいなもん。
GETだったらこっち、POSTだったらこっちって教えてあげる

Spring Framework 4.3から、以下の略記述でも書けるようになった。楽


 
    @GetMapping()
    @PostMapping()

 

ちなみに調子乗ってGET省略したら

f:id:tirimen00:20200709235118p:plain

f:id:tirimen00:20200709233523p:plain

いやそりゃあね。ごめんなさい。

じゃあPOST省略したら?と思って試したけど、↑のPOST版だった。いやそりゃあね。

 

LoginController.java


 
    public String init(Model model) {

いやModelて何?
Springが用意するMapオブジェクトで、Viewに渡すオブジェクトを設定してくれるらしい。へえ~

 

LoginController.java


 
    LoginForm form = new LoginForm();
    model.addAttribute(form);

んでそのmodelに、これから遷移するlogin.jspに記述があるLoginFormを渡してやる。なるほど?

この記述を

f:id:tirimen00:20200709235834p:plain

ガッツリ変えて、

f:id:tirimen00:20200709235914p:plain

TestFormって名前で参照できるようにした。

 

LoginController.java


 
    @ModelAttribute("TestForm")

 このアノテーションがついているメソッドは、RequestMappingアノテーションがついているメソッドの実行前に必ず呼ばれるらしい。

ついでに戻り値が勝手にmodelに追加されるので、
わざわざmodel.setAttributeをしなくてよくなりました。

 

ちなみにjsp側の記述については以下の通り。

  • form:formタグはオプション省略するとPOSTがデフォルト
  • modelAttributeにはフォームオブジェクトの名前を指定。
    ↑のTestFormみたいに名前を自力で設定しない場合、先頭小文字のクラス名になる
    (だから最初のソースは"loginForm"となっている)

 

 

参考にしたサイト(ありがとうございました)

Spring MVC で簡単そうなエコーアプリを作って基本を学ぶ - ponsuke_tarou’s blog