Spring MVC的前后台传值
- JSP-->Controller
1). 通过post提交http://localhost:8080/spmvc01/user.action?uname=222
Controller中通过public String reg(String uname) {}接收
2).通过post提交
Controller中通过实体接收,会给实体内的同名属性赋值
public String reg2(User user) {
System.out.println("UserController.reg2()");
System.out.println(user.getUname());
return"index";
}
3).接收参数的名称与post提交的参数的名称不一样
publicString reg3(@RequestParam("uname") String name,
HttpServletRequestreq, ModelMap map) {
System.out.println("UserController.reg3()");
System.out.println(name);
map.put("a","aaa");
return"index";
}
- Controller-->JSP
1). HttpServletRequest传值和ModelMap传值
@RequestMapping(params= "method=reg3")
publicString reg3(@RequestParam("uname") String name,
HttpServletRequestreq, ModelMap map) {
System.out.println("UserController.reg3()");
System.out.println(name);
req.setAttribute("b","111111111111");
map.put("a","aaa");
return"index";
}
前台接收分别用${requestScope.b},${sessionScope.a }接收
2).Controller返回ModelAndView
@RequestMapping(params= "method=reg5")
publicModelAndView reg5(String uname) {
System.out.println("UserController.reg5()");
ModelAndViewmav = new ModelAndView();
User u= new User("aaaa");
User u2= new User("bbbbb");
mav.addObject(u);
mav.addObject("uu",u2);
mav.setViewName("index");
returnmav;
}
前台接收:
${requestScope.user.uname}
${requestScope.uu.uname}
页面重定向,转发
return "forward:index.jsp";
return"forward:user.do?method=reg5"; //转发
return"redirect:user.do?method=reg5"; //重定向
return"redirect:http://www.baidu.com"; //重定向
Spring MVC的前后台传值,相对于Struts2的传值方式更多一些,也更灵活,我想这也是SpingMVC比struts2在MVC流程控制上更灵活的一点的原因。