获取请求参数

通过 Servlet API(不使用)

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

2、getParameter()、getParameterValues()

3、、示例

@RequestMapping("/test")
public String testParam(HttpServletRequest request) {
    String username = request.getParameter("username");
    String password = request.getParameter("password");
    return"success";
}

 

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

1、在控制器方法的形参列表,设置和请求参数的同名形参,当浏览器发送请求,匹配到请求映射时,在 DispatcherServlet 中将请求参数赋值给相应形参

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

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

(2)若使用字符串类型的形参,此参数的值为每个数据,每一个值之间使用逗号拼接

3、获取请求参数,@RequestParam 是非必须的

4、获取请求头,@RequestHeader 是必须的

 

@RequestParam

1、将请求参数和控制器方法的形参创建映射关系

2、属性

(1)value / name:指定为形参赋值的请求参数的参数名

(2)required:设置是否必须传输此请求参数,默认值为 true,若设置为 true 时,则当前请求必须传输 value 所指定的请求参数,若该请求参数为 null,且没有设置 defaultValue 属性,则页面报错 400;若设置为 false,则当前请求 value 所指定的请求参数为非必须

(3)defaultValue:不论 required 属性值为 true / false,当 value 所指定的请求参数为 null,则使用默认值为形参赋值

 

@RequestHeader

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

2、属性:用法同 @RequestParam

(1)value / name

(2)required

(3)defaultValue

 

@CookieValue

1、将 Cookie 数据和控制器方法的形参创建映射关系

2、属性:用法同 @RequestParam

(1)value / name

(2)required

(3)defaultValue

 

通过 POJO 获取请求参数

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

2、中文乱码

(1)原因:编码字符集不一致

(2)get 请求:Tomcat 根目录\conf\servlet.xml,添加 URIEncoding="UFT-8"

<Connector port="8080" URIEncoding="UFT-8" protocol="HTTP/1.1"
           connectionTimeout="20000"
           redirectPort="8443" />

(3)post 请求:Maven 工程根目录\src\main\webapp\WEB-INF\web.xml,添加 Filter

<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>forceResponseEncoding</param-name>
        <param-value>UTF-8</param-value>
    </init-param>
</filter>
<filter-mapping>
    <filter-name>CharacterEncodingFilter</filter-name>
    <!-- 匹配所有请求地址 -->
    <url-pattern>/*</url-pattern>
</filter-mapping>
posted @   半条咸鱼  阅读(417)  评论(0编辑  收藏  举报
(评论功能已被禁用)
相关博文:
阅读排行:
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
点击右上角即可分享
微信分享提示