Hilo Everybody wellcome to my channel!

今天Lion带大家来学习JAVAWeb的三层构架(JAVAWeb05)


前言:实在抱歉很多天没有更新了,是因为Lion最近在写一个新闻发布系统的小项目,没抽出空来,在明天Lion也会将这个项目发出来供大家参考学习!(求放过!!!)

一、为什么需要用到分层?

由于业务处理的代码与jsp代码混在一起,不易于阅读,不易代码维护,所以我们需要分层,以便我们进行编码工作,而且我们后续会讲jsp页面变成一个没有业务处理代码时我们就可以了!


二、分层的原理?

值得一提的是,分层模式是最常见的一种架构模式,同时是很多架构模式的基础所以我们很有必要掌握!!!

其实什么是分层呢?        

通俗来讲就是我们所知的代码可能存在多个包eg:utli包、ui包、dao包,而我们在ui包直接调用一些方法是直接调用的fao包里面的方法,其实这样是不妥当的,我们需要在中间加一个包来实现隔离的效果。

假设ui包是A,dao包是C,我们以前是直接A调用C这样不妥当,我们需要分层,加一个Biz包假设为B,我们需要A调用B,B调用C来实现我们的各个功能!


那我们通常将ui包称为表示层、Biz包称为业务逻辑层、dao包称为数据库访问层。

他们的关系如下图:

java 代码分层思想 java分层架构设计_html

java 代码分层思想 java分层架构设计_html_02

 层与层之间有严格的依赖关系不能跃层!


 三、怎么分层?

eg:以一个登录界面为案例实现分层效果:

dao(数据库访问层):一个接口一个类

java 代码分层思想 java分层架构设计_java 代码分层思想_03

//接口类
public interface IUserDao {
	
	/**
	 * 实现用户登录
	 * @param name 用户名
	 * @param upwd 密码
	 * @return 用户
	 */
	public User login(String name,String upwd);

}
/**
 * 数据库访问层
 * @author Administrator
 *
 */
public class UserDao implements IUserDao{
 
	private Connection con=null;
	private PreparedStatement ps=null;
	private ResultSet rs=null;
	
 
	@Override
	public User login(String name, 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, name);
			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;
	}

Biz(业务逻辑层):一个包一个类

java 代码分层思想 java分层架构设计_前端_04

在这里是按照个人习惯将类放在了biz包的下一级中的impl包中

//接口类
public interface IUserDao {
	
	/**
	 * 实现用户登录
	 * @param name 用户名
	 * @param upwd 密码
	 * @return 用户
	 */
	public User login(String name,String upwd);

}
/**
 * 业务逻辑层 B
 * @author Administrator
 *
 */
public class UserBiz implements IUserBiz {
	
	//业务逻辑层 调用 数据库访问层c
	IUserDao iud=new UserDao();//里氏替换原则
	
	@Override
	public User login(String name, String upwd) {
		// TODO Auto-generated method stub
		return iud.login(name, upwd);
	}
}

ui(表示层):

这里就是调用Biz业务逻辑层的login方法,而不是直接调用Dao数据库访问层的login方法了:

//表示层a 调用 业务逻辑层b
	IUserBiz iud=new UserBiz();
	//调用登录方法
	User u=iud.login(name, pwd);
	//判断
	if(u!=null){
		//登录成功
		out.print("登录成功");
	}
	else{
		//说明登录失败
		out.print("<script>alert('用户名或者密码错误');location.href='login.jsp';</script>");
    }

以上就是今天的内容啦,我们今天分享了JAVAWeb的三层架构。希望对大家有所帮助!

到这里这次的分享就结束了,欢迎各位继续关注Lion,我们下次再见!

欢迎各位大能多多指导,Lion必将继续努力