手机百度建设网站,网站自动提交收录,基于wordpress的用户管理实现原理,手机网站模板大全1. Spring Boot 请求与响应概述
在 Spring Boot 开发中#xff0c;客户端通过浏览器发起请求#xff0c;后端使用内置的 Tomcat Web 服务器处理请求#xff0c;返回响应数据。请求和响应的过程遵循 HTTP 协议。Spring Boot 的核心 Servlet 程序是 DispatcherServlet#x…1. Spring Boot 请求与响应概述
在 Spring Boot 开发中客户端通过浏览器发起请求后端使用内置的 Tomcat Web 服务器处理请求返回响应数据。请求和响应的过程遵循 HTTP 协议。Spring Boot 的核心 Servlet 程序是 DispatcherServlet它作为请求的核心调度器将请求转发给处理器 (Controller)并在处理完成后生成响应。
2. 请求
2.1 Postman 工具
Postman 是一个常用的接口测试工具支持 GET、POST 等请求方法。后端开发时Postman 可以帮助测试接口是否正常工作尤其是在前后端分离的开发模式下后端不依赖前端页面也能自行测试接口。
2.2 简单参数
Spring Boot 提供了多种方式来接收请求参数
2.2.1 原始方式
通过 HttpServletRequest 对象获取请求参数适用于传统的 Servlet 编程。
String name request.getParameter(name);2.2.2 Spring Boot 方式
直接在方法参数中定义变量变量名与请求参数名一致即可自动接收。
RequestMapping(/simpleParam)
public String simpleParam(String name, Integer age) {return OK;
}2.3 实体参数
对于复杂请求可以将多个请求参数封装到实体类中前提是请求参数名与实体类的属性名一致。Spring Boot 自动将请求参数映射到实体类属性。
2.3.1 简单实体对象
public class User {private String name;private Integer age;// getters and setters
}RequestMapping(/simplePojo)
public String simplePojo(User user) {return OK;
}2.3.2 复杂实体对象
实体类的属性可以是另一个实体对象Spring Boot 也能自动封装嵌套对象。
public class Address {private String city;private String province;// getters and setters
}public class User {private Address address;// getters and setters
}2.4 数组与集合参数
如果请求参数包含多个值如复选框数据可以通过数组或集合来接收。
2.4.1 数组
请求参数名与形参数组名称相同且请求参数为多个定义数组类型形参即可接收参数
RequestMapping(/arrayParam)
public String arrayParam(String[] hobby) {return Arrays.toString(hobby);
}2.4.2 集合
请求参数名与形参集合对象名相同且请求参数为多个RequestParam 绑定参数关系
RequestMapping(/listParam)
public String listParam(RequestParam ListString hobby) {return hobby.toString();
}2.5 日期参数
对于日期参数使用 DateTimeFormat 注解指定日期格式例如
RequestMapping(/dateParam)
public String dateParam(DateTimeFormat(pattern yyyy-MM-dd HH:mm:ss) LocalDateTime updateTime) {return updateTime.toString();
}2.6 JSON 参数
通过 RequestBody 注解接收 JSON 格式的请求体并将其映射为 Java 对象。
RequestMapping(/jsonParam)
public String jsonParam(RequestBody User user) {return user.toString();
}2.7 路径参数
路径参数嵌入在 URL 中通过 PathVariable 注解获取。例如
RequestMapping(/path/{id})
public String pathParam(PathVariable Integer id) {return id.toString();
}3. 响应
3.1 ResponseBody 注解
ResponseBody 注解用于将方法的返回值直接响应给客户端。如果返回的是 Java 对象Spring Boot 会将其自动转换为 JSON 格式。在使用 RestController 注解时ResponseBody 是默认启用的。
3.2 统一响应结果
为了在大型项目中保持响应的统一格式通常会使用 Result 类统一封装响应结果包含状态码、提示信息和数据。
public class Result {private Integer code;private String msg;private Object data;// getters and setters//增删改 成功响应(不需要给前端返回数据)public static Result success(){return new Result(1,success,null);}//查询 成功响应(把查询结果做为返回数据响应给前端)public static Result success(Object data){return new Result(1,success,data);}//失败响应public static Result error(String msg){return new Result(0,msg,null);}
}
例如
RequestMapping(/getAddr)
public Result getAddr() {Address addr new Address();addr.setCity(深圳);return Result.success(addr);
}4. 分层解耦
4.1 三层架构
解耦思路不能使用new对象
为了提高代码的可维护性和可扩展性Spring Boot 项目通常遵循三层架构
Controller 层处理请求与响应。Service 层处理业务逻辑。Dao 层负责数据访问。
三层架构的好处是各个层之间的代码可以解耦增强代码的可维护性。
4.2 依赖注入 (DI)
通过 Spring 的依赖注入机制Autowired 自动装配注解可以自动将需要的依赖注入到类中避免显式地创建对象。
4.2.1 Autowired注解
默认是按照类型进行自动装配的去IOC容器中找某个类型的对象然后完成注入操作
如果在IOC容器中存在多个相同类型的bean对象即接口有多个实现类spring就不知道注入哪个对象。 解决方案 使用Qualifier注解指定当前要注入的bean对象。 在Qualifier的value属性中指定注入的bean的名称。Qualifier注解不能单独使用必须配合Autowired使用 4.2.2 Resource注解 是按照bean的名称进行注入。通过name属性指定要注入的bean的名称。 也可以解决自动装配按类型注入带来的问题。 4.3 控制反转 (IOC)
Spring 的 IOC 容器负责管理项目中的 Bean对象的创建和管理由容器完成。可以通过 Component、Service、Controller 等注解将类注册到容器中。
注意使用注解声明的bean要想生效还需要被组件扫描注解ComponentScan扫描
ComponentScan注解虽然没有显式配置但是实际上已经包含在了引导类声明注解
SpringBootApplication 中 默认扫描的范围是SpringBoot启动类所在包及其子包 。
5. 总结
Spring Boot 提供了强大的请求处理和响应机制能够轻松处理各种类型的请求参数并通过三层架构和 IOC/DI 实现代码的解耦极大地提高了开发效率和代码的可维护性。