目录
为什么需要分层?
编写jsp网页代码太多,不易于阅读,而且功能的连接性太过紧密,当一个功能报错整个项目的功能都不能实现
分层
- 将解决方案的组件分隔到不同的层中
- 在同一层中组件之间保持内聚性
- 层与层之间保持松耦合
三层模式
三层模式的划分
表示层 :主要是指 与 用户交互的界面 , 用于接收用户输入的数据和显示处理后用户需要的数据业务逻辑层 :表示层和数据库访问层之间的桥梁 , 实现业务逻辑 , 具体包含:验证、计算、业务规则等等数据访问层 :与数据库打交道 , 主要实现对数据的增、删、改、查
分层开发的优势
- 职责划分清晰
- 无损替换
- 复用代码
- 降低了系统内部的依赖程度
分层的实现
创建用户实体类
public class User {
private int id;
private String username;
private String password;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
…省略了后续的set/get方法
}
编写数据访问层
数据访问接口
public interface UserDao {
//根据用户进行查找,返回用户列表
public boolean findUser(User user);
}
数据访问接口的实现
public class UserDaoJdbcImpl implements UserDao{
public boolean findUser(User user){
Connection con = null;
PreparedStatement pStatement = null;
ResultSet res = null;
/** 调用创建数据库连接的方法 获得连接,实现用户名和密码查询*/
}
编写业务逻辑层
编写业务逻辑层接口
//编写业务逻辑控制接口UserBiz
public interface UserBiz {
public boolean login(User user);
}
编写业务逻辑层接口实现
public class UserBizImpl implements UserBiz{
public List login(User user){
UserDao ud = new UserDaoJdbcImpl();
boolean flag = ud.findUser(user);
return flag;
}
}
编写业务逻辑
编写业务逻辑层接口
//编写业务逻辑控制接口UserBiz
public interface UserBiz {
public boolean login(User user);
}
编写业务逻辑层接口实现
public class UserBizImpl implements UserBiz{
public List login(User user){
UserDao ud = new UserDaoJdbcImpl();
boolean flag = ud.findUser(user);
return flag;
}
}
编写表示层
JSP页面调用业务逻辑层
<%@page import="org.jbit.bean.*" %>
<%@page import="org.jbit.biz.*" %>
<%@page import="org.jbit.biz.impl.*" %>
<%
String uname=request.getParameter("user");
String upwd=request.getParameter("pwd");
User user = new User();
user.setUsername(uname);
user.setPassword(upwd);
UserBiz ub = new UserBizImpl();
boolean flag = ub.login(user);
if(flag)
response.sendRedirect("welcome.jsp");
else
response.sendRedirect("login.jsp");
%>