标签:
1、接收请求参数
Spring MVC Web请求提交数据到控制器有下面几种方法
使用HttpServletRequest获取
使用@RequestParam注解
使用自动机制封装成Bean对象
2、使用HttpServletRequest获取示例
Spring自动参数注入HttpServletRequest
优点直接,缺点需要自己处理数据类型转换
@RequestMapping("/login-action1.from")
public String checkLogin1(HttpServletRequest req){
String name=req.getParameter("name");
String pwd=req.getParameter("pwd");
System.out.println(name);
System.out.println(pwd);
User user=uerService.login(name,pwd);
//...省略处理过程
return "success";
}
3、使用@RequestParam注解
Spring会自动将表单参数注入到方法参数(名称一致)
使用@RequestParam注解,映射不一致的名称
优点参数类型自动转换,但可能出现类型转换异常
@RequestMapping("/login-action2.from")
public String checkLogin2(
String name,
@RequestParam("pwd")String password,
HttpServletRequest req){
System.out.println(name);
System.out.println(password);
User user=userService.login(name,password);
//...省略处理过程
return "success";
}
4、使用自动机制封装成Bean属性示例
定义User实体,属性名与<form>表单组件的name相同
public class User { private String name; private String pwd; //省略setter和getter方法 }
在Controller组件处理方法定义User类型参数
@RequestMapping("/login-action3.from") public String checkLogin3(User user){ System.out.println(user.getName()); System.out.println(user.getPassword()); User user=userService.login(user.getName(),user.getPassword()); //...省略处理过程 return "success"; }
5、向页面传值
当Controller组件处理后,需要向JSP传值时,用下面方法
直接使用HttpServletRequest和Session
使用ModelAndView对象
使用ModelMap参数对象
使用@ModelAttribute注解
6、使用ModelAndView对象示例
在Controller处理方法完成后返回一个ModelAndView对象,包含显示视图名和模型数据。
@RequestMapping("/login-action.from") public String checkLogin4(String name,String pwd){ User user=userService.login(name,pwd); Map<String,Object> data=new HashMap<String, Object>(); data.put("user",user); return new ModelAndView("success",data); }
Model数据会利用HttpServletRequest的Attribute传递到JSP页面中。
7、使用ModelMap参数对象示例
在Controller处理方法中追加一个ModelMap类型参数
@RequestMapping("/login-action.from") public String checkLogin4(String name,String pwd,ModelMap model){ User user=userService.login(name,pwd); model.addAttribute("user",user); return "success"; }
ModelMap数据会利用HttpServletRequest的Attribute传递到JSP页面中
8、使用@ModelAttribute示例
在Controller方法的参数部分或
@RequestMapping("/login-action.from") public String checkLogin4( @ModelAttribute("user")User user){ //TODO return "success"; } 或 @ModelAttribute("name") public String getName(){ return name; }
@ModelAttribute数据会利用HttpServletRequest的Attribute传递到JSP页面中。
9、Session存储
可以利用HttpServletRequest的getSession()方法访问
@RequestMapping("/login-action.from") public String checkLogin4(String name,String pwd, ModelMap model,HttpServletRequest req){ User user=userService.login(name,pwd); req.getSession().setAttribute("loginUser", user); model.addAttribute("user",user); return "success"; }
10、重定向视图
Spring MVC默认采用转发方式定位视图,如果需要重定向方式可采用下面几种方法
使用RedirectView
使用redirect:前缀
如果Controller的请求处理方法返回的是ModelAndView对象,可以使用RedirectView方法重定向,实例代码
public ModelAndView checkLogin(){ //TODO RedirectView view=new RedirectView("login.form"); return new ModelAndView(view); }
如果Controller的请求处理方法返回值是String类型,可以使用"redirect:前缀"方法重定向,示例代码
public String checkLogin(){ //TODO return "redirect:login.form"; }
标签:
原文地址:http://www.cnblogs.com/Crow00/p/4576107.html