目录
在原始的web程序中,获取请求参数,需要通过HttpServletRequest对象手动获取。
- @RequestMapping("/simpleParam")
- public String simpleParam(HttpServletRequest request){
- String name=request.getParameter("name");
- String ageStr=request.getParameter("age");
- int age=Integer.parseInt(ageStr);
- System.out.println(name+","+age);
- return "ok";
- }
public String simpleParam(HttpServletRequest request):这是一个公共方法,返回类型为String。它接收一个HttpServletRequest类型的参数,用于获取HTTP请求的信息。
String name=request.getParameter("name");:从HTTP请求中获取名为"name"的参数值,并将其赋值给变量name。
int age=Integer.parseInt(ageStr);:将字符串类型的ageStr转换为整数类型,并赋值给变量age。
简单参数:参数名与形参变量名相同,定义形参即可接收参数。
- @RequestMapping("/simpleParam")
- public String simpleParam(String name,Integer age){
- System.out.println(name+","+age);
- return "ok";
- }
如果请求参数名 不一致,会导致接收失败,但是不会报错。 可以使用@RequestParam来完成映射。
- @RequestMapping("/simpleParam")
- public String simpleParam(@RequestParam(name="name") String username, Integer age){
- System.out.println(username+","+age);
- return "ok";
- }
@RequestParam中的required属性默认为true,代表该请求参数必须传递,如果不传递将报错。如果该参数是可选的必须将required属性设置为false。


User实体类代码如下:
- package com.example.demo.pojo;
-
- public class User {
- private String name;
- private Integer age;
-
- public User(String name, Integer age) {
- this.name = name;
- this.age = age;
- }
-
- public User() {
- }
-
- @Override
- public String toString() {
- return "User{" +
- "name='" + name + '\'' +
- ", age=" + age +
- '}';
- }
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- public Integer getAge() {
- return age;
- }
-
- public void setAge(Integer age) {
- this.age = age;
- }
- }
简单实体对象:请求参数与形参对象属性名相同,定义POJO接收即可。
- @RequestMapping("/simplePojo")
- public String simplePojo(User user){
- System.out.println(user);
- return "ok";
- }
复杂实体对象:请求参数名与形参对象属性名相同,按照对象层次结构关系即可接收嵌套POJO属性参数。
![]()
数组参数:请求参数名与形参数组名称相同且请求参数为多个,定义数组类型形参即可接收参数。
- @RequestMapping("/arrayParam")
- public String arrayParam(String [] hobby){
- System.out.println(Arrays.toString(hobby));
- return "ok";
- }
集合参数:请求参数名与形参集合名称相同且请求参数为多个,@RequestParam绑定参数关系,默认情况下多个值封装在数组中。
- @RequestMapping("/listParam")
- public String listParam(@RequestParam List<String> hobby){
- System.out.println(hobby);
- return "ok";
- }
日期参数:使用@DateTimeFormat注解完成日期参数格式转换,指定前端传递日期的格式。
- @RequestMapping("/dateParam")
- public String dateParam(@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") LocalDateTime updateTime){
- System.out.println(updateTime);
- return "ok";
- }
JSON参数:JSON数据键名与形参对象属性名形同,定义POJO类型形参即可接收参数,需要使用@RequestBody标识。
- @RequestMapping("/jsonParam")
- public String jsonParam(@RequestBody User user){
- System.out.println(user);
- return "ok";
- }
路径参数:通过请求URL直接传递参数,使用{...}来表示该路径参数,需要使用@PathVariable获取路径参数。(可获取多个参数,直接在后面添加/{...}/{...})
- @RequestMapping("/path/{id}")
- public String pathParam(@PathVariable Integer id){
- System.out.println(id);
- return "ok";
- }