栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

JavaWeb之三层架构

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JavaWeb之三层架构

目录

为什么要分层分层模式分层三层模式的划分层与层之间的关系三层开发遵循的原则分层开发的特点分层开发的优势栗子:分层实现用户登录

为什么要分层

(JSP开发的弊端 ) 业务处理的代码与JSP代码混在一起,不易于阅读,不易于代码维护。

分层模式

是最常见的一种架构模式 。是很多架构模式的基础。 分层

将解决方案的组件分隔到不同的层中 ,在同一个层中组件之间保持内聚性,层与层之间保持松耦合

三层模式的划分

表示层业务逻辑层数据库访问层 层与层之间的关系

表示层依赖于业务逻辑层业务逻辑层依赖于数据访问层 三层开发遵循的原则

上层依赖其下层,依赖关系不跨层下一层不能调用上一层下一层不依赖上一层在上一层中不能出现下一层的概念 分层开发的特点

下层不知道上层的存在(也就是仅仅只完成自己的功能功能,不会去关心结果的使用)每一层仅知道其下层的存在,忽略其他层的存在(只关心结果不关心过程,JSTL通常会与EL表达式合作实现JSP页面的编码
) 分层开发的优势

职责划分清晰无损替换复用代码降低了系统内部的依赖程度 栗子:分层实现用户登录

    创建用户实体类
package com.zking.entity;

public class Users {
	private String uuid;
	private String uname;
	private String upwd;
	private String usex;
	private int uage;
	private String uhonney;
	private String uaddress;
	private String upower;
	private String ucomment;
	
	public String getUuid() {
		return uuid;
	}
	public void setUuid(String uuid) {
		this.uuid = uuid;
	}
	public String getUname() {
		return uname;
	}
	public void setUname(String uname) {
		this.uname = uname;
	}
	public String getUpwd() {
		return upwd;
	}
	public void setUpwd(String upwd) {
		this.upwd = upwd;
	}
	public String getUsex() {
		return usex;
	}
	public void setUsex(String usex) {
		this.usex = usex;
	}
	public int getUage() {
		return uage;
	}
	public void setUage(int uage) {
		this.uage = uage;
	}
	public String getUhonney() {
		return uhonney;
	}
	public void setUhonney(String uhonney) {
		this.uhonney = uhonney;
	}
	public String getUaddress() {
		return uaddress;
	}
	public void setUaddress(String uaddress) {
		this.uaddress = uaddress;
	}
	public String getUpower() {
		return upower;
	}
	public void setUpower(String upower) {
		this.upower = upower;
	}
	public String getUcomment() {
		return ucomment;
	}
	public void setUcomment(String ucomment) {
		this.ucomment = ucomment;
	}
	
	@Override
	public String toString() {
		return "Users [uuid=" + uuid + ", uname=" + uname + ", upwd=" + upwd + ", usex=" + usex + ", uage=" + uage
				+ ", uhonney=" + uhonney + ", uaddress=" + uaddress + ", upower=" + upower + ", ucomment=" + ucomment
				+ "]";
	}
	
	public Users() {
		// TODO Auto-generated constructor stub
	}
	
	
	public Users(String uuid, String uname, String upwd, String usex, int uage, String uhonney, String uaddress,
			String upower, String ucomment) {
		super();
		this.uuid = uuid;
		this.uname = uname;
		this.upwd = upwd;
		this.usex = usex;
		this.uage = uage;
		this.uhonney = uhonney;
		this.uaddress = uaddress;
		this.upower = upower;
		this.ucomment = ucomment;
	}
	
	public Users( String uname, String upwd, String usex, int uage, String uhonney, String uaddress,
			String upower, String ucomment) {
		super();
		this.uname = uname;
		this.upwd = upwd;
		this.usex = usex;
		this.uage = uage;
		this.uhonney = uhonney;
		this.uaddress = uaddress;
		this.upower = upower;
		this.ucomment = ucomment;
	}
	
	
	public Users( String uname, String upwd) {
		super();
		this.uname = uname;
		this.upwd = upwd;
	}
	
}
    编写数据访问层

数据访问接口

//数据访问接口
	package com.zking.dao;

import java.util.List;

import com.zking.entity.Users;

public interface IUsersDao {

	
	int login(Users users);
	int insert(Users users);
	int update(Users users);
	List query(Users users);
}

数据访问接口的实现

// 数据访问接口的实现
package com.zking.dao.impl;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.List;

import com.zking.dao.IUsersDao;
import com.zking.entity.Users;
import com.zking.util.DBhelper;

public class UsersDao implements IUsersDao{

	private PreparedStatement ps;
	private List listusers;
	private Connection con;
	private ResultSet rs;
	private boolean flag;
	private String sql;
	private Users users;
	private int upower;
	private int n;
	
	@Override
	public int login(Users users) {
		try {
			con = DBhelper.getCon();
			sql = "select upower from tb_users where uname=? and upwd=?";
			ps = con.prepareStatement(sql);
			ps.setString(1, users.getUname());
			ps.setString(2,users.getUpwd() );
			rs = ps.executeQuery();
			if(rs.next()) {
				upower = rs.getInt(1);
			}
			
			DBhelper.closeObj(con, ps, rs);
			
		} catch (Exception e) {
			e.printStackTrace();
		}
		return upower;
	}

	@Override
	public int insert(Users users) {
		// TODO Auto-generated method stub
		return 0;
	}

	@Override
	public int update(Users users) {
		// TODO Auto-generated method stub
		return 0;
	}

	@Override
	public List query(Users users) {
		// TODO Auto-generated method stub
		return null;
	}
}
    编写业务逻辑层

编写业务逻辑控制接口IUserBiz

//编写业务逻辑控制接口IUserBiz
package com.zking.biz;

import java.util.List;
import com.zking.entity.Users;

public interface IUsersBiz {
	int login(Users users);
	int insert(Users users);
	int update(Users users);
	List query(Users users);
}

业务逻辑层接口实现

// 业务逻辑层接口实现
	package com.zking.biz.impl;

import java.util.List;

import com.zking.biz.IUsersBiz;
import com.zking.dao.IUsersDao;
import com.zking.dao.impl.UsersDao;
import com.zking.entity.Users;

public class UsersBiz implements IUsersBiz{
//	在业务逻辑层biz里面调用数据访问层
	IUsersDao iud = new UsersDao();// 里氏替换原则
	
	@Override
	public int login(Users users) {
		return iud.login(users);
	}

	@Override
	public int insert(Users users) {
		return insert(users);
	}

	@Override
	public int update(Users users) {
		return update(users);
	}

	@Override
	public List query(Users users) {
		return query(users);
	}
}

编写表示层
编写登录jps界面

//   编写登录jps界面
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>




Insert title here


	
账号:
密码:

jsp界面调用业务逻辑层

//  jsp界面调用业务逻辑层
<%@page import="com.zking.entity.Users"%>
<%@page import="com.zking.biz.impl.UsersBiz"%>
<%@page import="com.zking.biz.IUsersBiz"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
	request.setCharacterEncoding("utf-8");
	String uname = request.getParameter("uname");
	String upwd = request.getParameter("upwd");

	Users users = new Users();
	users.setUname(uname);
	users.setUpwd(upwd);
	
//  调用业务逻辑层登录方法
	IUsersBiz iub = new UsersBiz();
	int n = iub.login(users);
%>
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/754140.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号