这篇文章,主要介绍SpringMVC框架中接收请求参数的几种方式。
目录
这篇文章主要总结一下SpringMVC框架中,如何接收HTTP请求的参数,主要有如下几种常见的方式。
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"; } }
在SpringMVC框架中,我们的方法参数里面可以直接使用servlet中的请求对象,要使用servlet的相关api,那么我们需要引入【servlet-api】的依赖,如下所示:
<!-- 引入servlet-api依赖 --> <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>2.5</version> <!-- 作用域设置为已被提供: 表示servlet-api依赖会被Tomcat容器提供, 打包时候不会再将servlet-api加入到里面 --> <scope>provided</scope> </dependency>
@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"; } }
通过【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"; } }
存在这样一种情况,当我们的前端参数数量特别多的时候,如果按照方法参数来接收,那么此时一个方法里面可能就需要写几十个参数名称,显然这样是不合理的,解决这个问题的办法就是通过一个对象来接收前端所有的参数,这个对象就是我们说的一个JavaBean,也就是pojo实体类对象。
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; } }
@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"; } }
在Restful风格的HTTP请求里面,有些请求参数会直接放在请求路径里面,并且没有参数名称,对于这种在请求路径中并且没有参数名称的请求参数,SpringMVC框架提供了【@PathVariable】注解进行获取,这种获取参数的方式,叫做:【路径参数】。
路径参数:【/请求路径/{参数名称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"; } }
@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"; } }
综上,这篇文章结束了,主要介绍SpringMVC框架中接收请求参数的几种常见方式。
【源代码地址:https://gitee.com/zhuyoubin/ssm_code/tree/master/spring-mvc/springmvc-demo02】。