【spring】サンプルページその2(入出力画面とか)
おぼえがき。
とりあえず試しにトップページ作る。
動いた。
cタグ使えてる理由は、共通jsp読み込みしてるため。
jspって拡張子のファイル読み込む時(url-pattern)は
jspの先頭に「include.jsp」をincludeする(include-prelude)って言ってる。なるほどなあ
ログイン画面とメニュー画面作る(ハリボテ、ただのinput/output画面)
動いた。いや怖、どんな画面だ
タイトルも変え忘れてるやん
それぞれの解説とか
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省略したら
いやそりゃあね。ごめんなさい。
じゃあ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を渡してやる。なるほど?
この記述を
ガッツリ変えて、
TestFormって名前で参照できるようにした。
LoginController.java
@ModelAttribute("TestForm")
このアノテーションがついているメソッドは、RequestMappingアノテーションがついているメソッドの実行前に必ず呼ばれるらしい。
ついでに戻り値が勝手にmodelに追加されるので、
わざわざmodel.setAttributeをしなくてよくなりました。
ちなみにjsp側の記述については以下の通り。
- form:formタグはオプション省略するとPOSTがデフォルト
- modelAttributeにはフォームオブジェクトの名前を指定。
↑のTestFormみたいに名前を自力で設定しない場合、先頭小文字のクラス名になる
(だから最初のソースは"loginForm"となっている)
参考にしたサイト(ありがとうございました)