SpringMVC获取请求参数

148 阅读2分钟

1、通过ServletAPI获取

将HttpServletRequest作为控制器方法的形参,此时HttpServletRequest类型的参数表示封装了当前请求的请求报文的对象

2、通过控制器方法的形参获取请求参数

注意点:

  • 若请求参数中出现多个同名的请求参数,可以在控制器方法的形参位置设置字符串类型或者字符串数组类型来接收此参数
  • 若使用字符串类型的形参,最终结果为请求参数的每一个值之间使用逗号进行拼接 表单代码如下所示:
<form method="get" action="/SpringMVC/testControl">
    姓名:<input name="username" type="text">
    密码:<input name="password" type="password">
    爱好 <input type="checkbox" name="hobby" value="1">
    <input type="checkbox" name="hobby" value="2">
    <input type="checkbox" name="hobby" value="2">
    <button type="submit" name="submit"></button>
</form>

处理代码如下所示:

@RequestMapping(value = "/testControl")
public String index(String username,String password,String hobby){
    System.out.println("usrename:" + username + "password:" + password + "hobby:" + hobby);
    return "hello";
}

3、通过RequestParam对形参进行映射

注:对于所指定的参数一定是需要的,如果没有提供,则报错。但可以通过required参数来设置是否规定必须传输。

  • value参数:指定传过来的参数名
  • required参数:指定是否必须传输该参数
  • defaultValue参数:不管required为true还是false,当没有传输值或者传输的值为“”的时候,给参数赋予默认值

4、@RequestHeader注解

是将请求头信息和控制器方法的形参创建映射关系。共有三个属性,同RequestParam。

5、@CookieValue

是将cookie数据和控制器方法的形参创建映射关系 共有三个属性,同上 注:在第一次访问某url,如果没有cookie,可以在服务端创建cookie,然后会在响应报文中返回,以后每一次访问该url,都会携带这个cookie。

6、通过POJO获取请求参数

可以在控制器方法的形参位置设置一个实体类型的形参,此时若浏览器传输的请求参数的参数名和实体类中的属性名一致,那么请求参数就会为此属性赋值

7、解决乱码问题

1、get请求的乱码是由于Tomcat服务器造成的,可以直接到server.xml里找到Connector标签,加上URIEncoding=“UTF-8”属性即可一次性解决。
2、当请求里的参数被获得后,再设置编码就没有用了。
3、解决Post乱码问题,使用CharacterEncodingFilter过滤器,在Webxml文件中配置一下即可