这篇文章,主要介绍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】。