标签:
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