SpringMVC获取哀求参数

[复制链接]
发表于 2026-2-27 11:33:21 | 显示全部楼层 |阅读模式





1、通过ServletAPI获取

将HttpServletRequest作为控制器方法的形参,此时HttpServletRequest范例的参数表现封装了当前哀求的哀求报文的对象
  1. @RequestMapping("/testParam")
  2. public String testParam(HttpServletRequest request){
  3.     String username = request.getParameter("username");
  4.     String password = request.getParameter("password");
  5.     System.out.println("username:"+username+",password:"+password);
  6.     return "success";
  7. }
复制代码

2、通过控制器方法的形参获取哀求参数

在控制器方法的形参位置,设置和哀求参数同名的形参,当欣赏器发送哀求,匹配到哀求映射时,在DispatcherServlet中就会将哀求参数赋值给相应的形参
  1. <a th:href="@{/testParam(username='admin',password=123456)}">
  2.   测试获取请求参数-->/testParam</a><br>
复制代码
  1. @RequestMapping("/testParam")
  2. public String testParam(String username, String password){
  3.     System.out.println("username:"+username+",password:"+password);
  4.     return "success";
  5. }
复制代码
  注:
若哀求所传输的哀求参数中有多个同名的哀求参数,此时可以在控制器方法的形参中设置字符串数组大概字符串范例的形参吸收此哀求参数
若使用字符串数组范例的形参,此参数的数组中包罗了每一个数据
若使用字符串范例的形参,此参数的值为每个数据中央使用逗号拼接的效果
  
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获取哀求参数

可以在控制器方法的形参位置设置一个实体类范例的形参,此时若欣赏器传输的哀求参数的参数名和实体类中的属性名划一,那么哀求参数就会为此属性赋值
  1. <form th:action="@{/testpojo}" method="post">
  2.     用户名:<input type="text" name="username"><br>
  3.     密码:<input type="password" name="password"><br>
  4.     性别:<input type="radio" name="sex" value="男">男<input type="radio" name="sex" value="女">女<br>
  5.     年龄:<input type="text" name="age"><br>
  6.     邮箱:<input type="text" name="email"><br>
  7.     <input type="submit">
  8. </form>
复制代码
  1. @RequestMapping("/testpojo")
  2. public String testPOJO(User user){
  3.     System.out.println(user);
  4.     return "success";
  5. }
  6. //最终结果-->User{id=null, username='张三', password='123', age=23, sex='男', email='123@qq.com'}
复制代码

7、办理获取哀求参数的乱码标题

办理获取哀求参数的乱码标题,可以使用SpringMVC提供的编码过滤器CharacterEncodingFilter,但是必须在web.xml中举行注册
  1. <!--配置springMVC的编码过滤器-->
  2. <filter>
  3.     <filter-name>CharacterEncodingFilter</filter-name>
  4.     <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
  5.     <init-param>
  6.         <param-name>encoding</param-name>
  7.         <param-value>UTF-8</param-value>
  8.     </init-param>
  9.     <init-param>
  10.         <param-name>forceResponseEncoding</param-name>
  11.         <param-value>true</param-value>
  12.     </init-param>
  13. </filter>
  14. <filter-mapping>
  15.     <filter-name>CharacterEncodingFilter</filter-name>
  16.     <url-pattern>/*</url-pattern>
  17. </filter-mapping>
复制代码
  注:
  SpringMVC中处置惩罚编码的过滤器肯定要设置到其他过滤器之前,否则无效
  






免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!qidao123.com:ToB企服之家,中国第一个企服评测及软件市场,开放入驻,技术点评得现金

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表