二、三层架构
(1)表示层(UI) web层 显示层
表示层又称表现层或视图层或用户界面层 UI(User Interface layer):就是实现与用户交互的功能,将用户的需求传达和反馈,即用于接受用户输入的数据,同时反馈相关的输出数据展示给用户。
【职责】收集用户的数据和需求、展示数据
(2)业务逻辑层(BLL)
业务逻辑层 BLL(Business Logic Layer):是连接表示层和数据访问层的桥梁,实现业务逻辑的功能。可以对接受到的数据进行处理、执行相关的计算等一些逻辑操作。业务逻辑层通过调用数据访问层的各种操作方法,将这些方法按一定的逻辑组合起来实现具体需求,将这个过程比作搭积木的过程。
【职责】数据加工处理、处理DAO完成业务实现
(3)数据访问层(DAL )
数据访问层又称持久层 DAL (Data access layer):主要用来操作数据库中的数据,实现数据的增加、删除、修改、查询等操作,并将操作结果反馈到业务逻辑层 BBL。比如在数据访问层定义了一些操作数据的方法,即增、删、改、查的方法,将这些方法比作一块块的积木。
【职责】想业务层提供数据,将业务层加工后的数据同步到数据库
创建三级架构:
编写接口——(业务逻辑层):
package com.zking.news.biz;
import com.zking.news.entity.Users;
/**
* 用户功能接口(业务逻辑层)
* @author Administrator
*
*/
public interface IUsersBiz {
/**
* 用户登录
*/
Users usersLogin(Users users);
}
实现接口:
package com.zking.news.biz.impl;
import com.zking.news.biz.IUsersBiz;
import com.zking.news.dao.IUsersDao;
import com.zking.news.dao.impl.UsersDaoImpl;
import com.zking.news.entity.Users;
public class UsersBizImpl implements IUsersBiz{
//实例化DAO
IUsersDao iud = new UsersDaoImpl();
@Override
public Users usersLogin(Users users) {
return iud.usersLogin(users);
}
}
简单布局:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action = "doLogin.jsp" method = "post">
账户: <input type ="text" name = "username"/>
<br>
密码 <input type = "password" name = "password"/>
<br>
<input type = "submit" value = "登录"/>
</form>
</body>
</html>
中转站(使用三级架构):
<%@page import="com.zking.news.biz.impl.UsersBizImpl"%>
<%@page import="com.zking.news.biz.IUsersBiz"%>
<%@page import="com.zking.news.dao.impl.UsersDaoImpl"%>
<%@page import="com.zking.news.dao.IUsersDao"%>
<%@page import="com.zking.news.entity.Users"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
//1.设置编码
request.setCharacterEncoding("utf-8");
//2获取数据
String username = request.getParameter("username");
String password = request.getParameter("password");
//3.封装实体
Users users = new Users(username,password);
//实例化业务逻辑层
IUsersBiz iub = new UsersBizImpl();
Users u = iub.usersLogin(users);
if(null!=u){
//OK
request.getRequestDispatcher("home.jsp").forward(request, response);
}else{
//no
response.sendRedirect("login.jsp");
}
%>
三层架构的优势:
- 1,结构清晰、耦合度低
- 2,可维护性高,可扩展性高
- 3,利于开发任务同步进行, 容易适应需求变化
三层架构的优劣势:
- 1、降低了系统的性能。这是不言而喻的。如果不采用分层式结构,很多业务可以直接造访数据库,以此获取相应的数据,如今却必须通过中间层来完成。
- 2、有时会导致级联的修改。这种修改尤其体现在自上而下的方向。如果在表示层中需要增加一个功能,为保证其设计符合分层式结构,可能需要在相应的业务逻辑层和数据访问层中都增加相应的代码
- 3、增加了代码量,增加了工作量