SpringMVC获取请求参数可以有多种方式实现,对请求方式上也有些差异,现做下总结。
从前端(浏览器)发送请求到后端基本脱离不了POST,GET
两种方式,其它方式在应用中几乎绝迹,不参与分析。SpringMVC获取这两种请求的参数有多种方式。
请求地址
统一定义请求方式和参数
GET
请求:http://localhost/sys/sysUserLogin?account=admin&password=112233POST
请求`:http://localhost/sys/sysUserLogin,参数是{"name":"admin","password":"112233"}GET
的Restful
风格请求:http://localhost/sys/sysUserLogin/admin/1122331
系统用户实体类:SysUser
public class SysUser {
private String account;
private String password;
.....set/get方法.....
}
Controller方法接收参数
方法中定义形参接收
方法中的形参类型和形参名与请求的参数匹配,可以自动接收请求的参数。GET
和POST
两种方式都支持。
@Controller
@RequestMapping("/sys")
public class SysUserController {
@RequestMapping("/sysUserLogin")
public void sysUserLogin(String account, String password) {
System.out.println("account = " + account + "; password = " + password );
}
}
方法中使用对象接收
方法中的对象属性与请求的参数匹配,可以将值自动绑定到对象对应属性上。GET
和POST
两种方式都支持。
@Controller
@RequestMapping("/sys")
public class SysUserController {
@RequestMapping("/sysUserLogin")
public void sysUserLogin(SysUser sysUser) {
System.out.println("SysUser = " + sysUser);
}
}
HttpServletRequest接收
通过HttpServletRequest
的getParameter()
方法从request
中取值。GET
和POST
两种方式都支持。
@Controller
@RequestMapping("/sys")
public class SysUserController {
@RequestMapping("/sysUserLogin")
public void sysUserLogin(HttpServletRequest req) {
String account = (String) req.getParameter("account");
String password = (String) req.getParameter("password");
System.out.println("account = " + account + "; password = " + password );
}
}
@PathVariable绑定
@PathVariable
注解可以把路径中的参数绑定到方法中的形参上。
请求链接:http://localhost/sys/sysUserLogin/admin/1122331
只支持GET
方式。
@Controller
@RequestMapping("/sys")
public class SysUserController {
@RequestMapping("/sysUserLogin/{account}/{password}")
public void sysUserLogin(@PathVariable String account, @PathVariable String password) {
System.out.println("account = " + account + "; password = " + password );
}
}
@ModelAttribute绑定
@ModelAttribute
注解可作用在方法上,也可作用在方法形参上。GET
和POST
两种方式都支持。
把请求参数绑定在形参上
//绑定形参 @Controller @RequestMapping("/sys") public class SysUserController { @RequestMapping("/sysUserLogin") public void sysUserLogin( @ModelAttribute("account") String account, @ModelAttribute("password") String password) { System.out.println("account = " + account + "; password = " + password); } }
把请求参数绑定用户实体类属性上。
//绑定用户实体类 @Controller @RequestMapping("/sys") public class SysUserController { @RequestMapping("/sysUserLogin") public void sysUserLogin(@ModelAttribute SysUser sysUser, HttpServletRequest req) { System.out.println("请求方式:" + req.getMethod() + "; sysUser = " + sysUser); } }
参考:SpringMVC之@ModelAttribute注解的使用
@RequestParam绑定
@RequestParam
注解可以把请求参数绑定在方法形参上。GET
和POST
两种方式都支持。
@Controller
@RequestMapping("/sys")
public class SysUserController {
@RequestMapping("/sysUserLogin")
public void sysUserLogin(
@RequestParam("account") String account,
@RequestParam("password") String password) {
System.out.println("account = " + account + "; password = " + password);
}
}
更多内容请访问:IT源点
注意:本文归作者所有,未经作者允许,不得转载