springMVC获取参数的几种方式
1. 通过bean实体方式(注:Bean 的属性名称必须与请求参数名称相同)
2. 通过处理方法的形参接收请求参数
3. 通过 HttpServletRequest 接收请求参数
4. 通过 @RequestParam 接收请求参数
- 通过bean实体方式(注:Bean 的属性名称必须与请求参数名称相同)
下面User是一个实体类,包含uname、upass、reupass三个属性,这里只取用两个。
@RequestMapping("/login")
public String login(User user, HttpSession session, Model model){
if("zhangsan".equals(user.getUname()) && "123".equals(user.getUpass())){
session.setAttribute("u",user);
logger.info("登录成功");
return "main";
}else{
logger.info("失败");
model.addAttribute("msg","用户名或者密码错误");
return "login";
}
}
- 通过处理方法的形参接收请求参数
形参方式和前面bean实体获取方式差不多,只不过是将属性变成形参。
@RequestMapping("/register")
/**
* 通过形参接收请求参数,形参名称与请求参数名称完全相同
*/
public String register(String uname,String upass,Model model) {
if ("zhangsan".equals(uname)
&& "123456".equals(upass)) {
logger.info("成功");
return "login"; // 注册成功,跳转到 login.jsp
} else {
logger.info("失败");
// 在register.jsp页面上可以使用EL表达式取出model的uname值
model.addAttribute("uname", uname);
return "register"; // 返回 register.jsp
}
}
- 通过 HttpServletRequest 接收请求参数
这个方式是我们开始学比较常用的一种方式,就是利用request对象获取
@RequestMapping("/register")
/**
* 通过HttpServletRequest接收请求参数
*/
public String register(HttpServletRequest request,Model model) {
String uname = request.getParameter("uname");
String upass = request.getParameter("upass");
if ("zhangsan".equals(uname)
&& "123456".equals(upass)) {
logger.info("成功");
return "login"; // 注册成功,跳转到 login.jsp
} else {
logger.info("失败");
// 在register.jsp页面上可以使用EL表达式取出model的uname值
model.addAttribute("uname", uname);
return "register"; // 返回 register.jsp
}
}
- 通过 @RequestParam 接收请求参数
get和post方式请求都适用
@RequestMapping("/register")
/**
* 通过@RequestParam接收请求参数
*/
public String register(@RequestParam String uname,
@RequestParam String upass, Model model) {
if ("zhangsan".equals(uname) && "123456".equals(upass)) {
logger.info("成功");
return "login"; // 注册成功,跳转到 login.jsp
} else {
// 在register.jsp页面上可以使用EL表达式取出model的uname值
model.addAttribute("uname", uname);
return "register"; // 返回 register.jsp
}
}