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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现