杭州公司网站域名续费,域名没过期 网站打不开怎么办,如何查看网站的访问量,网页设计公司深圳目录
1.DTO/VO/PO
2.MVC架构/微服务架构
3.JWT令牌流程
4.ThreadLocal
5.接口路径/路径参数 1.DTO/VO/PO
1.1 DTO
DTO 即 Data Transfer Object—— 数据传输对象#xff0c;是用于传输数据的对象#xff0c;通常在服务层与表现层之间传递数据#xff0c;DTO 通常用于…目录
1.DTO/VO/PO
2.MVC架构/微服务架构
3.JWT令牌流程
4.ThreadLocal
5.接口路径/路径参数 1.DTO/VO/PO
1.1 DTO
DTO 即 Data Transfer Object—— 数据传输对象是用于传输数据的对象通常在服务层与表现层之间传递数据DTO 通常用于减少网络传输的数据量因为它只包含需要传递的数据而不包含业务逻辑。DTO 常用于不同服务或系统之间的数据交换。
public class UserDTO {private String id;private String username;private String email;// 可能还包含其他的传输相关字段// Getters and Setters
} 1.2 VO
VO 即 Value Object-——值对象VO 通常在表示层如前端使用表示一个具体的业务场景中的数据结构可能是多个领域对象或实体对象的组合。
public class UserVO {private String username;private String displayName;// 可能包含一些展示相关的信息比如角色、权限等// Getters and Setters
}
1.3 PO
PO 即 Persistent Object——持久化对象PO 是与数据库表结构一一对应的 Java 对象用于表示数据库中的一行记录。特点
直接映射到数据库表结构通常对应于数据库中的一张表包含数据库字段的所有属性可能包括一些与数据库相关的注解或映射信息
Entity
Table(name users)
public class UserPO {IdGeneratedValue(strategy GenerationType.IDENTITY)private Long id;Column(name username)private String username;Column(name password)private String password;Column(name email)private String email;// Getters and Setters
}
三者的工作流程
从数据库到业务逻辑在系统需要从数据库中获取数据时通过 DAO 层获取 PO 对象将其从数据库加载到内存业务层处理如果业务逻辑复杂或者需要传递给其他服务时将 PO 转换成 DTO 或 VO 对象进行传输以减少依赖性和安全风险。传输到客户端DTO 将业务层处理后的数据传输到控制器层最终封装为 API 响应返回给客户端。从客户端到数据库客户端提交的数据通过控制器层接收后转换为 DTO 或 VO再经业务逻辑处理后转化为 PO最终将数据保存至数据库。
总结
PO用于数据库交互直接与数据库表结构相关DTO用于跨层传输数据通常为精简版或安全版的数据结构VO用于业务逻辑封装系统内的不可变数据
2.MVC架构/微服务架构
MVC架构和微服务架构是两种不同层次的架构模式MVC是一种应用内的架构模式主要用于组织单个应用程序的代码逻辑而微服务是一种系统级的架构模式用于将一个大型应用分解成多个可独立部署的服务。
具体来说MVCModel-View-Controller是一种常见的软件架构模式用于将应用程序分为三个主要部分模型Model、视图View和控制器Controller。这种分层结构帮助组织代码提高应用的可维护性和扩展性。
Model负责处理应用程序的核心数据逻辑。它包含应用程序的数据结构和业务逻辑直接与数据库进行交互并进行数据的增删改查操作。
View负责呈现数据给用户是用户与应用程序交互的界面。视图的主要目的是展示数据但不包含业务逻辑。
Controller是模型和视图之间的桥梁负责处理用户输入并协调模型和视图的工作。控制器从视图接收用户输入将其解释为对模型的操作。 3.JWT令牌流程 4.ThreadLocal
客户端每次发送的请求都属于单独的一个线程最小单位进程是软件所以如果想要在一个请求中获取信息就可以通过ThreadLoacl。ThreadLocal 并不是一个Thread线程而是Thread的局部变量。ThreadLocal为每个线程提供单独一份存储空间具有线程隔离的效果只有在线程内才能获取到对应的值线程外则不能访问。ThreadLocal常用方法
public void set(T vare) 设置当前线程的线程局部变量的值public T get() 返回当前线程所对应的线程局部变量的值public void remove() 移除当前线程的线程局部变量
当然往往使用ThreadLocal的时候都会简单地封装成一个工具类
public class BaseContext {public static ThreadLocalLong threadLocal new ThreadLocal();public static void setCurrentId(Long id) {threadLocal.set(id);}public static Long getCurrentId() {return threadLocal.get();}public static void removeCurrentId() {threadLocal.remove();}}
5.接口路径/路径参数
在Java后端开发中接口路径和路径参数是指向服务器资源和处理请求数据的重要概念接口路径是API中一个特定的URL地址用于定位资源或功能例如
https://example.com/api/users其中/api/users就是接口路径表示访问用户资源的接口
在Java后端开发中接口路径通常由控制器Controller类来定义。例如在Spring框架中可以使用RequestMapping、GetMapping等注解来指定路径例如下面的代码中/api/users就是getAllUsers()方法的接口路径
RestController
RequestMapping(/api)
public class UserController {GetMapping(/users)public ListUser getAllUsers() {// 逻辑代码}
}路径参数是URL路径中的动态部分通常用于识别特定资源。路径参数使用{}括起来并且会在方法中被解析并绑定。例如
https://example.com/api/users/123其中123就是路径参数表示要访问ID为123的用户资源
假设我们有一个电商系统需要获取特定商品的详细信息。可以使用路径参数来标识商品的ID接口路径定义为/api/products/{productId}如果要获取ID为888的商品信息客户端会发起以下请求
GET https://example.com/api/products/101在Spring框架中我们可以用PathVariable注解来捕获这个路径参数
RestController
RequestMapping(/api/products)
public class ProductController {GetMapping(/{productId})public Product getProductById(PathVariable(productId) Long productId) {// 假设我们从数据库获取商品信息Product product productService.findProductById(productId);return product;}
}{productId} 是路径参数占位符PathVariable(productId) 把URL中的productId参数提取出来并赋值给方法参数productId当请求GET /api/products/101到达时Spring会自动将路径中的101赋值给productId然后在getProductById方法中使用这个值来获取商品信息
再举一个例子要写一个启用禁用员工账号的接口接口路径路径参数为/status/{status}
PostMapping(/status/{status})
ApiOperation(启用禁用员工账号)
public Result startOrStop(PathVariable(status) Integer status, Long id){employeeService.startorstpp(status,id);return Result.success();
}