Spring MVC系列(3)- 获取请求参数的多种方式
前言
在HTTP请求时,参数传递是及获取,是非常重要的一项功能。
SpringMVC提供了很多种方式,具体采用哪种,可以根据实际需求选择。
这里按照常用级别列出几种。
1. 通过方法形参获取
可以在控制器方法的形参位置,设置当前请求的参数。
当访问映射到该方法时,DispatcherServlet会将请求中的参数赋值给相同名字的形参。
@RequestMapping(value = {
"getUser"}, method = {
RequestMethod.GET})
public Object getUser(String username, String password) {
return username + password;
}
以上代码,会将请求中的username及password的值赋值给控制器形参,该方法接受到参数后进行后续逻辑处理。
注意事项:
- 请求参数和控制器参数名称必须一致
- 参数很多时,不建议使用此方式,三个以上建议封装为java bean传递
2. 通过POJO类获取
可以将多个请求参数封装为对象,需确保对象的属性和请求参数名一致。
请求时,框架会将请求参数封装到形参对象的属性中。
@RequestMapping(value = {
"getUser"}, method = {
RequestMethod.GET})
public Object getUser(User user) {
return user;
}
请求后返回的数据:
{
"username":"1111","password":"afasfsa","age":null,"name":null,"userId":null}
3. 通过HttpServletRequest 获取
将HttpServletRequest作为控制器方法的形参,此时HttpServletRequest类型的参数表示封装了当前请求的请求报文的对象。
@RequestMapping(value = {
"getUser"}, method = {
RequestMethod.GET})
public Object getUser(HttpServletRequest request) {
String username = request.getParameter("username");
String password = request.getParameter("password");
System.out.println("username:" + username + ",password:" + password);
return "user";
}