1. 视图层(View)代码作用
核心代码示例(以JSP为例):
<!-- register.jsp -->
<form action="registerServlet" method="post">用户名: <input type="text" name="username">密码: <input type="password" name="password"><input type="submit" value="注册">
</form>表单提交:通过HTML表单收集用户输入的注册信息(如用户名、密码),并提交到控制器(registerServlet)
2. 控制器层(Controller)代码作用
核心代码示例(以Servlet为例):
// RegisterServlet.java
protected void doPost(HttpServletRequest request, HttpServletResponse response) {String username = request.getParameter("username");String password = request.getParameter("password");User user = new User(username, password);boolean isSuccess = userService.register(user);if (isSuccess) {response.sendRedirect("login.jsp"); // 注册成功跳转登录页} else {response.sendRedirect("register.jsp?error=用户名已存在"); // 失败回注册页}
}作用:
接收请求参数:通过request.getParameter()获取表单数据,并封装为User对象。
调用服务层:通过userService.register()调用业务逻辑层,解耦具体实现。
页面跳转控制:根据注册结果选择重定向至成功页或返回错误提示(如网页7中的response.sendRedirect)
3. 模型层(Model)代码作用
3.1 业务逻辑层(Service)
// UserServiceImpl.java
public boolean register(User user) {if (userDao.isUsernameExist(user.getUsername())) {return false; // 校验用户名唯一性}user.setPassword(encrypt(user.getPassword())); // 密码加密return userDao.insertUser(user) > 0; // 调用DAO插入数据
}作用:
业务规则校验:检查用户名是否已存在(如网页2中的循环比对用户列表)。
数据加工:对敏感数据加密(如密码哈希处理)。
事务协调:调用DAO层完成数据持久化。
3.2 数据访问层(DAO)
核心代码示例(使用JDBC或MyBatis):
// UserDaoImpl.java
public int insertUser(User user) {String sql = "INSERT INTO users(username, password) VALUES (?, ?)";try (Connection conn = DBUtils.getConnection();PreparedStatement pstmt = conn.prepareStatement(sql)) {pstmt.setString(1, user.getUsername());pstmt.setString(2, user.getPassword());return pstmt.executeUpdate(); // 执行插入操作}
}作用:
数据库操作:通过SQL语句实现数据的增删改查(如网页1中的UserDaoImpl)。
资源管理:通过try-with-resources自动关闭数据库连接,防止资源泄漏
4. 数据传递与校验机制
数据封装:通过User实体类(POJO)传递数据,例如:
public class User {private String username;private String password;// Getter/Setter省略
}
后端校验:结合注解校验(如Spring MVC的@Valid):
public class UserRegisterVO {@Size(min=6, max=18, message="用户名长度需在6-18位")private String username;
}
5. 完整协作流程
用户提交表单 → 视图层收集数据并提交至控制器。
控制器解析请求 → 调用服务层处理业务逻辑。
服务层校验与加工 → 调用DAO层执行数据库操作。
DAO层操作数据库 → 返回结果至服务层。
控制器根据结果跳转 → 视图层展示成功或错误页面。