Submit Search
SpringMVC
2 likes
2,589 views
Akio Katayama
1 of 55
Download now
Downloaded 16 times
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
More Related Content
What's hot
(20)
PDF
Spring Bootでチャットツールを作りながらWebの仕組みを理解しよう!
Java女子部
PDF
[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介
david9142
PDF
Mvc conf session_1_osada
Hiroshi Okunushi
PDF
はじめての ASP.NET MVC
jz5 MATSUE
PDF
WildFly Swarmではじめる「パーツとしてのJavaEE」
Hiroaki NAKADA
PDF
JavaScript.Next
dynamis
PPTX
ASP.NET MVC プログラミング入門の入門
Masuda Tomoaki
KEY
MVCもやもや話
Tetsuya Kaneuchi
PPTX
ASP.NET SPA開発をはじめよう~今と未来とステップアップ
慎一 古賀
PDF
jQuery/Html5/ASP.NET MVC 対応コンポーネントを用いたデバイス対応業務アプリケーション開発
Daizen Ikehara
PDF
いよいよ始められる Java EEでのWebSocket #jjug #jjug_ccc #ccc_r21
Takakiyo Tanaka
PPTX
Jsf アプリ作ったった
Oda Shinsuke
PDF
Java仮想マシンの実装技術
Kiyokuni Kawachiya
PDF
Javaで1から10まで書いた話(sanitized)
Tokuhiro Matsuno
PDF
そろそろ押さえておきたい AngularJSのセキュリティ
Muneaki Nishimura
PDF
MVC 1.0 JSR-371を通してAdopt a JSRに知ろう #jjug_ccc #ccc_r57
Toshiaki Maki
PPTX
ついに始まるJava EE 7時代のアプリケーション開発
Takakiyo Tanaka
PPTX
エンタープライズ分野での実践AngularJS
Ayumi Goto
PDF
Javaの進化にともなう運用性の向上はシステム設計にどういう変化をもたらすのか
Yoshitaka Kawashima
PDF
ASP.NET シングル ページ アプリケーション (SPA) 詳説
Akira Inoue
Spring Bootでチャットツールを作りながらWebの仕組みを理解しよう!
Java女子部
[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介
david9142
Mvc conf session_1_osada
Hiroshi Okunushi
はじめての ASP.NET MVC
jz5 MATSUE
WildFly Swarmではじめる「パーツとしてのJavaEE」
Hiroaki NAKADA
JavaScript.Next
dynamis
ASP.NET MVC プログラミング入門の入門
Masuda Tomoaki
MVCもやもや話
Tetsuya Kaneuchi
ASP.NET SPA開発をはじめよう~今と未来とステップアップ
慎一 古賀
jQuery/Html5/ASP.NET MVC 対応コンポーネントを用いたデバイス対応業務アプリケーション開発
Daizen Ikehara
いよいよ始められる Java EEでのWebSocket #jjug #jjug_ccc #ccc_r21
Takakiyo Tanaka
Jsf アプリ作ったった
Oda Shinsuke
Java仮想マシンの実装技術
Kiyokuni Kawachiya
Javaで1から10まで書いた話(sanitized)
Tokuhiro Matsuno
そろそろ押さえておきたい AngularJSのセキュリティ
Muneaki Nishimura
MVC 1.0 JSR-371を通してAdopt a JSRに知ろう #jjug_ccc #ccc_r57
Toshiaki Maki
ついに始まるJava EE 7時代のアプリケーション開発
Takakiyo Tanaka
エンタープライズ分野での実践AngularJS
Ayumi Goto
Javaの進化にともなう運用性の向上はシステム設計にどういう変化をもたらすのか
Yoshitaka Kawashima
ASP.NET シングル ページ アプリケーション (SPA) 詳説
Akira Inoue
More from Akio Katayama
(20)
PPTX
AWS Elastic BeanstalkとAWS Lambdaのご紹介
Akio Katayama
PPTX
SORACOMでのJava/AWS活用
Akio Katayama
PPTX
IAMでまもれ僕らのAWS(JAWS-UG 初心者支部)
Akio Katayama
PDF
3つのS3バケット
Akio Katayama
PDF
前座Lambda
Akio Katayama
PDF
AWS Mahjong
Akio Katayama
PDF
JAWS-UG名古屋 Lambda-LT
Akio Katayama
PDF
[JAWS-UG 三都物語 2014] 三都物語でAmazon SWFと握手!
Akio Katayama
PDF
AWS Cloud Design Pattern for Enterprise
Akio Katayama
PPTX
あたらしいCloud Design Pattern
Akio Katayama
PDF
AWS re:Invent 2013 参加報告(新サービスとセッション)
Akio Katayama
PDF
AWS上で使えるストレージ十番勝負
Akio Katayama
PDF
AWSの共有責任モデル(shared responsibility model)
Akio Katayama
PPTX
PHP on Cloud
Akio Katayama
PDF
AWSマイスターシリーズReloaded(AWS Beanstalk)
Akio Katayama
PDF
CDP Night #1 静的コンテンツ配信編
Akio Katayama
PDF
AWSマイスターシリーズReloaded(AWS Cloudformation)
Akio Katayama
PPTX
Amazon SimpleWorkflowのご紹介
Akio Katayama
PDF
Aws meister-cloud formation-summit2012
Akio Katayama
PDF
Aws elastic beanstalk-handson-summit2012
Akio Katayama
AWS Elastic BeanstalkとAWS Lambdaのご紹介
Akio Katayama
SORACOMでのJava/AWS活用
Akio Katayama
IAMでまもれ僕らのAWS(JAWS-UG 初心者支部)
Akio Katayama
3つのS3バケット
Akio Katayama
前座Lambda
Akio Katayama
AWS Mahjong
Akio Katayama
JAWS-UG名古屋 Lambda-LT
Akio Katayama
[JAWS-UG 三都物語 2014] 三都物語でAmazon SWFと握手!
Akio Katayama
AWS Cloud Design Pattern for Enterprise
Akio Katayama
あたらしいCloud Design Pattern
Akio Katayama
AWS re:Invent 2013 参加報告(新サービスとセッション)
Akio Katayama
AWS上で使えるストレージ十番勝負
Akio Katayama
AWSの共有責任モデル(shared responsibility model)
Akio Katayama
PHP on Cloud
Akio Katayama
AWSマイスターシリーズReloaded(AWS Beanstalk)
Akio Katayama
CDP Night #1 静的コンテンツ配信編
Akio Katayama
AWSマイスターシリーズReloaded(AWS Cloudformation)
Akio Katayama
Amazon SimpleWorkflowのご紹介
Akio Katayama
Aws meister-cloud formation-summit2012
Akio Katayama
Aws elastic beanstalk-handson-summit2012
Akio Katayama
Ad
SpringMVC
1.
SpringMVC -Weapons for the
War on Java Complexity -
2.
自己紹介 名前 片山 暁雄 ID id:c9katayama 所属 株式会社キャピタルアセットプランニング
3.
Agenda SpringMVCとは 基本的な仕組み クラス群 アノテーション利用のスタイル デモ 利点欠点 まとめ
4.
SpringMVCとは Spring謹製のWebフレームワーク MVCパターンを採用し、各種 View(JSP,XML,XSLT,Tiles,Velocity,FreeMarker, PDF,JasperReport)を利用可能 Controller部分も充実
5.
SpringMVCとは Spring1.0,JDK1.4以降で動作 ただしアノテーションを利用する場合は Spring2.5、JDK1.5が必要 Apache License2.0 SpringSourceで開発中
6.
SpringMVC 基本的な仕組み
7.
SpringMVC Dispatcher Servlet Web Application Context HandlerMapping HandlerAdapter Handler view ModelAndView Model View
8.
SpringMVC Dispatcher Servlet Web Application Context HandlerMapping HandlerAdapter Handler view ModelAndView Model View
DispatcherServlet リクエストを受け付けるサーブレット 初期化時にSpringの設定ファイルを読み 込み、WebApplicationContextを初期化
9.
SpringMVC Dispatche Servlet Web Application Context HandlerMapping HandlerAdapter Handler view ModelAndView Model View
HandlerMapping リクエストと、実処理を行うHandlerのマッピング URLとクラス名、URLとアノテーションなど
10.
SpringMVC Dispatche Servlet Web Application Context HandlerMapping HandlerAdapter Handler view ModelAndView Model View
HandlerAdapter Handlerのメソッドを呼び出す役割 Handlerの種類によって決定
11.
SpringMVC Dispatcher Servlet Web Application Context HandlerMapping HandlerAdapter Handler view ModelAndView Model View
Handler リクエストを処理する役割(StrutsのAction部分) ここは実装します
12.
SpringMVC Dispatche Servlet Web Application Context HandlerMapping HandlerAdapter Handler view ModelAndView Model View
ModelAndView 画面に出力するデータ(Model)と画面出力処理(View)
13.
SpringMVC Dispatche Servlet Web Application Context HandlerMapping HandlerAdapter Handler view ModelAndView Model View
view JSPとかHTMLとか ここも実装
14.
SpringMVC ポイント 各種役割が抽象化されている 役割ごとに用意されてるクラスが多数ある 設定ファイル・アノテーションで入れ替え可能
15.
SpringMVC 役割ごとのクラス群
16.
SpringMVC HandlerMapping HandlerAdapter
17.
SpringMVC HandlerView
18.
ポイント クラスが多い 正直、よくわからない SpringMVC 開発スタイルに応じた様々な便利クラスが混在 しているため、混乱してしまう
19.
SpringMVC 開発スタイル 設定ファイル+便利クラス群のスタイル アノテーション利用のスタイル Spring2.5以降なら、アノテーション利用の スタイルがおすすめ
20.
SpringMVC これだけ押さえよう アノテーション利用のスタイル
21.
SpringMVC HandlerMapping DefaultAnnotationHandlerMapping Springに登録されたHandlerの中から、RequestMappingアノ テーションを読み取り、URLと合致するHandlerを探す
22.
SpringMVC HandlerAdapter AnnotationMethodHandlerAdapter HandlerMappingで条件にあったHandlerのRequestMappingア ノテーションから、パス・パラメータ・HTTPメソッドを読み 取り、リクエストの条件と一致するメソッドを見つけて呼び 出す
23.
SpringMVC ・DefaultAnnotationHandlerMapping ・AnnotationMethodHandlerAdapter いずれもデフォルトでDispatcherServletに 登録されている。 アノテーションを利用する場合は自動的に これらが使用されるため、特に意識する 必要はない
24.
SpringMVC View Handler AnnotationMethodHandlerAdapterがHandlerの戻り値を元に 適切に処理してくれるため、ひとまず忘れる POJOに対してアノテーションを付与して作成 ここだけ覚えればMVCマスター!
25.
SpringMVC アノテーションを使った Handler
26.
SpringMVC @Controller @RequestMapping("/login.do") public class LoginController
{ @RequestMapping(method = RequestMethod.GET) public String setup(Model model) { model.addAttribute(new LoginForm()); return "login.jsp"; } @RequestMapping(method = RequestMethod.POST) public String doLogin(LoginForm loginForm, Errors errors) { if (errors.hasErrors()) { return "login.jsp"; }else{ return “redirect:menu.do”; } } }
27.
SpringMVC @Controller SpringにHandlerクラスを登録するためのアノ テーション Handlerクラスに付与
28.
SpringMVC package sample.springmvc.controller @Controller public class
LoginController { <context:component-scan basepackage= sample.springmvc.controller /> 指定パッケージ以下をスキャン!
29.
SpringMVC @RequestMapping リクエストと、それを処理するHandlerをひも づけるアノテーション パス、リクエストパラメータ、HTTPメソッドを 利用してひもづけ クラスとメソッドに付与できる
30.
SpringMVC @Controller @RequestMapping("/login.do") public class LoginController
{ @RequestMapping(method = RequestMethod.GET) public String setup(Model model) { model.addAttribute(new LoginForm()); return "login.jsp"; } @RequestMapping(params=”character=EEDA”) public String character() { return “character.jsp” }
31.
SpringMVC @Controlleと@RequestMappingさえあれば、リクエ ストに対して処理を行うクラス/メソッドを関連づけ できる。
32.
SpringMVC Handlerのメソッド
33.
SpringMVC メソッド名 何でもいい(@RequestMappingで関連づ けるため)
34.
SpringMVC メソッド引数 J2EEで利用出来るオブジェクト Model SessionStatus @RequestParam POJO (@ModelAttribute) Errors 必要な物を引数で宣言
35.
SpringMVC J2EEで利用出来るオブジェクト HttpServletRequest,Response HttpSession Reader,InputStream Writer,OutputStream Principal Locale
36.
SpringMVC Model Viewに渡すデータを格納するオブジェクト setAttribute()で値をセット setAttribute(value)の場合、暗黙的にキーが 設定される @RequestMapping(method = RequestMethod.GET) public
String setup(Model model) { model.addAttribute(new LoginForm()); return "login.jsp"; } 「loginForm」が キー値になる
37.
SpringMVC SessionStatus @ SessionAttributesと対になって動作 SessionStatus.setComplete()を呼び出す と、@SesssionAttributeでセッションに格納し たオブジェクトがセッションから削除される 削除対象は、setComplete()を呼んだクラス が付与している@SesssionAttributesの値
38.
SpringMVC @SessionAttributes Modelに入っているオブジェクトのうち、セッショ ンに格納しておきたいオブジェクトのキーを指 定
39.
SpringMVC @Controller @RequestMapping("/login.do") @SessionAttributes(“loginForm”) public class LoginController
{ @RequestMapping(method = RequestMethod.GET) public String setup(Model model) { model.addAttribute(“loginForm”,new LoginForm()); return "login.jsp"; } 「loginForm」をキーとし てセッションに入る
40.
SpringMVC @Controller @RequestMapping("/login.do") @SessionAttributes(“loginForm”) public class LoginController
{ @RequestMapping(method = RequestMethod.POST) public String doEnd(SessionStatus status) { status.setComplete(); return "login.jsp"; } 「loginForm」がキー値 のオブジェクトがセッション から削除される
41.
SpringMVC @RequestParam リクエストパラメータを取得するためのアノ テーション デフォルトでrequired。パラメータがリクエスト にない場合、例外が発生
42.
SpringMVC /sample/login.do?id=hoge @RequestMapping(method = RequestMethod.POST) public
String doLogin(@RequestParam(“id”) String id) { //idに”hoge”が入る }
43.
SpringMVC POJO (@ModelAttribute) POJOを指定すると、リクエストパラメータが バインドされる @ModelAttribute( name
)を付与する と、nameをキーにしてModelにPOJOが入る。 (付与しない場合は暗黙的な名前でModelに 入る)
44.
SpringMVC @RequestMapping(method = RequestMethod.POST) public
String doLogin(LoginForm loginForm, Errors errors) { } @RequestMapping(method = RequestMethod.POST) public String doLogin( @ModelAttribute(“loginForm”)LoginForm loginForm, Errors errors) { }
45.
SpringMVC Errors リクエストパラメータをPOJOに変換する際、 型変換などが起きた場合にそのエラーを取 得するためのクラス
46.
SpringMVC @RequestMapping(method = RequestMethod.POST) public
String doLogin(LoginForm loginForm, Errors errors) { if (errors.hasErrors()) { return "login.jsp"; }else{ return “redirect:menu.do”; } }
47.
SpringMVC メソッド戻り値 通常はString ModelAndViewを返す事も可能 voidの場合、ViewResolverというクラスが リクエストパラメータからViewを組み立てる (/login.do -> /login.jspのような変換)
48.
SpringMVC ポイント いきなり全機能を使うのは難しい まずは@RequestMapping+J2EEのクラスで SessionStatusとSessionAttributeは使わ なくてもOK(通常のHttpSessionを使う) 暗黙的な仕様部分は避ける 型変換はフレームワークに任せて、それ 以外のバリデーションはハンドラメソッド内 で行う
49.
SpringMVC view
50.
SpringMVC カスタムタグ Struts風のFormタグ エラータグ
51.
SpringMVC <%@ taglib prefix="spring"
uri="http://www.springframework.org/tags" %> <%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %> <form:form modelAttribute="loginForm"> ID: <form:errors path="id"/> <form:input path="id" size="30" maxlength="30"/> PASSWORD: <form:errors path="password"/> <form:password path="password" size="10" maxlength="10"/> <input type="submit" value="login"/> </form:form>
52.
SpringMVC デモ
53.
SpringMVC 利点 いくつかアノテーションを覚えれば、すぐにURL とマッピング出来る 柔軟なマッピング リクエストパラメータからPOJOへの型変換を、 フレームワークが行ってくれる Handlerがコンテナ管理されているため、DIが 可能 カスタマイズが容易
54.
SpringMVC 欠点 ModelやSessionAttributesなどの概念がわか りずらい(オブジェクトのライフサイクルが見え にくい) CoC的に処理される部分がわりとある トランザクションはサポートしていない (SpringWebFlow) コンテナの選択肢がSpringしかない
55.
SpringMVC まとめ アノテーションスタイルなら設定の記述も 少なく、手軽に使い始められる タグはStruts風なので、なじみやすい とりあえず はじめてみよう MVC
Download