- @Controller
- //@SessionAttributes(value="stu")//將數據存入session域中,可以多寫(value={"stu1,stu2,stu3"})
- @SessionAttributes(types=Student.class) //某一對象類型(types={Student.class,Address.class})
- public class Servlet3 { //有SessionAttribute注解時存入Request域中同時也就存入了session域中
- @RequestMapping("testModelAndView")
- public ModelAndView testModelAndView(){ //利用modelAndView 傳參和跳轉頁面
System.out.println("-------------test--------------");
- ModelAndView mv = new ModelAndView("MyJsp");//myjsp 指需要跳轉的頁面
Student stu = new Student();
- stu.setId(3);
- stu.setName("lisi");
- mv.addObject("stu", stu);//等同於 req.setAttrivute("key,value");
return mv;
-
}
- @RequestMapping("testModel")
- public String testModel(Model model){ //利用model 傳參和跳轉頁面
Student stu = new Student();
- stu.setId(3);
- stu.setName("lisi");
- model.addAttribute("stu", stu);//等同於 req.setAttribute("key,value");
return "MyJsp";
-
}
- @RequestMapping("testMap")
- public String testMap(Map<String,Student> map){ //利用map 傳參和跳轉頁面
Student stu = new Student();
- stu.setId(3);
- stu.setName("lisi");
- map.put("stu", stu);//等同於 req.setAttribute("key,value");
return "MyJsp";
-
}
- //-------@ModelAttribute 適用於修改數據,訪問同類下的controller都會優先調用@ModelAttribute
//因為修改不可能傳遞所有的信息,所以只需拿到關鍵ID去數據庫查詢相關信息,后再傳給相關Controller
- @ModelAttribute
- public void rm(Map<String, Student> map){
- //模擬查詢到數據庫的需要修改數據
- Student stu = new Student();
- stu.setId(1);
- stu.setName("zs");
-
map.put("Student", stu);//此處將查詢到的數據傳遞給觸發的Controller }
- @RequestMapping("testModelAttribute")
- //若map.put("stu",stu),則此處應該為update(@ModelAttribute("stu")Student xxx)
- public String update(@ModelAttribute("Student")Student stu){
- System.out.println(stu);
- stu.setName(stu.getName());
- System.out.println(stu);
- return "MyJsp";
- }
-
- @RequestMapping("defaults")
- public String defaults(){
-
return "MyJsp";//默認轉發 }
- @RequestMapping("forwards")
- public String forwards(){
-
return "forward:MyJsp.jsp";//轉發 }
- @RequestMapping("redirects")
- public String redirects(){
-
return "redirect:MyJsp.jsp";//重定向 }
- }
|