一、三层架构
与MVC设计模式的目标一致:都是为了解耦合、提高代码复用;
区别:二者对项目理解的角度不同。
1.三层组成
- 表示层(USL,User Show Layer:视图层)
- 前台:对应于MVC中的View,用于和用户交互、界面的显示
jsp js html css jquery等web端前端技术
代码位置:WebContent - 后台:对应于MVC中Controller,用于控制跳转、调用业务逻辑层
Servlet(SpringMVC Struts2)
代码位置:位于xxx.servlet包中
- 前台:对应于MVC中的View,用于和用户交互、界面的显示
- 业务逻辑层(BLL,Business:Service层)
- 接收表示层的请求调用
- 组装数据访问层,逻辑性的操作
- 一般位于xxx.service包(xxx.manage xxx.bll)
- 数据访问层(DAL,Data Acess Layer:Dao层)
- 直接访问数据库的操作,原子性的操作(增删改查)
- 一般位于xxx.dao包
2.三层间的关系
上层将请求传递给下层,下层处理后返回给上层
上层依赖于下层,依赖:代码的理解,就是持有成员变量,或者理解为:有A的前提是必须先有B(先有数据库,才可能有DAO层,DAO依赖于数据库)
二、分页SQL
要实现分页,必须知道某一页的数据从哪里开始到哪里结束
分页:每页显示m条数据,第n页的数据:
sqlsever/oracle:从1开始计数
第(n-1)*m+1条——第n*m条
mysql:从0开始计数
第n*m条——第(n+1)*m-1条
MySql实现分页的sql:
limit 开始,多少条
页面大小:每页显示的数据量
MySql的分页语句:
select * from student limit 页数*页面大小,页面大小
三、分页实现
5个变量(属性)
- 数据总数
查数据库,select count(*) ... - 查数页面大小(每页显示的数据条数)
- 总页数
程序自动计算
总页数=数据总数%页面大小==0? 数据总数/页面大小:数据总数/页面大小+余数 - 当前页(页码)
- 当前页的对象集合(实体类集合):每页所显示的所有数据
查数据库,分页sql