第一次做分页,刚刚开始想从网上找一段现成的分页代码拿来直接使用,看了很多头有点晕,但在这种飘飘然的晕中貌似找到点了写分页的灵感,最后决定自己写一段分页代码。
先摆出我写的分页,比较简单较容易懂,后面会上一段标准的分页代码,供参考
原理很简单:用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;
}
}
分享到:
相关推荐
分页测试分页测试分页测试
在"mybatis插件分页测试"中,我们将关注以下关键知识点: 1. **插件配置**:在MyBatis的配置文件(mybatis-config.xml)中,我们需要声明我们的分页插件,指定拦截的目标方法和插件类。例如,可以使用PageHelper...
Mvc4分页测试是开发者在构建Web应用时,为了优化数据展示和交互流程而进行的一项关键操作。在这个过程中,开发者会创建一个控制器(Controller)和视图(View),并通过模型绑定(Model Binding)来实现数据的分页...
### 标题:“ssh分页测试过没有问题” 这个标题表明作者已经对基于SSH框架的分页功能进行了测试,并且确认其没有问题。这暗示了所分享的分页实现方案是稳定可靠的。 ### 描述:“分页每个项目里面差不多都会用到,...
在"大文章分页测试"这个项目中,可能包含了具体的C#代码示例、数据库查询示例以及相关的HTML和JavaScript代码,这些都是实现上述步骤的具体实践。通过学习和分析这个项目,开发者可以掌握在ASP.NET环境中实现大文章...
下面将详细讲解SSM整合的实现过程,以及如何在这个基础上实现分页功能和进行单元测试。 首先,SSM整合的基础是搭建Spring、SpringMVC和MyBatis的环境。Spring作为整体的依赖注入容器,负责管理所有的Bean;...
这篇博客"分页测试语句"可能详细介绍了如何在实际项目中实现分页功能。从提供的标签来看,我们可能会涉及到源码解析和工具的使用。 首先,让我们来探讨一下分页的基本概念。分页是将大量数据分为多个部分(页)进行...
要正常运行测试,请安装SQL2000,并自行修改代码里面的用户名和密码,每页显示记录数请在代码中修改,你也可以添加很多很多数据到数据库里面测试。资源作者:。@易语言自学网。资源界面:。资源下载:。
2) 支持分段式分页(page, page_ping, ping, ping_size), 传统分页(page, page_size), 原始分页(offset-count), since_id分页(prev_id, next_id) 3) 分段式分页, 传统分页, 原始分页在底层均转换为原始分页处理 5. ...
`create_table.php`可能用于创建一个测试数据库表,以便进行PHP与MySQL的分页测试。在实际应用中,数据库分页通常涉及到SQL查询,比如LIMIT和OFFSET关键字,用于限制返回的记录数量。 `test_text.php`和`test_array...
sql分页效率测试源码,内有多和不同方式的分页测试源码。最后一个分页储存相当完美。测试数据在5000000数据下依然很有效率...希望大家多多指教....,测试数据库为sql2005
标题中的“易语言-读取SQL2000 PUBS数据库 authors 表的分页测试”涉及了几个关键知识点: 1. **易语言**:易语言是一种中国本土开发的编程语言,其设计目标是使编程变得简单易学,适合初学者和专业开发者。它的...
"C# Datagridview 分页控件以及测试程序"是一个帮助开发者实现DataGridView分页功能的示例,通过自定义控件和测试程序,开发者可以学习到如何在C#环境中为DataGridView添加分页,提升大数据量展示的效率和用户体验。...
在这个场景中,我们讨论的是一个关于“分页控件”的实践案例,它可能涉及到ASP.NET技术,因为文件名中提到了"aspnet分页测试"。 在ASP.NET框架中,分页通常通过服务器控件如GridView、DataList或Repeater实现。这些...
【压缩包子文件的文件名称列表】: "pageTest" 这个文件名可能表示这是一个关于分页测试的项目或文件。通常,"pageTest"可能包含JSP页面、Servlet、JavaBean、CSS样式表、JavaScript脚本以及数据库配置文件等,用于...
接着,通过`WHILE`循环插入了1000万条数据,用于后续的分页测试。 分页查询通常在Web应用或任何需要展示大量数据的界面中使用,以避免一次性加载所有数据导致性能下降。这里介绍了一个名为`proc_paged_2part_...
"前台分页Demo测试项目支持所有浏览器"这个标题暗示我们这是一个专门针对前端分页功能的示例项目,旨在展示如何在不同浏览器环境下实现分页效果。下面将详细介绍前台分页的相关知识点以及可能涉及的技术和实现方式。...
完成期刊分页测试 完成期刊增加,修改功能 测试模糊匹配Dao测试 测试模糊匹配Service层测试 测试注册 完成登陆页面设计 测试权限检查的Filter 测试MD5加密 测试重构后用户信息插入 测试动态首页跳转功能 测试图片...