5月21日 JJUG CCCに行ってきた!のつづき
CD-4 ネクストStruts/Seasar2としてのJava EEアクションベースMVC入門 – MVC 1.0、Jersey MVC、RESTEasy HTML –
をメモメモ
#ccc_cd4で資料のありかはつぶやいている
■ネクストStruts/Seasar2としてのJavaEEアクションベースMVC入門
・今回の話
Thymeleafを使っている
ソースはGithubにある
・自己紹介
1.アクションベースMVCとは
HTTPのリクエストに注目したフレームワーク
Struts/Seaser2
コンポーネントベースMVC 画面とJavaクラスが1対1
JavaEEのWebフレームワーク
JSF:コンポーネントベース
JAX-RS:アクションベースだがJSONを返す
アクションベースMVC
MVC
JAX-RSベース
JavaEEは仕様(実装はない)
MVC1.0の参照実装はおざーく
Struts/Seaser2のアノ機能
コントローラー
バリデーション
例外
ない
画面構築がない理由
新たなビュー言語は定義しない
使いたいのを使え
公式
JSP Facelets
Ozark独自
Thymeleaf
ViewEngineを使えば他も
JSP・Faceletの問題点
・JSP
ビューとロジック交る
XSS脆弱性
・Facelets
全機能使えない(AJAX)
Javascriptの相性悪い
Thymleafを使ってみよう
・ピュアなHTMLで賭ける
・デフォルトでエスケープしてくれる
MVC1.0でThymeleafを使う方法
pom.xmlにozark-thymeleafを依存性に加えるだけ
二重サブミット防止がない理由
・クライアントサイドで行うべき
→自前で
準備
・Jax-RSの有効化
@ApplicationPath("/api")
基本的なコントローラーの作り方
斜体 MVC1.0
それ以外は、JAVAEEなどの
戻り値 ビューのパス、拡張子必須
入力値を受け取るフォームクラス
@inject Map+Iterator
渡された値の表示
バリデーション
BindingResult
エラーメッセージの表示
エラーメッセージの記述
注意
フォームバインディング機能はない
@BeanParamは複数パラメータを1個のクラスにまとめただけ
フォームバインディングの実装
例外処理
ExceptionMapperインターフェース実装クラスを作成
@Providerを忘れずに
MVC Context
@controllerをつけるかつけないかで実装切り分けられる
・デモ
EE7におけるJerseyMVC
・Jax-RSの参照実装Jerseyの独自機能
・RestEasyJax-RSの独自実装
JerseyMVCの基本的な使いかた
・コントローラー戻り値Viewable
・コンストラクタの第二引数でビューに値を渡す
JearseyMVCでバリデーション
・コントローラーメソッドの中でバリデーションする
この方法の
・メリット
ピュアなJAX-RS
オレオレフレームワークを防げる
リダイレクト
・RestEasyHTML
RenderableをコントローラーメソッドがView
WriterInterceptor
コントローラーにもThymeleaf
バリデーションはJarseyと同じ
4.その他の知っておくべき
・Jax-RSの知識が不可欠
・うらがみさんの資料 「処理パイプライン」
JavaEE7徹底入門
まとめ
注意点
・JerseyMVC,RestEasyは標準ではない
デモ:おれおれMVC
ぷろばいだーくらすは、しんぐるとんなので、スレッドセーフではない点に注意