三层架构(2学时)
上一节
下一节
问题01:三层架构
问题02:DAO设计模式
数据访问对象模式(Data Access Object Pattern)或 DAO 模式用于把低级的数据访问 API 或操作从高级的业务服务中分离出来。
问题03:程序结构示意图
问题04:设计公共DAO接口
public interface GenericDAO<E,PK extends Serializable> { public boolean insert (E data); public boolean delete(PK id); public boolean update(PK id, E data); public ArrayList<E> selectAll(); public E select(PK id); }
问题05:设计POJO的DAO接口与实现类
public class User { private String username; private String password; ……
import cn.pzhu.bean.User; public interface UserDAO extends GenericDAO<User, String>{ }
问题06:设计业务层接口以及实现类
业务层接口
针对业务进行接口设计:参数列表和返回值
业务层实现
依赖于DAO层
实现业务功能
问题07:实现DAO层
1. 获得连接
Connection connection = JDBCUtil.getConnection();
2. 实现CRUD
获得连接
编写SQL
创建命令
执行命令
处理结果
* 返回T * 返回List<T> * 返回int或boolean
释放资源
问题08:实现业务层
1. 获得DAO对象
UserDAO dao = new UserDAOImp(); XXXDAO dao = new XXXDAOImp();
2. 实现业务
返回boolean
返回更加详细的信息
返回所需数据List
以“用户注册”为例,业务只需要知道是否注册成功,失败的原因(一个业务)
DAO层需要先进行查询,然后再进行插入(两个操作)
问题09:实现表现层
1. 设计JSP页面
以“用户注册”为例
2. 设计Servlet控制器
PrintWriter out = response.getWriter(); String username = request.getParameter("username"); String password = request.getParameter("password"); Message msg = userService.regist(new User(username,password)); if (msg.isSuccess()) { out.println("<script>alert('"+msg.getMsg()+"!');" + "window.location.href='index.jsp'</script>"); } else { out.println("<script>alert('"+msg.getMsg()+"!');" + "window.location.href='regist.jsp'</script>"); }