3 SpringMVC获取请求参数

通过ServletAPI获取

  • 将HttpServletRequest作为控制器方法的形参,接收DispacherSerlvet传入的request
  • 使用方法与javaweb中request一致
    • req.getParameter("参数名");
    • req.getSession();
    • req.setAttribute(, );

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

  • 在控制器方法中设置和请求参数同名的形参
    • 假如我的请求参数为username=123&password=456
    • 那么控制器方法(String username,String password)
    • username和password能够过的请求参数的值
  • 如果控制器方法中形参名和请求参数名不一致
    • 使用注解@RequestParam定义映射关系
      • value属性,写请求参数名的
      • @RequestParam有属性required,它为true要求必须传入你设置的这个参数,不然报错,为false则可传可不传,不传这个参数值就是默认值null
        • public String hello(@RequestParam(value = "userName",required = false) String username)
      • 属性defaultValue,可以设置默认值,在@RequestParam中的传参顺序,它会先将默认值赋给控制器形参,再判断请求中有无该形参,之后就和required属性有关了
    • 假如我的请求参数名是userName,控制器方法参数名是username
    • public String hello(@RequestParam("userName") String username) 这样设置
  • @RequestHeader和@CookieValue
    • @RequestHeader:将请求头信息和控制器方法的形参绑定
    • @CookieValue:将cookie数据和控制器方法的形参绑定
    • 使用方法与@RequestParam一致,也是那三个属性

通过pojo获取请求参数

  • 如果说请求参数很多,我们不可能写那么多形参来对应,我们可以使用一个pojo类来封装接收这些参数,要求请求参数名和pojo的属性名一致
  • 如果请求参数名和pojo属性名不一致,那么pojo中的属性将不被赋值,为null

解决获取请求参数的乱码问题

  • 如果你的get方式获得参数的时候出现乱码,可以在tomcat的conf文件夹中修改server.xml文件,在<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" maxParameterCount="1000"/>中加入URIENcoding=“UTF-8”
  • 如果post方式也有乱码
    • 在项目的web.xml中配置编码过滤器
<!--    配置spring过滤器-->
    <filter>
        <filter-name>CharacterEncodingFilter</filter-name>
        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<!--        加上初始化编码-->
        <init-param>
            <param-name>encoding</param-name>
            <param-value>UTF-8</param-value>
        </init-param>
        <init-param>
            <param-name>forceEncoding</param-name>
            <param-value>true</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>CharacterEncodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值