跳到主要内容

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";
}