当前位置: 首页 > wzjs >正文

建立网站需要准备的材料订餐网站建设

建立网站需要准备的材料,订餐网站建设,中国设计网站排行榜前十名,wordpress google访客核心分层架构图解析 具体来说👇 形象来说👇 各层详细说明 Controller(控制层) 职责:接收HTTP请求,返回HTTP响应 工作流程: 接收前端发送的请求数据(JSON/表单) 调用Ser…

核心分层架构图解析

具体来说👇

························································形象来说👇

各层详细说明
  1. Controller(控制层)

    • 职责:接收HTTP请求,返回HTTP响应

    • 工作流程

      • 接收前端发送的请求数据(JSON/表单)

      • 调用Service处理业务逻辑

      • 将Service返回的VO对象转为JSON响应

    • 关键注解

      • @RestController:标记为控制器

      • @PostMapping/@GetMapping:定义API路径

      • @RequestBody:接收JSON请求体

      • @Valid:参数校验

  2. Service(服务层)

    • 职责:处理核心业务逻辑

    • 工作流程

      • 接收Controller传递的DTO对象

      • 调用Mapper操作数据库

      • 处理业务规则和计算

      • 将Entity转换为VO返回给Controller

    • 关键注解

      • @Service:标记为服务组件

      • @Transactional:管理数据库事务

  3. Mapper(数据访问层)

    • 职责:与数据库直接交互

    • 工作流程

      • 接收Service传递的Entity对象

      • 执行SQL语句(增删改查)

      • 将数据库结果转为Entity返回

    • 关键技术

      • MyBatis:SQL映射框架

      • @Mapper:标记Mapper接口

      • XML文件:编写SQL语句

  4. Entity(实体层)

    • 职责:映射数据库表结构

    • 特点

      • 与数据库表一一对应

      • 包含所有表字段

      • 不应包含业务逻辑

    • 示例

      @Data
      public class User {private Long id;private String username;private String password; // 敏感字段private Date createTime;
      }

  5. DTO(数据传输对象)

    • 职责:层间数据传输

    • 特点

      • 用于Controller接收请求数据

      • 只包含前端需要的字段

      • 包含数据校验规则

    • 示例

      public class UserDTO {@NotBlankprivate String username;@Size(min=6, max=20)private String password;
      }
  6. VO(视图对象)

    • 职责:返回给前端的数据

    • 特点

      • 只包含前端需要的数据

      • 对敏感字段脱敏

      • 格式化数据展示

    • 示例

      public class UserVO {private Long id;private String username;private String createTime; // 格式化后的字符串
      }

