SpringMVC使用ステップアップ-組み込みオブジェクトとジャンプ

2481 ワード

内蔵オブジェクトとページジャンプはweb開発において重要な構成部分であり、springmvcは新世代のフレームワークとして、この面でのサポートも悪くないが、今回はジャンプ方式と内蔵オブジェクトの使用に重点を置いている.
1   ページジャンプ
ページジャンプはクライアントジャンプとサービス側ジャンプの2種類に分けられ、springmvcでジャンプを使うのは簡単で、returnの後ろに書くだけでいいです.
(1)クライアントジャンプ
return "redirect:user.do?method=reg5";  
return "redirect:http://www.baidu.com"; 

(2)サービス側ジャンプ
return "forward:index.jsp";
return "forward:user.do?method=reg5"; 

二  組み込みオブジェクト
Springmvcではservletのように内蔵オブジェクトを使用することもできますが、独自の書き方もあります.まずspringmvcでは従来の方法で内蔵オブジェクトを使用しています
@RequestMapping(params="method=reg2")
public String reg2(String uname,HttpServletRequest req,ModelMap map){
		req.setAttribute("a", "aa");
		req.getSession().setAttribute("b", "bb");
		return "index";
}

このコードはservletと似ていますが、springmvcの書き方は以下のように簡単です.
ModelMapとrequest内蔵オブジェクトの機能は一致しています
@SessionAttributes      名前を見るとこの注記はセッションに関連していることがわかりますが、主にModelMapで指定した属性をセッションに配置するために使用されます.以下の事例コードを参照してください.
@Controller
@RequestMapping("/user.do")
@SessionAttributes({"u","a"})   // ModelMap      u、a    session 。  ,request session    。
public class UserController  {
	@RequestMapping(params="method=reg4")
	public String reg4(ModelMap map) {  		System.out.println("HelloController.handleRequest()");
		map.addAttribute("u","uuuu");  // u  request    ,               。
		return "index";
	}
}

@ModelAttribute  この注記は@SessionAttributeと併用でき、ModelMapの属性の値を指定した変数に自動的に割り当てることができます.
次のように
@RequestMapping(params="method=reg5")
public String reg5(@ModelAttribute("u")String uname,ModelMap map) { //[   u      uname]
		System.out.println("HelloController.handleRequest()");
		System.out.println(uname); 
		return "index";
}

最後にModelAndViewモデルビュークラスをまとめ、名前を見て意味を知り、名前からModelAndViewのModelがモデルを表し、Viewがビューを表すことを知ることができます.すなわち,このクラスは表示するデータをModel属性に格納し,ジャンプするビュー情報をview属性に格納する.しかし、通常は文字列を返すのが一般的です.もっとはっきり見えるようにModelAndView方式でページに戻るコードも貼っておきます.
@RequestMapping(params="method=login3")
public ModelAndView login3(){
		ModelAndView mv=new ModelAndView();
		mv.setViewName("index2");
		return mv;
}

簡単なのではないでしょうか.次回共有するコンテンツはspringmvcファイルアップロードです.