MVCアノテーション開発とは、注釈に基づくクラス開発を意味します。定義された各プロセッサについて、XMLに登録する必要はありません。
登録は、コード内のクラスとメソッドに注釈を付けるだけで完了します。
プロセッサを定義します
@Controller:現在のクラスはプロセッサです
@RequestMapping:現在の方法はプロセッサメソッドであり、メソッド名は任意であり、リクエストは処理されて応答されます。
@Controller Public Class MyController {@RequestMapping(value = "/hello.do")public ModelandView Docontrol(httpservletrequest request、httpservletResponse応答){ModelandView MV = new ModelAndView(); mv.addobject( "message"、 "実行方法"); mv.setViewName( "Welcome、Neil!"); MVを返します。 }}たとえば、リクエストマッピングを制限できます
コードを次のようにコピーします:@RequestMapping(value = "/hello.do"、params = {"name = neil"、 "!age"}、method = requestmethod.post)
method = requestmethod.postリミテッド送信タイプを投稿します
params = {"name = neil"、 "!age"}パラメーター名は限られた要求で携帯する必要があり、値はニールであり、パラメーターの年齢は運ばれません。
リクエストパラメーターを受け入れます
要求のパラメーター名がプロセッサメソッドのパラメーター名と同じ場合、直接取得できます。
@RequestMapping(value = "/hello.do")public ModelandView docontroll(string name、int age){system.out.println( "name:" + name + "、age:" + age); ModelAndView MV = new ModelAndView(); MVを返します。 }パラメーター名が一貫していない場合は、@RequestParamを介してそれを見つける必要があります。
@RequestParamには3つのプロパティがあります
コードコピーは次のとおりです。Docontroll(@RequestParam(name = "username")文字列名、@requestparam(name = "userage")int age)
PATH変数@PathVariable
プロセッサメソッドのパラメーターは、リクエストによって送信されるパラメーター、またはURIの変数、つまりパス変数から生じることがあります。
上記の通常のパラメーターと同様に、パス変数名がその値を受信するパラメーター名と矛盾する場合、パラメーターを介してパス変数名を示す必要があります。
以下に示すように、ユーザー名と名前、年齢と年齢に注意してください。
@RequestMapping(value = "/{username}/{age} /hello.do")public modelandview docontroll( @pathvariable( "username")文字列名、@requestparam int age){system.out.println( "name:" + name + "、" + age); ModelAndView MV = new ModelAndView(); MVを返します。 }プロセッサメソッドは値を返します
@Controllerアノテーションを備えた次の4つの一般的に使用されるプロセッサは次のとおりです。
1、ModelAndViewに戻ります
プロセッサメソッドが完了したら、他のリソースにジャンプしてリダイレクトされたリソース間でデータを渡してから、ModelandViewを返す必要があります。
public Modelandview docontroll(){modelandview modelandview = new ModelandView(); //渡されたデータModelandview.addobject( "name"、 "neil"); modelandview.setViewName( "/user.do"); ModelandViewを返します。 }2、voidに戻ります
リクエストが処理された後、ジャンプする必要はなく、Ajaxの非同期リクエスト応答など、プロセッサを無効に戻すことができます。
ジャンプする必要がある場合は、Servletapiを使用してSendRedirectまたはForwardを使用することもできます。
3、オブジェクトを返します
プロセッサは、論理的なビューとして表示されないが、ページに直接データを表示するために使用されるオブジェクトオブジェクトを返すことができます。
オブジェクトオブジェクトを返すと、 @ResponseBodyアノテーションを使用して、変換されたJSONデータを応答重量に配置する必要があります。
@RequestMapping(value = "/hello.do")@responsebody public modelandview docontroll(){return new Student( "neil"、998); }フロントエンドはデータを取得します
fr.ajax({url: "hello.do"、complete:function(data){alert(data.name + "" + data.age);}})同様に、コレクションリスト、マップなどを返すことができます。
@RequestMapping(value = "/hello.do")@responsebody public modelandview docontroll(){list <sudtent> list = new ArrayList <Student>(); list.add(new Student( "a"、11)); list.add(new Student( "B"、22)); list.add(new Student( "c"、33));返品リスト。 } fr.ajax({url: "hello.do"、complete:function(data){$(data).each(function(index)){alert(data [index] .name + data [index] .age);}}}))4、文字列に戻ります
文字列を返すための3つのシナリオがあります。
論理ビュー名
プロセッサによって返される文字列は、論理ビュー名を指定し、ビューパーサー解像度を介して物理ビューアドレスに変換できます。
最終的なリアルアクセスパス= "プレフィックス" +論理ビュー名 + "接尾辞"
プリサフィックスを指定していない場合は、物理的なビュー名を直接返すこともできます。
return "/web-inf/admin/welcome.jsp"
リダイレクトリダイレクト
"redirect:/admin/next.action"を返します。
respons.sendredirect()に相当します。転送後、ブラウザのアドレスバーが転送されたアドレスになります。
新しいリクエストが開始されるため、元のパラメーターを転送時に次のURLに渡すことはできません。
パラメーターを渡す場合は、url&a = 1&b = 2の後にパラメーターをスプライスできます
転送転送
"forward:/admin/forward.action"を返します ";
request.getRequestDispatcher()。フォワード(リクエスト、応答)に相当します。転送後、ブラウザアドレスバーはまだ元のアドレスです。
転送は、新しいリクエストと応答を実行しませんが、転送前のリクエストとリクエストと応答を共有します。
パラメーターは、転送前に直接再利用できます。
上記はこの記事のすべての内容です。みんなの学習に役立つことを願っています。誰もがwulin.comをもっとサポートすることを願っています。