- 序言 : 我们经常在网站上见过或者平常生活中自己就用过,当展示的页面数据过多时,我们都是分页查看。这样既方便又会降低视觉疲劳。今天这只菜鸟就写一个分页的demo,巩固一下这知识。
- 技术: je22,jdbc,jstl
- 数据库 :mysql
- 开发工具:eclipse,Navicat
- 设计思想:mvc设计模式
一:分页思想:一般的分页界面都是:尾页->上一页->显示的页数(比如1,2,3,4,5页)->下一页->尾页。因此我们首先定义这几个数据对象
- pageNow; // 当前页
- totolRecord; // 总记录条数
- pageSize; // 页面数据条数
- pageTol; // 页面总数
- startIndex; // 数据库查询的初始位置(0为初始值)
- start; // 页面显示的首页(设为1)
- end; // 页面显示的尾页
- List<Student> list; //将每页要显示的数据放在list集合中
/**
* 比如当前页为第4页,此时界面上显示2,3,4,5,6页 (每次都只有5页共点击查询)。start就为2,end就为6
*/
先看显示效果:这里因为数据有限但为了页面效果显示,我把pagesize设为1,pageRecord为10。
二:Bean对象:上面八个属性:
- pageNow、pageSize、totalRecord:通过构造方法就能得到。
- pageNow请求页面提交过来的参数,pageSize自己设置,totalRecord是查询数据库得到。
- totalPage、startIndex、start、end是通过算法得出。
- list需要通过查询数据库再通过set方式得到。
三:数据库设计:由于只是一个分页小demo,只要一张表就够了,里面存储学生信息。
四:项目架构:先看项目视图
这里其实就体现了mvc的设计模式;大体分为三层: 显示层(jsp),bean层(dao,entity),控制层(service,servlet)
讲讲这里这些包里面的东西以及作用:
- dao: 一些与数据库相关的操作,比如crud操作。(这里我将数据库基本crud,以及数据库连接操作封装到一个BaseDAO类,供其它DAO进行调用)
- daoImpl::dao层接口的具体实现;这样方便对接口编程,用来将具体实现与业务分开。
- entity:一些实体属性:就是对数据库字段的封装。
- service:其实就是在该层将我们所需要的PageBean对象构建好,返回给上一层。
- serveceImpl:不多讲,就是对service的实现。
- servlet:控制层,响应服务,与jsp进行“交互”。
- test:这个就是对项目的测试,我们常说的“白盒测试”就是像这样在项目中进行测试,debug等操作。
- util:工具包:这里主要就是封装了一些一些操作,避免代码冗余,对项目健壮性有较好的支持。
- resource:配置 属性文件,数据库连接时直接从这读取信息。(程序中的不可变量,非集合形态的可以写成静态常量;集合形态的可以写成enum类;程序初始化参数,本地可更改变量,数据较少可以存放于properties文件。大量数据