スプリングMVC(b)は、開発は、詳細な注釈タイプを使用します

クラスのプロセッサに基づいている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

  1. 名前/値:パラメータの指定要求の名前。
  2. 必要:パラメータが必要かどうか、それがfalseの場合、それは可能なパラメータがないことを意味します。
  3. 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つの一般的に使用される値を返します。

  1. ModelAndView
  2. 空隙
  3. オブジェクト、カスタムタイプのオブジェクト

1、のModelAndViewを返します

完了ハンドラメソッドの後、他のリソースにジャンプする必要があり、資源ジャンプの間でデータを転送する必要性、のModelAndViewを返すように。

公共のModelAndView doControll(){ 
    のModelAndViewのModelAndView = 新規のModelAndView()。
    // 传递的数据 
    modelAndView.addObject(" 名前"" ニール" ); 
    modelAndView.setViewName(" /user.do " );
    返すのModelAndViewを。
  }

2、voidを返します

リクエストを処理した後、何のジャンプは、プロセッサはvoidを返す例えばAjaxの非同期の要求と応答を置くことはできません。

所望のジャンプは、前方またはのsendRedirect ServletAPIを操作することにより行うことができる場合。

3、リターンオブジェクト

オブジェクトプロセッサは、オブジェクトを返すことがあり、この時間は、論理ビューとしてではなく、直接、表示用のページデータには表示されません。

オブジェクトは、注釈が@ResponseBody、重量に換算JSONレスポンスデータを必要とする、オブジェクトを返します。

@RequestMapping(値= " /hello.do " 
@ResponseBody 
公共のModelAndView doControllは(){
    戻り 、新たな学生(" ニール"998 )。
  }

フロントエンドのデータ収集

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、文字列を返します

文字列を返し三つの可能なシナリオがあります。

  1. 論理ビュー名
  2. リダイレクトリダイレクト
  3. フォワード転送

論理ビュー名

プロセッサは、文字列は、論理ビュー名、物理的ビューにビューによってパーサーアドレスを指定することができる返します。

最終実際のアクセス・パス=「接頭辞」論理ビュー+名+「接尾辞」

あなたは接頭辞と接尾辞を指定しない場合、それはのような、物理的なビュー名に直接返されることがあります

リターン /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

おすすめ

転載: www.cnblogs.com/JonaLin/p/11572401.html