前段时间完成了一个项目,其中涉及到分页的功能,下面我将其拿出来与大家进行共享。
第一、是前台的jsp页面代码:
<s:if test="#request.hasprepage==false && #request.hasnextpage==true"><br/>
<%Page pages=(Page)request.getAttribute("pages");
for(int i=1;i<=pages.getTotalPage();i++){
%>
[<a href="curNewsPage.action?currentPage=<%=i %>"><%=i %></a>]
<%}%>
<a href="curNewsPage.action?currentPage=<s:property value="currentPage+1"/>">
<img class="more_news_next" src="common/images/iepiao/next.gif" /></a>
</s:if>
<s:elseif test="#request.hasnextpage==false && #request.hasprepage==false"><br/>
<%Page pages=(Page)request.getAttribute("pages");
for(int i=1;i<=pages.getTotalPage();i++){
%>
[<a href="curNewsPage.action?currentPage=<%=i %>"><%=i %></a>]
<%}%>
</s:elseif>
<s:elseif test="#request.hasnextpage==true && #request.hasprepage==true"><br/>
<a href="curNewsPage.action?currentPage=<s:property value="currentPage-1"/>">
<img class="more_news_next" src="common/images/iepiao/pre.gif"/></a>
<%Page pages=(Page)request.getAttribute("pages");
for(int i=1;i<=pages.getTotalPage();i++){
%>
[<a href="curNewsPage.action?currentPage=<%=i %>"><%=i %></a>]
<%}%>
<a href="curNewsPage.action?currentPage=<s:property value="currentPage+1"/>">
<img class="more_news_next" src="common/images/iepiao/next.gif" /></a>
</s:elseif>
<s:else>
<a href="curNewsPage.action?currentPage=<s:property value="currentPage-1"/>">
<img class="more_news_next" src="common/images/iepiao/pre.gif"/></a>
<%Page pages=(Page)request.getAttribute("pages");
for(int i=1;i<=pages.getTotalPage();i++){
%>
[<a href="curNewsPage.action?currentPage=<%=i %>"><%=i %></a>]
<%}%>
</s:else>
第二、action中的部分代码:
int numb = bulletinService.getTotalNumb();
if(currentPage==0){
currentPage=1;}
Page pages=pageutil.createPage(16, numb, currentPage);
if(currentPage>pages.getTotalPage())
{
currentPage=pages.getTotalPage();
}
if(currentPage<1){
currentPage=1;
}
pages=pageutil.createPage(16, numb, currentPage);
this.setList(bulletinService.findAllByPageStatusType("Bulletin", pages.getBeginIndex(), pages.getEveryPage(), "enteringdate", "desc"));
Map request=(Map)ActionContext.getContext().get("request");
request.put("hasprepage",pageutil.getHasPrePage(currentPage));
request.put("hasnextpage", pageutil.getHasNextPage(pages.getTotalPage(), currentPage));
request.put("pages",pages);
第三、service实现类代码:
public List findAllByPageStatusType(String table,int start,int limit,String orderby,String desc){
return this.bulletinDao.findAllByPageStatusType(table, start, limit, orderby, desc);
}
第四、分页工具类代码:
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 Page createPage(Page page,int totalCount) {
int everyPage = getEveryPage(page.getEveryPage());
int currentPage = getCurrentPage(page.getCurrentPage());
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 % 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;
}
}
第五、分页基类代码:
public class Page {
// 1.(everyPage)
private int everyPage;
// 2.(totalCount)
private int totalCount;
// 3.(totalPage)
private int totalPage;
// 4.(currentPage)
private int currentPage;
// 5.(beginIndex)
private int beginIndex;
// 6.(hasPrePage)
private boolean hasPrePage;
// 7.(hasNextPage)
private boolean hasNextPage;
public Page(int everyPage2, int totalCount2, int totalPage2,
int currentPage2, int beginIndex2, boolean hasPrePage2,
boolean hasNextPage2) {
// TODO Auto-generated constructor stub
this.everyPage=everyPage2;
this.totalCount=totalCount2;
this.totalPage=totalPage2;
this.currentPage=currentPage2;
this.beginIndex=beginIndex2;
this.hasPrePage=hasPrePage2;
this.hasNextPage=hasNextPage2;
}
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;
}
}
***不足之处还请各位多多指教***
分享到:
相关推荐
在探讨Struts2框架下的增删改查以及分页查询功能时,我们首先需要理解Struts2框架本身。Struts2是Apache软件基金会的一个开源Web应用框架,它继承了Struts1的一些特性,并在此基础上进行了大量的改进和扩展,提供了...
本资源详细介绍了如何在Struts2中自定义分页标签,使得开发过程更加便捷。 在Struts2中,分页通常涉及到以下几个关键步骤: 1. **创建Action类**:首先,你需要创建一个Action类,该类将处理用户的请求,包括获取...
Struts2分页源码技术是Web开发中一个重要的实践,尤其是在处理大数据量时,能够有效地提高用户体验,避免一次性加载过多数据导致页面响应慢。在本文中,我们将深入探讨Struts2分页技术的实现原理、应用方法以及与...
该文档详细描述了struts2版本的分页显示,值得一读
用Struts2+mysql实现的简单信息录入,分页查询
本文将详细介绍Struts2实现分页效果的第二种方法。 在Struts2中,实现分页通常涉及以下几个关键步骤: 1. **模型(Model)**:首先,我们需要一个实体类来存储待分页的数据,例如`User`。然后,创建一个`PageBean`类...
下面是我用Struts2做的一个分页显示实例,基本的思路是:把数据库表中的每一行数据封装成一个对象,用一个返回类型为List的方法返回这些对象,接着在Struts2的action里面定义一个List属性,用这个List来接收从数据库...
【hibernate+struts2分页代码】是关于如何在Java Web开发中结合Hibernate ORM框架和Struts2 MVC框架实现数据分页的功能。在Web应用程序中,分页是提高用户体验的重要手段,它允许用户逐步浏览大量数据,而无需一次性...
1. **创建Action类**:这是Struts2的核心组件,负责处理用户的请求。在Action类中,我们需要定义与分页相关的属性,如当前页数、每页显示的记录数以及总记录数等。同时,Action类需要包含处理分页请求的方法。 2. *...
MyBatis增 删 改 查 struts2分页
### Struts2 实现分页及 `<s:bean>` 标签详解 #### 一、Struts2 分页概述 在 Java Web 开发中,为了提高用户体验并减轻服务器负担,通常采用分页技术来展示数据。Struts2 框架提供了一套强大的工具和标签库来帮助...
1. **Action类**:在Struts2中,Action类是处理用户请求的中心。为了实现分页,我们需要创建一个包含分页参数(如当前页数、每页记录数)的Action类,并提供相应的业务逻辑。 2. **模型(Model)**:模型层负责与...
根据提供的标题、描述、标签及部分内容,我们可以了解到这篇文章主要探讨的是如何在Struts2与Hibernate框架结合下实现分页功能。接下来将详细解析Struts2与Hibernate如何协作完成这一任务。 ### Struts2与Hibernate...
Struts2实现分页功能,代码完整简洁易懂,可以直接拿去使用,欢迎拍砖
这是struts的一个练习 这是struts的一个练习这是struts的一个练习这是struts的一个练习
Struts2分页是Web开发中的一个重要概念,它主要用于处理大量数据时,避免一次性加载所有数据导致页面响应慢或者浏览器崩溃。在这个场景中,我们提到的是使用自定义标签实现类似于百度分页的效果,这是一种常见的用户...
1. **创建自定义标签**:在Struts2中,自定义标签是通过实现`org.apache.struts2.views.jsp.TagSupport`接口来创建的。你需要创建一个Java类,继承这个接口,并实现相关方法。例如,你可以创建一个名为`PagingTag`的...
2. **Action类**:在Struts框架中,Action类是控制器层的核心,它负责接收用户的请求,根据请求参数执行相应的业务逻辑,并返回一个表示结果的ActionForward对象,这个对象指定了视图的跳转方向。 3. **.struts-...
本篇文章将深入探讨如何在Struts2框架下结合FreeMarker实现分页功能,帮助开发者更高效地处理大数据量的展示问题。 首先,了解分页的基本原理。分页是用来解决一次性加载大量数据导致页面加载过慢或内存压力过大的...
Struts2分页技术是Java Web开发中一种常见的数据展示方式,它允许用户在大量数据中按需加载和浏览信息,提升用户体验。本教程将详细讲解如何在Struts2框架中实现分页功能,并结合MySQL数据库进行数据操作。 首先,...