1. 通过 ServletAPI 获取

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

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

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

注:

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

数组或者字符串类型的形参接收此请求参数

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

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

3. @RequestParam

@RequestParam 是将请求参数和控制器方法的形参创建映射关系

@RequestParam 注解一共有三个属性:

value:指定为形参赋值的请求参数的参数名

required:设置是否必须传输此请求参数,默认值为 true

若设置为 true 时,则当前请求必须传输 value 所指定的请求参数,若没有传输该请求参数,且没有设置

defaultValue 属性,则页面报错 400:Required String parameter 'xxx' is not present;若设置为

false,则当前请求不是必须传输 value 所指定的请求参数,若没有传输,则注解所标识的形参的值为

null

defaultValue:不管 required 属性值为 true 或 false,当 value 所指定的请求参数没有传输或传输的值

为""时,则使用默认值为形参赋值

4. @RequestHeader

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

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

5. @CookieValue

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

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

​​​​

6. 通过 POJO 获取请求参数

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

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

解决获取请求参数的乱码问题,可以使用 SpringMVC 提供的编码过滤器 CharacterEncodingFilter,但是必须在 web.xml 中进行注册

<!--配置springMVC的编码过滤器-->
<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>

注:

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

编码过滤器的继承关系:

4. SpringMVC获取请求参数的更多相关文章

  1. SpringMVC 获取请求参数

    1.获取Request response对象 在SpringMVC的注解开发中,可以选择性的接收Request和Response对象来使用 2.获取request对象请求参数 a.通过request对 ...

  2. SpringMVC获取请求参数-POJO类型参数

    1.Controller中的业务方法的POJO参数的属性名与请求参数一致,参数值会自动映射匹配 1.创建POJO类 public class User { private String usernam ...

  3. SpringMVC获取请求参数-基本类型

    1.Controller中的业务方法的参数名称要与请求参数的name一致,参数值会自动映射匹配 (json形式) <dependency> <groupId>com.faste ...

  4. SpringMVC获取请求参数-集合类型

    1.创建User实体类 ```java public class User { private String username; private int age; public String getU ...

  5. 学习SpringMVC——如何获取请求参数

    @RequestParam,你一定见过:@PathVariable,你肯定也知道:@QueryParam,你怎么会不晓得?!还有你熟悉的他(@CookieValue)!她(@ModelAndView) ...

  6. springMvc源码学习之:spirngMVC获取请求参数的方法2

    @RequestParam,你一定见过:@PathVariable,你肯定也知道:@QueryParam,你怎么会不晓得?!还有你熟悉的他 (@CookieValue)!她(@ModelAndView ...

  7. SpringMVC之请求参数的获取方式

    转载出处:https://www.toutiao.com/i6510822190219264516/ SpringMVC之请求参数的获取方式 常见的一个web服务,如何获取请求参数? 一般最常见的请求 ...

  8. 【SpringMVC】获取请求参数

    通过ServletAPI获取 test.html <a th:href="@{/testServletAPI(username='admin',password=123456)}&qu ...

  9. springMVC(spring)+WebSocket案例(获取请求参数)

    开发环境(最低版本):spring 4.0+java7+tomcat7.0.47+sockjs 前端页面要引入: <script src="http://cdn.jsdelivr.ne ...

  10. 学习SpirngMVC之如何获取请求参数

    学习SpringMVC——如何获取请求参数   @RequestParam,你一定见过:@PathVariable,你肯定也知道:@QueryParam,你怎么会不晓得?!还有你熟悉的他(@Cooki ...

随机推荐

  1. Flutter中如何取消任务

    前言 在开发过程中,取消需求是很常见的,但很容易被忽略.然而,取消需求的好处也很大.例如,在页面中会发送很多请求.如果页面被切走并处于不可见状态,就需要取消未完成的请求任务.如果未及时取消,则可能会导 ...

  2. SpringBoot中如何实现业务校验,这种方式才叫优雅!

    大家好,我是飘渺. 在日常的接口开发中,为了保证接口的稳定安全,我们一般需要在接口逻辑中处理两种校验: 参数校验 业务规则校验 首先我们先看看参数校验. 参数校验 参数校验很好理解,比如登录的时候需要 ...

  3. 12年经验的大龄程序员,都用什么写 API 文档?

    写代码,程序员不害怕. 写文档,每个程序员都害怕! 为什么? 技术优先,我们更倾向于将技能和精力更多地放在编写代码上,如果 API 工具不好使,不便捷,同步麻烦,测试看不懂,更会大大地打击编写文档的积 ...

  4. SQL优化(二)-- 慢查询

    1.慢查询日志 MYSQL的慢查询日志是Mysql提供的一种日志记录方式,它主要是用来记录mysql执行语句过程中,响应时间超过阀值的语句,这个阀值可以通过long_query_time去指定,比如说 ...

  5. 百度松果菁英班--oj赛(第二次)

    目录 一.小码哥剪绳子 二.咖啡品鉴师小码哥 三.均分糖果 四.持盾 五.活动安排 六.甜品供应 七.斐波那契数列的组合 八.小码哥的布阵指挥 九.活动分组 十.外卖递送 一.小码哥剪绳子 题目:马上 ...

  6. 一个好用的java图片缩放及质量压缩方法

    本文中代码来自:http://blog.csdn.net/liuhuanchao/article/details/50527856由于网站需要对上传的图片进行宽度判断缩放和质量压缩,以提升整体加载速度 ...

  7. 2022-12-24:给定一个字符串s,其中都是英文小写字母, 如果s中的子串含有的每种字符都是偶数个, 那么这样的子串就是达标子串,子串要求是连续串。 返回s中达标子串的最大长度。 1 <= s的长

    2022-12-24:给定一个字符串s,其中都是英文小写字母, 如果s中的子串含有的每种字符都是偶数个, 那么这样的子串就是达标子串,子串要求是连续串. 返回s中达标子串的最大长度. 1 <= ...

  8. 2020-10-07:redis存在线程安全的问题吗?为什么?

    福哥答案2020-10-07:#福大大架构师每日一题# Redis6.0的多线程部分只是用来处理网络数据的读写和协议解析,执行命令仍然是单线程顺序执行.所以我们不需要去考虑控制 key.lua.事务, ...

  9. 2022-05-21:给定一个数组arr,长度为n, 表示n个服务员,每个人服务一个人的时间。 给定一个正数m,表示有m个人等位。 如果你是刚来的人,请问你需要等多久? 假设:m远远大于n,比如n<=

    2022-05-21:给定一个数组arr,长度为n, 表示n个服务员,每个人服务一个人的时间. 给定一个正数m,表示有m个人等位. 如果你是刚来的人,请问你需要等多久? 假设:m远远大于n,比如n&l ...

  10. 2022-05-13:k8s安装webrtc-streamer,yaml如何写?

    2022-05-13:k8s安装webrtc-streamer,yaml如何写? 答案2022-05-13: yaml如下: apiVersion: apps/v1 kind: Deployment ...