完整数据流转过程
  1. 前端发起请求

    • 发送HTTP请求(如POST /users)

    • 携带JSON数据(DTO格式)

  2. Controller接收请求

    @PostMapping("/users")
    public UserVO createUser(@Valid @RequestBody UserDTO userDTO) {return userService.createUser(userDTO);
    }
  3. Service处理业务

    @Service
    public class UserService {public UserVO createUser(UserDTO userDTO) {// DTO转EntityUser user = new User();user.setUsername(userDTO.getUsername());user.setPassword(encodePassword(userDTO.getPassword()));// 保存到数据库userMapper.insert(user);// Entity转VOreturn convertToVO(user);}
    }
  4. Mapper操作数据库

    <!-- UserMapper.xml -->
    <insert id="insert">INSERT INTO users (username, password) VALUES (#{username}, #{password})
    </insert>
  5. VO返回给前端

    private UserVO convertToVO(User user) {UserVO vo = new UserVO();vo.setId(user.getId());vo.setUsername(user.getUsername());// 格式化日期vo.setCreateTime(formatDate(user.getCreateTime()));// 不返回密码等敏感字段return vo;
    }
为什么需要VO?
  1. 安全性:隐藏敏感字段(密码、内部ID等)

    // Entity包含敏感字段
    public class User {private String password;private String internalCode;
    }// VO只返回安全字段
    public class UserVO {private String username;private String displayName;
    }

  2. 数据格式化:转换数据库原始数据

    // 数据库存储的原始日期
    private Date createTime; // VO中的格式化日期
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm")
    private String createTime;
  3. 减少网络传输:只返回必要字段

    // 不返回大型字段
    // private byte[] avatarImage; 

  4. 数据组合:聚合多个Entity的数据

    public class OrderDetailVO {private OrderVO order;private List<OrderItemVO> items;private UserVO user;
    }

一些错误写法

❌ 错误1:直接返回Entity

// Controller中
public User getUser() {return userService.getUser(); // 返回包含密码的Entity
}

✅ 正确做法:返回VO

public UserVO getUser() {User user = userService.getUser();return convertToVO(user);
}

❌ 错误2:DTO/VO混用

public class UserDTO {// 请求字段private String password;// 响应字段private String createTime;
}

✅ 正确做法:DTO/VO分离

// 请求专用
public class UserRequestDTO {private String username;private String password;
}// 响应专用
public class UserResponseVO {private String username;private String createTime;
}
总结要点
  1. 分层结构

    • Controller:处理HTTP请求/响应

    • Service:实现业务逻辑

    • Mapper:数据库操作

    • Entity:映射数据库表

    • DTO:接收请求数据

    • VO:返回响应数据

  2. 数据流转方向
    前端 → DTO → Controller → Service → Mapper → Entity → 数据库
    数据库 → Entity → Mapper → Service → VO → Controller → 前端

  3. 核心原则

    • 永远不要直接返回Entity给前端

    • 各层只处理本层的职责

    • DTO用于输入,VO用于输出

    • Service处理业务逻辑和类型转换

  4. 转换工具推荐

    • 简单项目:BeanUtils.copyProperties()

    • 复杂项目:MapStruct(自动生成转换代码)

通过这样的分层设计,你的代码将更加清晰、安全且易于维护。每个层专注自己的职责,使整个系统像精密的齿轮一样协同工作。


文章转载自:

http://hk83ZId6.jwxmn.cn
http://BZTnVohE.jwxmn.cn
http://lBSThj0N.jwxmn.cn
http://3WnW2lL2.jwxmn.cn
http://r5tkzjyc.jwxmn.cn
http://cvN1wHX9.jwxmn.cn
http://jCKBWFaU.jwxmn.cn
http://w9zWI0yk.jwxmn.cn
http://9ud8fGCX.jwxmn.cn
http://h3zKttmt.jwxmn.cn
http://4xxVo31q.jwxmn.cn
http://zE2ZVHRP.jwxmn.cn
http://27qgwiCn.jwxmn.cn
http://TdwPImAw.jwxmn.cn
http://ZqWjhuMR.jwxmn.cn
http://iwmKnxMP.jwxmn.cn
http://Gq0CCnbj.jwxmn.cn
http://BeWWT23m.jwxmn.cn
http://tRGMJer4.jwxmn.cn
http://AfM0vJwN.jwxmn.cn
http://iTK7sqVg.jwxmn.cn
http://FfmOwFIk.jwxmn.cn
http://NkjQHCZU.jwxmn.cn
http://MV0fLlgd.jwxmn.cn
http://gfBZLwFC.jwxmn.cn
http://pWsl5ZUm.jwxmn.cn
http://GDylex0a.jwxmn.cn
http://IeI4r7FG.jwxmn.cn
http://PT8891d2.jwxmn.cn
http://nsYFcICJ.jwxmn.cn
http://www.dtcms.com/wzjs/697174.html

相关文章:

  • 表格比较多得网站这么做响应式做淘宝网站需要多大空间
  • 婚纱摄影网站设计做黑网站
  • 新余网站建设提供大良网站建设
  • 免费网站收录入口苏州学网站建设
  • 黄石公司网站建设深圳网站开发深圳网站设计
  • 为什么网站建设需要每年续费四川建设网官网安全员证书查询
  • 赣州市南康区建设局网站wordpress关闭
  • 做网站的好处和坏处肥城房产网
  • 上海海宏建设集团网站网站建设捌金手指花总十六
  • 宁波市海曙区建设局网站安徽六安市地图位置
  • h5怎么制作进入下一页徐州手机网站优化公司
  • ps做ppt模板怎么下载网站查询建设资质的网站
  • 南通哪里学网站建设微信营销策略有哪些
  • 微信 app 微网站 整合盐城网站优化服务
  • 南宁 网站建设 制作高端营销型网站
  • 早教网站建设方案网上有哪些正规赚钱的平台
  • 东莞营销网站建设哪家好网站备案流程解答
  • 个人微博网站设计网络营销策划方案怎么做
  • 做网站必须先买域名吗wordpress nodejs
  • 南京html5网站建设wordpress 浏览器不居中
  • 爱网站长尾排版设计教程
  • php网站开发什么计算机个人网站建设论文
  • 佛山网站公司dw建设网站视频
  • 常熟网站建设书生商友wordpress做服务器配置
  • 网站建设如何搭建框架品牌策划与设计
  • 免费wordpress网站模板嘉定网站设计开发
  • 苏州木渎做网站公司cent os7 wordpress
  • 建设网站需要哪些费用wordpress文章播放器
  • 企业电子商务网站开发实验报告如何选择网站开发
  • 做编程题的网站做国外的众筹网站