クラスのプロセッサに基づいているMVCの注釈スタイルの開発は、XMLで登録なし、各プロセッサ用に定義され、注釈を開発しました。
ただ、クラスやメソッドに注釈を付けることで、コードで、登録を完了します。
定義されたプロセッサ
@Controller:現在のクラスのプロセッサ
@RequestMapping:現在のプロセッサ方式のための方法、ランダムにメソッド名、及び処理される要求に応答します。
@Controller パブリック クラスMyController { @RequestMapping(値 = " /hello.do " ) 公衆のModelAndView doControl(HttpServletRequestのリクエスト、 HttpServletResponseの応答){ のModelAndView MV = 新規のModelAndView()。 mv.addObject(" メッセージ"、" 执行方法" )。 mv.setViewName(" 歓迎、ニール!" ); 返すMVを。 } }
要求RequestMappingに制限することができる、例えば
@RequestMapping(値= " /hello.do "、paramsは = { " 名前は=ニール"、" !年齢" }、メソッド= RequestMethod.POST)
方法= RequestMethod.POST定義型は、POSTに提出され
params = {「名前=ニール」、「!年齢」}パラメータを運ぶ必要があり、要求定義の名前、値ニール、パラメータは、年齢を運ぶことができません
リクエストパラメータを受け入れます
パラメータ名およびパラメータ名要求処理一貫した方法であれば、直接得ることができます。
(値= @RequestMapping " /hello.do " ) 公共のModelAndView doControll(文字列名、int型の年齢を){ システム。アウト .println(" 名:" +名+ " 年齢:" + 年齢)。 ModelAndViewのMV = 新しいのModelAndView(); 返すMVを。 }
パラメータ名が矛盾している場合、それは@RequestParamで位置決めする必要があります。
3つのプロパティがあります@RequestParam
- 名前/値:パラメータの指定要求の名前。
- 必要:パラメータが必要かどうか、それがfalseの場合、それは可能なパラメータがないことを意味します。
- defaultValue:リクエストパラメータ、現在のパラメータのデフォルト値を運ぶことはありません。
doControll(@RequestParam(名前= " ユーザ名")文字列名、@RequestParam(名前= " userage ")int型の年齢)
Path変数@PathVariable
プロセッサのプロセスパラメータは、URIから、要求内で運ばパラメータから導出することができる変数、すなわち、パス変数であってもよいです。
パラメータ値を受け取る変数名とパス名が一致しない場合は、上記の通常のパラメータと同様に、可変パラメータのパス名ことに留意されたいです。
以下に示すように、ユーザ名の音名、年齢と年齢。
(=値@RequestMapping " /{username}/{age}/hello.do " ) 公共のModelAndView doControll(@PathVariable(" ユーザ名")文字列名、@RequestParam int型年齢){ システム。アウト .println(" 名:" +名+ " 年齢:" + 年齢)。 ModelAndViewのMV = 新しいのModelAndView(); 返すMVを。 }
この方法は、値のプロセッサを返します
プロセッサを使用して@Controllerアノテーションは、この方法は、以下の4つの一般的に使用される値を返します。
- ModelAndView
- 空隙
- オブジェクト、カスタムタイプのオブジェクト
- 弦
1、のModelAndViewを返します
完了ハンドラメソッドの後、他のリソースにジャンプする必要があり、資源ジャンプの間でデータを転送する必要性、のModelAndViewを返すように。
公共のModelAndView doControll(){ のModelAndViewのModelAndView = 新規のModelAndView()。 // 传递的数据 modelAndView.addObject(" 名前"、" ニール" ); modelAndView.setViewName(" /user.do " ); 返すのModelAndViewを。 }
2、voidを返します
リクエストを処理した後、何のジャンプは、プロセッサはvoidを返す例えばAjaxの非同期の要求と応答を置くことはできません。
所望のジャンプは、前方またはのsendRedirect ServletAPIを操作することにより行うことができる場合。
3、リターンオブジェクト
オブジェクトプロセッサは、オブジェクトを返すことがあり、この時間は、論理ビューとしてではなく、直接、表示用のページデータには表示されません。
オブジェクトは、注釈が@ResponseBody、重量に換算JSONレスポンスデータを必要とする、オブジェクトを返します。
フロントエンドのデータ収集
FR.ajax({ URL:" hello.do " 、 完全:機能(データ){ アラート(data.name + " " + data.age); } })
同様に、あなたはそうで収集リスト、地図を返す、とすることができます。
@RequestMapping(値= " /hello.do " ) @ResponseBody 公共のModelAndView doControll(){ 一覧 <学生>リスト= 新しいのArrayList <学生> (); list.add(新学生(" A "、11 )); list.add(新学生(" B "、22 )); list.add(新学生(" C "、33 )); 戻り値のリスト。 }
フロントエンドのデータ収集
FR.ajax({ URL:" hello.do " 、 完全な:機能(データ){ $(データ).each(関数(指数)){ 警告(データ[インデックス] .nameの + データ[インデックス] .age)。 } } })
4、文字列を返します
文字列を返し三つの可能なシナリオがあります。
- 論理ビュー名
- リダイレクトリダイレクト
- フォワード転送
論理ビュー名
プロセッサは、文字列は、論理ビュー名、物理的ビューにビューによってパーサーアドレスを指定することができる返します。
最終実際のアクセス・パス=「接頭辞」論理ビュー+名+「接尾辞」
あなたは接頭辞と接尾辞を指定しない場合、それはのような、物理的なビュー名に直接返されることがあります
リターン 「/WEB-INF/admin/welcome.jsp 」
リダイレクトリダイレクト
返す 「:/admin/next.actionをリダイレクトします」。
等価response.sendRedirect()、転送先アドレスにブラウザのアドレスバーを転送した後。
新しい要求を開始しているので、元のパラメータを転送するとき、次のURLに渡すことはできません、
パラメータを渡すにはバックスプライスは、パラメータ&A = 1&B = 2をURLにすることができます
フォワード転送
戻る " 前進:/admin/forward.action " ;
等価request.getRequestDispatcher()。フォワード(要求、応答)、ブラウザのアドレスバーまたは元のアドレスを転送した後。
転送が行われ、新しいリクエストとレスポンスが、リクエストと共有要求と応答を転送する前にされていません。
パラメータは、直接転送する前に再利用することができます。
それはすべて、この記事のために、私たちは、私はあなたが家のスクリプトをサポートして願っています、学ぶために役立つことがしたいです。
ドキュメントから:https://www.jb51.net/article/136822.htm
また、記事に興味がある可能性があります。
- Spring MVCのフレームワーク構築された構成と詳細
- SpringMVCファイルアップロードファイルアップロードの例
- SpringMVC + MyBatisの宣言的トランザクション管理
- Spring MVCのファイルアップロードの例
- 模範的な、単純なCRUD(SSM統合)のSpringMVC
- 3通りの方法でJSONデータを返すSpringMVC
- springMVCページジャンプ、いくつかの方法の概要
- SpringMVCインターセプタは、静的リソースの3つの処理の方法と手段を傍受していません
- JSON形式のデータコンテキスト要求SpringMVCでAjaxの非同期実装
- 最初からチュートリアルの旧Spring MVCのシリーズを確認