三层架构
我们常说的三层框架是由JavaWeb提出的,也就是说这是JavaWeb独有的!
所谓三层是表述层(WEB层)、业务逻辑层(service),以及数据访问层(dao)。
WEB层:包含JSP和Servlet等与WEB相关的内容;
业务层:业务层中不包含JavaWeb API,它只关心业务逻辑;
数据层:封装了对数据库的访问细节;
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zllNA5Bi-1594609384478)(C:\Users\ASUS\AppData\Roaming\Typora\typora-user-images\image-20200702203629770.png)]
创建类的顺序
1. 先创建 entity实体类 以表名命名 表里的列全部封装成属性
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-phfhqwdk-1594609384480)(C:\Users\ASUS\AppData\Roaming\Typora\typora-user-images\image-20200702205702432.png)]
- 在创建 dao 包 里面创建一个以表名命名加上dao命名的一个接口 接口里面是一个方法
package dao;
import entity.Dept;
public interface DeptDao {//数据访问层
//根据部门编号查询部门信息
public Dept findDeptno(int deptno)throws Exception;
}
然后在dao里面再创建一个impl包 包里创建一个类 命名为DeptDaoImpl 这个类implements DeptDao 并且重写他的findDeptno方法
package dao.impl;
import dao.DeptDao;
import entity.Dept;
public class DeptDaoImpl extends BaseDao implements DeptDao {
@Override
public Dept findDeptno(int deptno) throws Exception {
getConnection();
String sql="select * from dept where deptno=?";
Object[] objects={deptno};
rs=query(sql,objects);
Dept dept=null;
if(rs.next()){
String loc=rs.getString("loc");
String dname=rs.getString("dname");
dept=new Dept();
dept.setLoc(loc);
dept.setDname(dname);
}
closeConnection();
return dept;
}
}
-
接下来就是创建Service 然后在里面创建 以表名加Service 为接口名
-
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FWLauBJx-1594609384485)(C:\Users\ASUS\AppData\Roaming\Typora\typora-user-images\image-20200702211002836.png)]
package service; import entity.Dept; public interface DeptService { public Dept finddeptno(int deptno)throws Exception; }
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Tb2mRpen-1594609384487)(C:\Users\ASUS\AppData\Roaming\Typora\typora-user-images\image-20200702211106554.png)]
一个接口对应一个类 一层调用一层
package service.impl;
import dao.DeptDao;
import dao.impl.DeptDaoImpl;
import entity.Dept;
import service.DeptService;
public class DeptServiceImpl implements DeptService {
private DeptDao deptDao=new DeptDaoImpl();
@Override
public Dept finddeptno(int deptno) throws Exception {
return deptDao.findDeptno(deptno);
}
}
最后就是创建web层
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ak3La7YG-1594609384489)(C:\Users\ASUS\AppData\Roaming\Typora\typora-user-images\image-20200702211257217.png)]
package web;
import entity.Dept;
import service.DeptService;
import service.impl.DeptServiceImpl;
import java.util.Scanner;
public class DeptCx {
private DeptService deptService=new DeptServiceImpl();//调用业务逻辑层
public void Docha() throws Exception {
Scanner sc=new Scanner(System.in);
System.out.println("输入你要查找的部门编号");
int deptno=sc.nextInt();
Dept dept = deptService.finddeptno(deptno);
System.out.println(dept.getDname()+"="+dept.getLoc());
}
}
web层调用业务逻辑层,业务逻辑层调用dao层,dao层实现对数据库的操作
每一层都有每一层的接口外加实现类 去实现自己的方法 一层调用一层这就是三层架构
//最后的测试类
public class test {
public static void main(String[] args) {
DeptCx deptcx=new DeptCx();
try {
deptcx.Docha//实现类在调用类的方法
} catch (Exception e) {
e.printStackTrace();
}
}
}
try {
deptcx.Docha//实现类在调用类的方法
} catch (Exception e) {
e.printStackTrace();
}
}
}