JavaWeb(三层架构)

1.为什么需要三层架构?

        业务处理的代码与JSP代码混在一起,不易于阅读,不易于代码维护

2.分层结构的模式

        (1)分层模式是最常见的一种架构模式

        (2)分层模式是很多架构模式的基础

3.分层

        将解决方案的组件分隔到不同的层中

        在同一个层中组件之间保持内聚性

        层与层之间保持松耦合

4.三层模式的划分

        表示层

        业务逻辑层

        数据库访问层

5.层与层之间的关系

        表示层依赖于业务逻辑层

        业务逻辑层依赖 于数据访问层

JavaWeb(三层架构)_第1张图片

《 实现分层

首先创建用户实体类

JavaWeb(三层架构)_第2张图片

 其次编写数据访问层

        数据访问接口

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;
    	//调用创建数据库连接的方法 获得连接,实现用户名和密码查询*/
}

编写业务逻辑层        

编写业务逻辑接口(业务逻辑通常以Biz命名)

//编写业务逻辑控制接口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");
%>

1. 三层架构编写遵循的原则

上层依赖其下层,依赖关系不跨层

        表示层不能直接访问数据访问层

        上层调用下层的结果,取决于下层的实现

下一层不能调用上一层

下一层不依赖上一层

        上层的改变不会影响下一层

        下层的改变会影响上一层得到的结果

在上一层中不能出现下一层的概念

        分工明确,各司其职

2.分层开发的特点

下层不知道上层的存在

        仅完成自身的功能

        不关心结果如何使用

每一层仅知道其下层的存在,忽略其他层的存在

        只关心结果的取得

        不关心结果的实现过程

        JSTL通常会与EL表达式合作实现JSP页面的编码

3.分层开发的优势

        职责划分清晰

        无损替换

        复用代码

        降低了系统内部的依赖程度

你可能感兴趣的:(java,web)