11-请求响应-响应

主要学习以下几个部分:请求、响应和分层解耦(这里主要介绍响应部分)

package com.malingshu.controller;

import com.malingshu.entity.Student;
import com.malingshu.entity.User;
import com.malingshu.entity.User2;
import jakarta.servlet.http.HttpServletRequest;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import java.util.Arrays;
import java.util.List;

// @RestController注解,表示该类下的方法返回的数据直接写给浏览器(如果是对象转为json数据)
// @RestController = @Controller + @ResponseBody
@RestController
public class RequestController {

    // SpringBoot方式
    @RequestMapping("/simpleParamSpringBoot")
    public String simpleParamSpringBoot(@RequestParam String name, int age) {
        System.out.println("name: " + name + ", age: " + age);
        return "name: " + name + ", age: " + age;
    }

}

打开@RestController注解源文件,可以看到一共有五个注解,但前三个是原注解,真正封装的是@Controller 和 @ResponseBody注解

 

案例:响应字符串、对象、list集合和hashMap集合

Address.java

package com.malingshu.entity;

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 + '\'' +
                '}';
    }
}

ResponseController.java

package com.malingshu.controller;

import com.malingshu.entity.Address;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

@RestController
public class ResponseController {
    // 响应字符串
    // @RequestMapping注解,表示该方法对应的url
    @RequestMapping("/hello")
    public String hello() {
        return "Hello SpringBoot!";
    }

    // 响应对象
    @RequestMapping("/getAddr")
    public Address getAddr() {
        Address address = new Address();
        address.setProvince("河北省");
        address.setCity("邯郸市");
        return address;
    }

    // 响应list集合
    @RequestMapping("/listAddr")
    public List<Address> listAddr() {
        List<Address> list = new ArrayList<>();

        Address addr1 = new Address();
        addr1.setProvince("河北省");
        addr1.setCity("邯郸市");

        Address addr2 = new Address();
        addr2.setProvince("河北省");
        addr2.setCity("石家庄市");

        list.add(addr1);
        list.add(addr2);
        return list;
    }

    // 响应Map集合
    @RequestMapping("/mapAddr")
    public HashMap<String, Object> mapAddr() {
        HashMap<String, Object> map = new HashMap<>();

        Address addr1 = new Address();
        addr1.setProvince("河北省");
        addr1.setCity("邯郸市");

        Address addr2 = new Address();
        addr2.setProvince("河北省");
        addr2.setCity("石家庄市");

        map.put("addr1", addr1);
        map.put("addr2", addr2);
        return map;
    }
}
  • 响应字符串:http://localhost:8080/hello

  • 响应对象:http://localhost:8080/getAddr

  • 响应list集合:http://localhost:8080/listAddr

  • 响应map集合:http://localhost:8080/mapAddr

 

 

 

 Result.java响应结果类

package com.malingshu.entity;

/* 统一响应结果封装类 */
public class Result<T> {
    private int code;
    private String message;
    private Object data;

    public Result() {
    }

    public Result(int code, String message) {
        this.code = code;
        this.message = message;
    }

    public Result(int code, String message, Object data) {
        this.code = code;
        this.message = message;
        this.data = data;
    }

    public static Result success() {
        return new Result(200, "success");
    }

    public static Result success(Object data) {
        return new Result(200, "success", data);
    }

    public static Result error() {
        return new Result(500, "error");
    }

    public static Result error(String message) {
        return new Result(500, message);
    }

    public static Result error(int code, String message) {
        return new Result(code, message);
    }

    public static Result error(int code, String message, Object data) {
        return new Result(code, message, data);
    }

    public int getCode() {
        return code;
    }

    public void setCode(int code) {
        this.code = code;
    }

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }

    public Object getData() {
        return data;
    }

    public void setData(Object data) {
        this.data = data;
    }

    @Override
    public String toString() {
        return "Result{" +
                "code=" + code +
                ", message='" + message + '\'' +
                ", data=" + data +
                '}';
    }
}

Address.java

package com.malingshu.entity;

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 + '\'' +
                '}';
    }
}

ResponseController.java

package com.malingshu.controller;

import com.malingshu.entity.Address;
import com.malingshu.entity.Result;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

@RestController
public class ResponseController {
    // 响应字符串
    // @RequestMapping注解,表示该方法对应的url
    @RequestMapping("/hello")
    public Result hello() {
        String msg = "Hello SpringBoot!";
        return Result.success(msg);
    }

    // 响应对象
    @RequestMapping("/getAddr")
    public Result<Address> getAddr() {
        Address address = new Address();
        address.setProvince("河北省");
        address.setCity("邯郸市");
        return Result.success(address);
    }

    // 响应list集合
    @RequestMapping("/listAddr")
    public Result<List<Address>>listAddr() {
        List<Address> list = new ArrayList<>();

        Address addr1 = new Address();
        addr1.setProvince("河北省");
        addr1.setCity("邯郸市");

        Address addr2 = new Address();
        addr2.setProvince("河北省");
        addr2.setCity("石家庄市");

        list.add(addr1);
        list.add(addr2);
        return Result.success(list);
    }

    // 响应Map集合
    @RequestMapping("/mapAddr")
    public Result<HashMap<String, Object>> mapAddr() {
        HashMap<String, Object> map = new HashMap<>();

        Address addr1 = new Address();
        addr1.setProvince("河北省");
        addr1.setCity("邯郸市");

        Address addr2 = new Address();
        addr2.setProvince("河北省");
        addr2.setCity("石家庄市");

        map.put("addr1", addr1);
        map.put("addr2", addr2);
        return Result.success(map);
    }
}
  • 响应字符串:http://localhost:8080/hello

  • 响应对象:http://localhost:8080/getAddr

  • 响应list集合:http://localhost:8080/listAddr

  • 响应map集合:http://localhost:8080/mapAddr

 

 

posted @ 2024-04-14 17:11  马铃薯1  阅读(2)  评论(0编辑  收藏  举报