內置對象和頁面跳轉是web開發中比較重要的組成部分,springmvc作為新生代的框架,對這方面的支持也還算不錯,這次著重分享跳轉方式和內置對象的使用
一 頁面跳轉
頁面跳轉分為客戶端跳轉和服務端跳轉兩種,在springmvc中使用跳轉是比較簡單的,只需在return後面寫就可以了
(1)客戶端跳轉
return "redirect:user.do?method=reg5"; return "redirect:http://www.baidu.com";
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"; }
ModelMap 和request內置對象的功能一致
@SessionAttributes 看名字就可以看出這個注解和session有關,主要用於將ModelMap中指定的屬性放到session中,可以參照下面的事例代碼
@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"; } }
如下所示
@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; }