[Java2023] T5.请求和响应

119 阅读2分钟

一.请求:

1.代码总览

package com.itheima.controller;
import com.itheima.pojo.User;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import java.lang.reflect.Array;
import java.time.LocalDateTime;
import java.util.Arrays;
import java.util.List;

@RestController
public class RequestController {
    // 1.通过servlet接收, 了解即可
    @RequestMapping("/simple01")
    public String simple(HttpServletRequest request)
    {
        // 获取请求参数
        String name = request.getParameter("name");
        return "simple: " + name;
    }
    // 2.简单参数
    @RequestMapping("/simple")
    public String simpleParam(String name, Integer age)
    {
        System.out.println( name +":"+ age);
        return "OK";
    }
    // 3.对象参数(需要先定义对象)
    @RequestMapping("/simplePojo")
    public String simplePojo(User user)
    {
        System.out.println(user);
        return "OK";
    }

    // 4.数组参数
    @RequestMapping("/arrayParam")
    public String arrayParam(String[] hobby)
    {
        System.out.println(Arrays.toString(hobby));
        return "OK";
    }
    // 5.集合参数(需要导入List包)
    @RequestMapping("/listParam")
    public String lstParam(@RequestParam List<String> hobby)
    {
        System.out.println(hobby);
        return "OK";
    }
    // 6.时间参数
    @RequestMapping("/dateParam")
    public String dateParam(@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") LocalDateTime updateTime)
    {
        System.out.println(updateTime);
        return "ok";
    }
    // 7.json参数
    @RequestMapping("/jsonParam")
    public String jsonParam(@RequestBody User user)
    {
        System.out.println(user);
        return  "ok";
    }
    @RequestMapping("/pathParam/{id}")
    public String pathParam(@PathVariable Integer id)
    {
        System.out.println(id);
        return "OK";
    }
}

2.详情

    1. 简单参数接收 URL: localhost:8080/simple?name=张三&age=333
  • 2.简单实体参数接收(将参数封装到实体类中)

2.1 创建接收对象 com/itheima/pojo/User.java, 使用 alt+insert快速添加getter,setter和toString
  • 3.T5-04 数组集合参数
package com.itheima.pojo;
public class User {
    private String name;
    private Integer age;
    private Address address;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public Integer getAge() {
        return age;
    }
    public Address getAddress() {
        return address;
    }
    public void setAddress(Address address) {
        this.address = address;
    }
    public void setAge(Integer age) {
        this.age = age;
    }
    @Override
    public String toString() {
        return "User{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", address=" + address +
                '}';
    }
}

package com.itheima.pojo;
public class Address {
    private String province;
    private String city;
    public String getProvince() {
        return province;
    }
    public void setProvince(String province) {
        this.province = province;
    }
    public String getCity() {
        return city;
    }
    public void setCity(String city) {
        this.city = city;
    }
    @Override
    public String toString() {
        return "Address{" +
                "province='" + province + '\'' +
                ", city='" + city + '\'' +
                '}';
    }
}

image.png

image.png

T5.06 路径参数 localhost:8080/pathParam/10086

二.响应:

创建这两个类, 一个是控制器, 一个是封装响应请求

image.png

image.png

代码

package com.itheima.pojo;
/**
 * 统一响应结果封装类
 */
public class Result {

    private Integer code; // 1.成功. 0.失败
    private String msg; // 提示信息
    private Object data; //数据

    public Result()
    {
    }
    public Result(Integer code, String msg, Object data)
    {
        this.code = code;
        this.msg = msg;
        this.data = data;
    }
    public Integer getCode() {
        return code;
    }
    public void setCode(Integer code) {
        this.code = code;
    }
    public String getMsg() {
        return msg;
    }
    public void setMsg(String msg) {
        this.msg = msg;
    }
    public Object getData() {
        return data;
    }
    public void setData(Object data) {
        this.data = data;
    }

    // 静态方法, 方便调用
    public static Result success(Object data)
    {
        return new Result(1, "success", data);
    }
    public static Result success()
    {
        return new Result(1, "success", null);
    }
    public static Result error(String msg)
    {
        return new Result(0, msg, null);
    }
}
package com.itheima.controller;
import com.itheima.pojo.Address;
import com.itheima.pojo.Result;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.ArrayList;
import java.util.List;
@RestController
public class ResponseController {
    /*
    // 响应字符串
    @RequestMapping
    public String hello()
    {
        return "hello";
    }
    // 响应json
    @RequestMapping("/getAddr")
    public Address getAddr()
    {
        Address addr = new Address();
        addr.setProvince("河南");
        addr.setCity("驻马店");
        return addr;
    }
     // 响应集合
    @RequestMapping("/listAddr")
    public List<Address> listAddr()
    {
        List<Address> list = new ArrayList<>();
        Address addr = new Address();
        addr.setProvince("河南");
        addr.setCity("驻马店");
        list.add(addr);
        return list;
    }
    */
    // 响应字符串
    @RequestMapping
    public Result hello()
    {
        return Result.success("hello");
    }
    // 响应json
    @RequestMapping("/getAddr")
    public Result getAddr()
    {
        Address addr = new Address();
        addr.setProvince("河南");
        addr.setCity("郑州");
        return Result.success(addr);
    }
    // 响应集合
    @RequestMapping("/listAddr")
    public List<Address> listAddr()
    {
        List<Address> list = new ArrayList<>();
        Address addr = new Address();
        addr.setProvince("河南");
        addr.setCity("驻马店");
        list.add(addr);
        return list;
    }
}