这篇文章,主要介绍SpringMVC框架中接收请求参数的几种方式。
目录
这篇文章主要总结一下SpringMVC框架中,如何接收HTTP请求的参数,主要有如下几种常见的方式。
1.1、通过方法参数接收
SpringMVC框架里面,我们可以直接在【Controller】层对应的方法参数里面,编写我们需要接收的参数名称,这样SpringMVC框架就会自动将我们的请求参数和方法参数进行映射绑定。
- 编写如下测试案例。
@Controller public class ParamController { // 请求参数和方法参数自动映射 @RequestMapping("/param01") public String param01(String username, String password) { System.out.println("username=" + username); System.out.println("password=" + password); return "hello"; } }
- 启动工程,浏览器访问:【http://localhost:8080/springmvc/param01】,然后查看控制台输出结果。
- 访问时候携带参数:【http://localhost:8080/springmvc/param01?username=root&password=123456】。
- SpringMVC中,如果接收的参数名称和方法参数名称不同,那么对应的方法参数默认就是null。
1.2、通过HttpServletRequest接收参数
在SpringMVC框架中,我们的方法参数里面可以直接使用servlet中的请求对象,要使用servlet的相关api,那么我们需要引入【servlet-api】的依赖,如下所示:
- 添加【servlet-api】依赖,目的是为了可以在项目中使用servlet相关的类代码。
<!-- 引入servlet-api依赖 --> <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>2.5</version> <!-- 作用域设置为已被提供: 表示servlet-api依赖会被Tomcat容器提供, 打包时候不会再将servlet-api加入到里面 --> <scope>provided</scope> </dependency>
- 通过【HttpServletRequest】获取请求参数。
@Controller public class ParamController { // HttpServletRequest获取参数 @RequestMapping("/param02") public String param02(HttpServletRequest request) { System.out.println("username=" + request.getParameter("username")); System.out.println("password=" + request.getParameter("password")); return "hello"; } }
- 这种获取参数的方式就是最原始的,直接从HTTP请求里面获取。
1.3、@RequestParam注解获取参数
通过【1.1】的方式获取参数时候,如果我们的前端参数名称和后端方法参数名称不一致,就无法获取到对应的参数值,为了解决前后端参数名称不一致的问题,SpringMVC框架提供了【@RequestParam】注解,解决参数名称不一致的问题。
@Controller public class ParamController { // HttpServletRequest获取参数 @RequestMapping("/param03") public String param03(@RequestParam("uname") String username, @RequestParam("pass") String password) { System.out.println("username=" + username); System.out.println("password=" + password); return "hello"; } }
- 浏览器访问地址:【http://localhost:8080/springmvc/param01?uname=root&pass=123456】。
- 注意:浏览器的请求参数名称是uname、pass,而后端方法参数名称是:username、password。
1.4、通过JavaBean对象接收参数
存在这样一种情况,当我们的前端参数数量特别多的时候,如果按照方法参数来接收,那么此时一个方法里面可能就需要写几十个参数名称,显然这样是不合理的,解决这个问题的办法就是通过一个对象来接收前端所有的参数,这个对象就是我们说的一个JavaBean,也就是pojo实体类对象。
- 创建【User】实体类。
public class User { private String username; private String password; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } }
- 通过【Bean】对象接收参数。
@Controller public class ParamController { // HttpServletRequest获取参数 @RequestMapping("/param04") public String param04(User user) { System.out.println("username=" + user.getUsername()); System.out.println("password=" + user.getPassword()); return "hello"; } }
- 浏览器访问:【http://localhost:8080/springmvc/param04?username=root&password=123456】。
- 可以发现,后端依然可以获取到对应的参数值。
1.5、通过@PathVariable注解获取参数
在Restful风格的HTTP请求里面,有些请求参数会直接放在请求路径里面,并且没有参数名称,对于这种在请求路径中并且没有参数名称的请求参数,SpringMVC框架提供了【@PathVariable】注解进行获取,这种获取参数的方式,叫做:【路径参数】。
- 路径参数,类似于:【/api/param01/root/123456】。(红色字体表示参数值,其余表示请求路径)。
- SpringMVC里面,路径参数语法格式如下:
路径参数:【/请求路径/{参数名称1}/{参数名称2}】
- 路径参数需要使用【{}】花括号括起来,参数名称任意。
@Controller public class ParamController { // HttpServletRequest获取参数 @RequestMapping("/param05/{username}/{password}") public String param05(@PathVariable String username, @PathVariable String password) { System.out.println("username=" + username); System.out.println("password=" + password); return "hello"; } }
- 路径参数中的参数名称需要和方法参数名称一致,这样SpringMVC才能够将其进行映射;
- 也可以通过指定【@PathVariable】注解的【value】属性值来关联路径参数。
@Controller public class ParamController { // HttpServletRequest获取参数 @RequestMapping("/param05/{uname}/{pass}") { public String param05(@PathVariable("uname") String username, @PathVariable("pass") String password) { System.out.println("username=" + username); System.out.println("password=" + password); return "hello"; } }
- 上面两种方式都可以,但是实际开发中,还是采用第二种,尽量指定【@PathVariable】注解的【value】属性值,因为这样更容易理解,并且可以确保不出错。
综上,这篇文章结束了,主要介绍SpringMVC框架中接收请求参数的几种常见方式。
【源代码地址:https://gitee.com/zhuyoubin/ssm_code/tree/master/spring-mvc/springmvc-demo02】。
热门文章
- 宠物领养协议是啥意思啊怎么写呀(宠物的领养协议是有法律保护的吗)
- 动物疫苗上市公司有哪些股票(利好消息频传,这些动物疫苗股值得关注)
- 1月26日18.2M/S|Clash/V2ray/SSR/Shadowrocket免费节点每天更新订阅链接,翻墙机场推荐分享
- 宠物医院诊疗许可证在什么部门办理(宠物医院诊疗许可证的年审)
- 1月14日21.1M/S|SSR/Shadowrocket/V2ray/Clash免费节点每天更新订阅链接,翻墙机场推荐分享
- 免费领养宠物的平台(免费领养宠物的平台重庆)
- 【Mysql】- binlog 日志解析
- 动物疫苗使用方法(动物疫苗接种方法有哪些)
- 宠物粮品牌排行前十名 宠物粮品牌排行前十名有哪些
- 【SpringMVC笔记02】SpringMVC接收请求参数的几种方式