第一次做分页,刚刚开始想从网上找一段现成的分页代码拿来直接使用,看了很多头有点晕,但在这种飘飘然的晕中貌似找到点了写分页的灵感,最后决定自己写一段分页代码。
先摆出我写的分页,比较简单较容易懂,后面会上一段标准的分页代码,供参考
原理很简单:用page对象来控制页面信息、改变页面内容
1、Struts 2 下运行
核心方法:根据 LIST<> 中的 subList(startIndex,endIndex);方法
// Page
public class Page {
private int totalCount; //总条目
private int totalPage; //总页面
private int currentCount; //当前条目
private int currentPage; //当前页面
public Page(){
}
public int getTotalCount() {
return totalCount;
}
public void setTotalCount(int totalCount) {
this.totalCount = totalCount;
}
public int getTotalPage() {
return totalPage;
}
public void setTotalPage(int totalPage) {
this.totalPage = totalPage;
}
public int getCurrentCount() {
return currentCount;
}
public void setCurrentCount(int currentCount) {
this.currentCount = currentCount;
}
public int getCurrentPage() {
return currentPage;
}
public void setCurrentPage(int currentPage) {
this.currentPage = currentPage;
}
@Override
public String toString() {
// TODO Auto-generated method stub
return "totalCount"+totalCount+"\ttotalPage"+totalPage+"\tcurrentCount"+currentCount+"\tcurrentPage"+currentPage;
}
}
//Action 中代码 在Action中分页
public String execute() throws Exception {
HttpServletRequest request = ServletActionContext.getRequest();
HttpSession session = request.getSession();
ISubjectService subjectSer = new SubjectServiceImpl();
//得到考卷
ArrayList<Subject> arrSubject = subjectSer.querySubject(); //将要分段的内容放置到容器
//****************************************************
//分页
int showCount = 15; //展示页面
int totalCount = arrSubject.size(); //总条目
int totalPage = arrSubject.size()/showCount; //总页数
Page page = (Page)session.getAttribute("page"); //得到页面
if(pageCount<0){
session.setAttribute("outOfPage", -1); //首页了
System.out.println("首页了");
return SUCCESS;
}
if(pageCount>totalPage){
session.setAttribute("outOfPage", 1); //尾页了
System.out.println("尾页了");
return SUCCESS;
}
if(page==null){
page = new Page();
page.setCurrentCount(0);
page.setCurrentPage(0);
page.setTotalCount(totalCount); //设置总条目
page.setTotalPage(totalPage); //设置总页数
}
//page.setTotalCount(totalCount);
//page.setTotalPage(totalPage);
page.setCurrentPage(pageCount); //设置当前条目
int currentPage = page.getCurrentPage(); //当前页面
int currentCount = page.getCurrentCount(); //当前条目
int startCount = currentPage*showCount;
int endCount = currentPage*showCount + showCount;
List<Subject> listSubject = null ;
if(totalPage==pageCount){
listSubject = arrSubject.subList(startCount, totalCount);
}else{
listSubject = arrSubject.subList(startCount, endCount);
}
session.setAttribute("page", page); //将页面对象传递到页面
//****************************************************
session.setAttribute("arrSubject", listSubject); //将分页得到的结果放入session
return super.execute();
}
<!-- 页面分页内容 -->
<tr>
<td height="32" colspan="8" bgcolor="#CCCCCC">
<input type="button" value="返回" onclick="javascript:window.location.href='loginSuccessTeacher.jsp'"/>
<a href="checkSubjectAction?pageCount=${session.page.currentPage-1 }" <!-- 改变当前页面 -->style="color:gray;text-decoration:none " ><font size="-1"> 上一页</font></a>
<font style="color:gray;text-decoration:none " size="-1">|</font>
<a href="checkSubjectAction?pageCount=${session.page.currentPage+1 }"<!-- 改变当前页面 -->style="color:gray;text-decoration:none " ><font size="-1"> 下一页</font></a>
<font style="color:gray;text-decoration:none " size="-1">当前页面:${session.page.currentPage +1 } /${session.page.totalPage +1 }</font>
</td>
</tr>
2、标准分页 Struts2 + hibernate
//Page
public class Page {
private int everyPage; //每页显示记录数
private int totalCount; //总记录数
private int totalPage; //总页数
private int currentPage; //当前页
private int beginIndex; //查询起始点
private boolean hasPrePage; //是否有上一页
private boolean hasNextPage; //是否有下一页
public Page(int everyPage, int totalCount, int totalPage,
int currentPage,int beginIndex, boolean hasPrePage,
boolean hasNextPage) { //自定义构造方法
this.everyPage = everyPage;
this.totalCount = totalCount;
this.totalPage = totalPage;
this.currentPage = currentPage;
this.beginIndex = beginIndex;
this.hasPrePage = hasPrePage;
this.hasNextPage = hasNextPage;
}
public Page(){} //默认构造函数
public int getEveryPage() { //获得每页显示记录数
return everyPage;
}
public void setEveryPage(int everyPage) {//设置每页显示记录数
this.everyPage = everyPage;
}
public int getTotalCount() {//获得总记录数
return totalCount;
}
public void setTotalCount(int totalCount) {//设置总记录数
this.totalCount = totalCount;
}
public int getTotalPage() {//获得总页数
return totalPage;
}
public void setTotalPage(int totalPage) {//设置总页数
this.totalPage = totalPage;
}
public int getCurrentPage() {//获得当前页
return currentPage;
}
public void setCurrentPage(int currentPage) {//设置当前页
this.currentPage = currentPage;
}
public int getBeginIndex() {//获得查询起始点
return beginIndex;
}
public void setBeginIndex(int beginIndex) {//设置查询起始点
this.beginIndex = beginIndex;
}
public boolean isHasPrePage() {//获得是否有上一页
return hasPrePage;
}
public void setHasPrePage(boolean hasPrePage) {//设置是否有上一页
this.hasPrePage = hasPrePage;
}
public boolean isHasNextPage() {//获得是否有下一页
return hasNextPage;
}
public void setHasNextPage(boolean hasNextPage) {//设置是否有下一页
this.hasNextPage = hasNextPage;
}
}
//页面信息
public class PageResult {
private Page page; //分页信息
private List list; //记录信息
public PageResult(Page page, List list) {
this.page = page;
this.list = list;
}
public Page getPage() {
return page;
}
public void setPage(Page page) {
this.page = page;
}
public List getList() {
return list;
}
public void setList(List list) {
this.list = list;
}
}
/*
* 分页信息辅助类
*/
public class PageUtil {
public static Page createPage(int everyPage,int totalCount,int currentPage) {//创建分页信息对象
everyPage = getEveryPage(everyPage);
currentPage = getCurrentPage(currentPage);
int totalPage = getTotalPage(everyPage, totalCount);
int beginIndex = getBeginIndex(everyPage, currentPage);
boolean hasPrePage = getHasPrePage(currentPage);
boolean hasNextPage = getHasNextPage(totalPage, currentPage);
return new Page(everyPage, totalCount, totalPage, currentPage,
beginIndex, hasPrePage, hasNextPage);
}
public static int getEveryPage(int everyPage) { //获得每页显示记录数
return everyPage == 0 ? 10 : everyPage;
}
public static int getCurrentPage(int currentPage) { //获得当前页
return currentPage == 0 ? 1 : currentPage;
}
public static int getTotalPage(int everyPage,int totalCount) {//获得总页数
int totalPage = 0;
if(totalCount != 0 &&totalCount % everyPage == 0) {
totalPage = totalCount / everyPage;
} else {
totalPage = totalCount / everyPage + 1;
}
return totalPage;
}
public static int getBeginIndex(int everyPage,int currentPage) {//获得起始位置
return (currentPage - 1) * everyPage;
}
public static boolean getHasPrePage(int currentPage) {//获得是否有上一页
return currentPage == 1 ? false : true;
}
public static boolean getHasNextPage(int totalPage, int currentPage) { //获得是否有上一页
return currentPage == totalPage || totalPage == 0 ? false : true;
}
}
分享到:
相关推荐
分页测试分页测试分页测试
Mvc分页测试
这个是使用mybatis插件进行分页的一个测试的小例子
SSM整合实现分页以及单元测试代码
分页每个项目里面差不多都会用到 给大家提供一个很好用的分页 写的很详细 我测试过没问题 大家试试看
asp.net(c#)实现的一篇文章可以分页的代码,已经测试过
要正常运行测试,请安装SQL2000,并自行修改代码里面的用户名和密码,每页显示记录数请在代码中修改,你也可以添加很多很多数据到数据库里面测试。资源作者:。@易语言自学网。资源界面:。资源下载:。
2) 支持分段式分页(page, page_ping, ping, ping_size), 传统分页(page, page_size), 原始分页(offset-count), since_id分页(prev_id, next_id) 3) 分段式分页, 传统分页, 原始分页在底层均转换为原始分页处理 5. ...
sql分页效率测试源码,内有多和不同方式的分页测试源码。最后一个分页储存相当完美。测试数据在5000000数据下依然很有效率...希望大家多多指教....,测试数据库为sql2005
1.2.6分页测试 7 1.2.7交互性数据测试 8 1.2.9安全测试 8 1.3测试方法 9 1.3.1抽查测试 9 1.3.2针对性测试 8 2软件测试 9 2.1测试流程 9 2.2测试内容 9 2.3测试方法 9 2.4测试完成后测试报告设计规范 9 3针对现阶段...
完成期刊分页测试 完成期刊增加,修改功能 测试模糊匹配Dao测试 测试模糊匹配Service层测试 测试注册 完成登陆页面设计 测试权限检查的Filter 测试MD5加密 测试重构后用户信息插入 测试动态首页跳转功能 测试图片...
NULL 博文链接:https://cqh520llr.iteye.com/blog/1218766
=========================分页说明============================ 技术应用 基于asp+vb写的分页 测试:page_demo.asp <br>特点:1,支持多国语言 2,支持多样式,方便更改样式 3,灵活,易于使用...
用了一下午时间写的一个Datagridview分页控件,附上了控件所用的测试程序,希望对大家有所帮助。
聚合查询分页测试termsAgg.size(2147483647); //指定最大统计显示多少行步骤1:全量聚合,size设置为: 2147483647。 ES5.X/6.X版本设置为2147483647 ,它等于2^31-1,请看该地方代码
对于menu操作的一个用例,完成了翻页功能
前台分页 实现各种分页功能。
8. 完成期刊分页测试 9. 完成期刊增加,修改功能 10. 测试模糊匹配Dao测试 11. 测试模糊匹配Service层测试 12. 测试注册 13. 完成登陆页面设计 14. 测试权限检查的Filter 15. 测试MD5加密 16. 测试重构后用户信息...
jsf分页的源码,很好用!详细源码 测试通过!