SpringMVC获取参数

SpriNgMVC获取请求参数的方式

1.只需要在控制器方法的形参位置设置httpservlet类型的形参就可以在控制器方法中使用request对象获取请求参数

配置文件:

<form th:action="@{/param/servletAPI}" method="post">
    普通方式:
    用户名:<input type="text" name="username"><br>
    密码:<input type="text" name="password"><br>
    <input type="submit" value="登录"><br>
</form>

控制类:

@RequestMapping("/param/servletAPI")
    public String getParamByServletAPI(HttpServletRequest request) {
        String username = request.getParameter("username");
        String password = request.getParameter("password");
        System.out.println("username:"+username+"password:"+password);
        return "success";
    }

2.通过控制器的方法的形参获取:只需在控制器方法的形参位置,设置一个形参,形参的名字和请求参数的名字一致即可

配置文件:

<a th:href="@{/testParam(username='admin',password=123456)}">测试获取请求参数-->/testParam</a><br>

控制类:

@RequestMapping("/param")
    public String getParam( String username, String password){
        System.out.println("username:"+username+"password:"+password);
        return "success";
    }

注:

若请求所传输的请求参数中有多个同名的请求参数,此时可以在控制器方法的形参中设置字符串数组或者字符串类型的形参接收此请求参数

若使用字符串数组类型的形参,此参数的数组中包含了每一个数据

若使用字符串类型的形参,此参数的值为每个数据中间使用逗号拼接的结果

3.@RequestParam:将请求参数和控制器方法的形参进行绑定 该注解的三个属性:

  • value:设置和形参(控制器方法的形参)绑定的请求参数(html文件中的请求参数)的名字
  • required:设置是否必须传输value所对应请求参数(默认为true,即必须传输)
  • defaultValue:设置当没有传输value所对应的请求参数时,为形参设置默认值,此时和required属性值无关

配置文件:

<form th:action="@{/param}" method="post">
    mvc方式
    用户名:<input type="text" name="username"><br>
    密码:<input type="text" name="password"><br>
    <input type="submit" value="登录"><br>
</form>

控制类:

@RequestMapping("/param")
    public String getParam(@RequestParam("username") String username, @RequestParam("password") String password){
        System.out.println("username:"+username+"password:"+password);
        return "success";
    }

4.@RequestHeader:将请求头信息和控制器方法的形参进行绑定

@RequestHeader是将请求头信息和控制器方法的形参创建映射关系

@RequestHeader注解一共有三个属性:value、required、defaultValue,用法同@RequestParam

5.@CookieValue:将cookie数据和控制器方法的形参进行绑定

@CookieValue是将cookie数据和控制器方法的形参创建映射关系

@CookieValue注解一共有三个属性:value、required、defaultValue,用法同@RequestParam

6.通过控制器方法的实体类类型的形参获取参数

只需要在控制器方法的形参位置设置实体类类型的形参,要保证实体类中的属性的属性名和请求参数的名字一致

可以通过实体类类型的形参获取请求参数

配置文件:

<form th:action="@{/param/pojo}" method="post">
    pojo
    用户名:<input type="text" name="username"><br>
    密码:<input type="text" name="password"><br>
    <input type="submit" value="登录"><br>
</form>

控制类:

@RequestMapping("/param/pojo")
    public String getParamByPojo(user user){
        System.out.println(user);
        return "success";
    }

7.解决获取请求参数乱码的问题 在web.xml中配置Spring编码过滤CharacterEncodingFilter

配置文件:

<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>

注:

SpringMVC中处理编码的过滤器一定要配置到其他过滤器之前,否则无效


本文章使用limfx的vscode插件快速发布