获取请求参数
通过 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>
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战