回顾:JavaWeb10.富文本编辑器&文件上传功能
目录
为什么需要分层
软件设计中的分层模式
分层模式
分层
三层模式
三层模式的划分
三层模式的关系
三层开发遵循的原则
分层开发的特点
分层开发的优势
分层的实现
创建用户实体类
编写数据访问层
数据访问接口
数据访问接口的实现
编写业务逻辑层
编写业务逻辑层接口
编写业务逻辑层接口实现
编写业务逻辑
编写业务逻辑层接口
编写业务逻辑层接口实现
编写表示层
JSP页面调用业务逻辑层
为什么需要分层
JSP开发具有弊端,业务的代码与JSP代码混在一起,不易阅读,不易于代码的维护
软件设计中的分层模式
分层模式
- 分层模式是最常见的一种架构模式
- 分层模式是很多架构模式的基础
分层
- 将解决方案的组件分隔到不同的层中
- 在同一层中组件之间保持内聚性
- 层与层之间保持松耦合
三层模式
三层模式的划分
- 表示层
- 业务逻辑层
- 数据库访问层
三层模式的关系
三层开发遵循的原则
1.上层依赖其下层,依赖关系不跨层
- 表示层不能直接访问数据访问层
- 上层调用下层的结果,取决于下层的实现
2.下层不能调用上一层
3.下一层不依赖上一层
- 上层的改变不会影响下一层
- 下层的改变会影响上一层得到的结果
4.在上一层中不能出现下一层概念
- 分工明确,各司其职
分层开发的特点
1.下层不知道上层的存在
- 仅完成自身的功能
- 不关心结果如何使用
2.每一层仅知道其下层的存在,忽略其他层的存在
- 只关心结果的取得
- 不关心结果的实现过程
- JSTL通常会与EL表达式合作实现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");
%>
你要尽全力保护你的梦想。那些嘲笑你梦想的人,他们注定失败,他们想把你变成和他们一样。我坚信,只要心中有梦想,我就会与众不同。你也是。