伙伴们本次我来分享javaweb的三层架构
使用分层实现业务处理
为什么需要分层呢?
了解一下关于JSP开发的弊端 :
业务处理的代码与JSP代码混在一起,不易于阅读,不易于代码维护。
什么是分层模式?
分层模式是最常见的一种架构模式 分层模式是很多架构模式的基础
分层: 将解决方案的组件分隔到不同的层中 在同一个层中组件之间保持内聚性 层与层之间保持松耦合
三层模式的划分:
表示层
业务逻辑层
数据库访问层
(表示层依赖于业务逻辑层,业务逻辑层依赖 于数据访问层)
三层架构
一、表示层
表示层相当于ui包,界面
表示层依赖于业务逻辑层
二、业务逻辑层
业务逻辑层相当于表示层和数据访问层的中介
在里面写方法名调用方法 如:
/**
* 查询全部
* @return 用户集合
*/
public List<User> getAll();
/**
* 模糊查询
* @param colName 列名
* @param str 关键字
* @return 用户集合
*/
public List<User> getAll(String colName,String str);
/**
* 根据用户id查询
* @param uuid 编号
* @return 用户对象
*/
public User getUser(int uuid);
/**
* 增加用户
* @param u 用户对象
* @return 影响行数
*/
public int addUser(User u);
/**
* 根据id删除用户
* @param uuid 用户编号
* @return 影响行数
*/
public int deleteUser(int uuid);
/**
* 根据id修改用户
* @param u 用户对象
* @param uuid 用户编号
* @return 影响行数
*/
public int updateUser(User u,int uuid);
/**
* 用户登录
* @param uname 用户名
* @param upwd 密码
* @return 用户对象
*/
public User login(String uname,String upwd);
三、数据库访问层
以前怎么写现在就这么写
public User login(String uname, String upwd) {
User u=null;
try {
con=DBHelper.getCon();//获得连接
String sql="select * from tb_0325 where sname=? and spwd=?";//定义sql语句
ps=con.prepareStatement(sql);//获得执行对象
//给占位符赋值
ps.setString(1, uname);
ps.setString(2, upwd);
rs=ps.executeQuery();//获得结果集
//判断
if(rs.next()) {
u=new User();//实例化
u.setUuid(rs.getInt(1));
u.setUname(rs.getString(2));
u.setUpwd(rs.getString(3));
}
} catch (Exception e) {
e.printStackTrace();
} finally {
DBHelper.myClose(con, ps, rs);
}
return u;
}
三层开发遵循的原则:
上层依赖其下层,依赖关系不跨层
表示层不能直接访问数据访问层 上层调用下层的结果,取决于下层的实现
下一层不能调用上一层
下一层不依赖上一层
上层的改变不会影响下一层
下层的改变会影响上一层得到的结果
在上一层中不能出现下一层的概念
分工明确,各司其职
分层开发的特点:
下层不知道上层的存在
仅完成自身的功能 不关心结果如何使用
每一层仅知道其下层的存在,忽略其他层的存在 只关心结果的取得 不关心结果的实现过程 JSTL通常会与EL表达式合作实现JSP页面的编码。
分层开发的优势:
职责划分清晰
无损替换
复用代码
降低了系统内部的依赖程度
好了本次分享到此结束了