Java Web-请求响应

本文详细介绍了如何在SpringBoot中通过HttpServletRequest、RequestParam注解、实体对象、数组、日期时间、JSON参数以及路径参数处理HTTP请求,包括参数映射、实体类设计和响应数据格式化。
摘要由CSDN通过智能技术生成

获取请求

简单参数

1.原始方式:通过HttpServletRequest 对象手动获取。

@RestController
public class HelloController {
@RequestMapping("/hello")
    public String hello(HttpServletRequest request){
   String name= request.getParameter("name");
  String age=  request.getParameter("age");
    System.out.println(name + ":"+age);
    return "hello";
}
}

2.SpringBoot方法:参数名与形参变量名相同,定义形参即可接收参数

@RestController
public class HelloController {
    @RequestMapping("/hello")
    public String hello(String name,int age){
        System.out.println(name + ":"+age);
        return "hello";
    }
}

当参数名字对应不上,我们是收不到这个参数的,但不会报错。

这时候我们可以通过注解: @RequestParam ,将注解加在参数前面完成映射

@RestController
public class HelloController {
    @RequestMapping("/hello")
    public String hello(@RequestParam(name="name") String username, int age){
        System.out.println(username + ":"+age);
        return "hello";
    }
}

注意事项

● @RequestParam中的required属性默认为true,代表该请求参数必须传递,如果不传递将报错。如果该参数是可选的,可以将required属性设置为false。

@RequestParam(name="name",required=false) 

实体参数

当简单参数太多时,简单参数传递方法太繁琐,于是就可以将参数封装在实体对象中。

实体对象参数:请求参数名与形参对象属性名相同,定义POJO实体类接收即可

    @RequestMapping("/simplePojo")
    public String simplePojo(User user){
        System.out.println(user);
        return "OK";
    }


//实体类
public class User {
    private String name;
    private Integer 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;
    }

    public User(String name, Integer age) {
        this.name = name;
        this.age = age;
    }

    @Override
    public String toString() {
        return "User{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

复杂实体对象:

数组集合参数

数组参数:

请求参数名和形参数组名称相同且请求参数为多个,定义数组类型即可接收参数

    @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";
    }

日期时间参数

使用@DataTimeFormat注解完成日期参数类型转换

    @RequestMapping("/dataParam")
    public String dataParam(@DateTimeFormat(pattern = "yyyy年MM月dd日 HH时mm分ss秒") LocalDateTime updateTime){
        System.out.println(updateTime);
        return "OK";
    }

json参数

JSON参数:JSON数据键名与形参对象属性名相同,定义POJO类型形参可接收参数,需要使用@RequestBody标识

   @RequestMapping("/jsonParam")
    public String jsonParam(@RequestBody jsonUser user){
        System.out.println(user);
        return "OK";
    }

路径参数

通过请求URL来直接传递参数,使用[...]来标识该路径参数,需要使用@PathVariable获取路径参数

就像上图末尾的/1,既是请求参数,也是路径的一部分。

  @RequestMapping("/path/{id}")
    public String pathParam(@PathVariable Integer id){
        System.out.println(id);
        return "OK";
    }

获取多个参数操作类似

  @RequestMapping("/path/{id}/{name}")
    public String pathParam(@PathVariable Integer id,@PathVariable String name){
        System.out.println(id);
        return "OK";
    }

响应数据

@ResponseBody

  • 类型:方法注解、类注解
  • 位置:Controller方法上/类上
  • 作用:将方法返回值直接响应,如果返回值类型是实体对象/集合,将会转换为JSON格式响应
  • 说明: @RestController = @Controller + @ResponseBody 

响应结果各式各样,为了便于维护管理,通常会设置一个统一响应结果 Result

public class Result
{
//响应码 ,0代表失败,1代表成功
private Integer code;
//提示信息
private String msg
//返回的数据
private Object data;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值