- Spring mvc接收参数有4种方法
- 使用HttpServletRequest或HttpSession对象的getParameter()方法获取参数
- 逐个接收
- 使用同名匹配参数,spring mvc根据名称参数找出对应参数的值,可以实现String、int、float、double等类型的自动转换
- 使用@RequestParam注入指定参数,用于解决参数名称不一致的问题
- 对象接收
- 使用实体类对象获取参数,spring mvc会创建实体类并调用同名参数的set方法,把请求中的参数赋值给实体类,实体类参数名需与请求中的参数名一致
示例
@Controller
public class UserController {
//使用HttpServletRequest对象
@RequestMapping("/login")
public ModelAndView getUserData(HttpServletRequest request) {
String name = request.getParameter("name");
int age = request.getParameter("age");
String adress = request.getParameter("adress");
ModelAndView mav = new ModelAndView();
mav.setViewName("welcome"); //返回的视图文件名
mav.addObject("userName", name);
mav.addObject("age", age);
mav.addObject("adress", adress);
return mav;
}
//使用同名获取参数
@RequestMapping("/login")
public ModelAndView getLoginParameter(String name, Integer age, String adress) {
ModelAndView mav = new ModelAndView();
mav.setViewName("welcome"); //返回的视图文件名
mav.addObject("userName", name);
mav.addObject("age", age);
mav.addObject("adress", adress);
return mav;
}
//用RequestParam注入指定参数
@RequestMapping("/test")
public ModelAndView getValue(@RequestParam(value="name")String userName,@RequestParam(value="age")Integer age,@RequestParam(value="adress")String adress){
ModelAndView mav = new ModelAndView();
mav.setViewName("welcome"); //返回的视图文件名
mav.addObject("userName", userName);
mav.addObject("age", age);
mav.addObject("adress", adress);
return mav;
}
//用实体类对象参数获取参数
@RequestMapping("/user")
public ModelAndView getValue(User user){
ModelAndView mav = new ModelAndView();
mav.setViewName("welcome"); //返回的视图文件名
mav.addObject("userName", user.getName());
mav.addObject("age", user.getAge());
mav.addObject("adress", user.getAdress());
return mav;
}
}
注
- 使用名称参数获取参数的类型为数值(int、float、double)时,为了视图传递的空值(空字符串)无法转型异常,一般使用封装类(Integer、Float、Double)对空字符串转换为Null