上面就是我制作的分页效果
(1)首先定义一个分页功能的类:
public class PageVo {
/**保存从数据库中读取出的全部数据*/
private List list;
/**保存每一页的信息*/
private List pageList=new ArrayList();
/**保存当前页*/
private List pageNow;
/**当前的页数*/
private int pageNo=1;
/**一共有多少页*/
private int pageMax;
/**每一页显示多少条记录*/
private int pageRowNum;
public PageVo(List list,int pageRowNum)
{
this.list=list;//获取到数据库的全部信息
this.pageRowNum=pageRowNum;//获取每一页要显示多少条记录
splitpage();//计算分页算法
getNowList();//取出每一页的数据
}
/**
* 分页算法,得出最大的页数以及每一页存放的数据
*/
public void splitpage()
{
//得出一共有多少条记录
int size=list.size();
//这个if语句主要是判断取整的问题,如果总得条数除以每一页的显示的条数为0的话
//那么一共可以分为pageMax页,如果不为0,那么要记得加上1,
//不然的话就显示不了最后一页的信息了
if(size%pageRowNum==0)
{
pageMax=size/pageRowNum;
}
else
{
pageMax=size/pageRowNum+1;
}
int index=0;
//这里是先取出一页中的要显示的条数放到一个List集合中
//然后再使用List保存每一页
for(int i=0;i<pageMax;i++)
{
ArrayList tlist=new ArrayList();
//这个循环是保存每一页的信息
for(int j=0;j<pageRowNum;j++)
{
if(index<size)
{
tlist.add(list.get(index++));
}
else
{
break;
}
}
//将每一页的信息保存到List集合中
pageList.add(tlist);
}
}
/**
* 取出每一页的数据
*/
public void getNowList()
{
int n=pageNo-1;
this.pageNow=(ArrayList)pageList.get(n);
}
/**
* 第一页
*/
public void setFirstPage()
{
this.pageNo=1;
getNowList();
}
/**
* 前一页
*/
public void setPrivousPage()
{
if(this.pageNo>1)
{
this.pageNo--;
}
getNowList();
}
/**
* 下一页
*/
public void setNextPage()
{
if(this.pageNo<this.pageMax)
{
this.pageNo++;
}
getNowList();
}
/**
* 最后一页
*/
public void setLastPage()
{
this.pageNo=this.pageMax;
getNowList();
}
public List getList() {
return list;
}
public void setList(List list) {
this.list = list;
}
public List getPageList() {
return pageList;
}
public void setPageList(List pageList) {
this.pageList = pageList;
}
public List getPageNow() {
return pageNow;
}
public void setPageNow(List pageNow) {
this.pageNow = pageNow;
}
public int getPageNo() {
return pageNo;
}
public void setPageNo(int pageNo) {
this.pageNo = pageNo;
getNowList();
}
public int getPageMax() {
return pageMax;
}
public void setPageMax(int pageMax) {
this.pageMax = pageMax;
}
public int getPageRowNum() {
return pageRowNum;
}
public void setPageRowNum(int pageRowNum) {
this.pageRowNum = pageRowNum;
}
}
(2)定义好分页功能后,在servlet或我们的struts中分页的过程
/**
* 开始进行分页
* @param a表示已经从数据库中取出了全部的信息
* @param pageRowNum每一页要显示的多少条记录
*/
@SuppressWarnings("unchecked")
public void beginpage(List<Article> a,int pageRowNum)
{
PageVo pagevo=new PageVo(a,pageRowNum);
//得到当前页
int currentpage=pagevo.getPageNo();
//得到总共的页数
int allpage=pagevo.getPageMax();
//得到第一页的信息
List<Article> articles=pagevo.getPageNow();
//记住这里要用session绑定相应的信息
session.setAttribute("currentpage", currentpage);
session.setAttribute("allpage", allpage);
session.setAttribute("articles", articles);
session.setAttribute("pagevo", pagevo);
}
(3)在JSP页面中添加如下的功能
<%
//currentpage就是当前页,allPages表示的就是一共有多少页。这些在后面都会用到
int currentPage = Integer.parseInt(session.getAttribute(
"currentpage").toString());
int allPages = Integer.parseInt(session.getAttribute("allpage")
.toString());
%>
(4)一般我们在显示一页信息之后加上如上图所示的分页图标的既在
<c:forEach items="${articles}" var="article">
:
:
</c:forEach>
记得articles吧,它是我们第二步使用session绑定的一个articles。
我们在</c:forEach>后面加上分页数字
//<c:if test="${allpage>1}">allpage是表示一共分几页,这里主要表示是否达到分页,
//class="viciao"是一个CSS样式效果主要用在分页显示效果上面
<c:if test="${allpage>1}">
<div align="right" class="viciao">
<a href="indexmanager!page.action?type=first&id=1"> 首页 </a>
<a href="indexmanager!page.action?type=prvious&id=1"> < Prev </a>
<%
for (int i = currentPage - 2; i <= currentPage + 2 && i <= allPages; i++) {
if (currentPage == i) {
%>
<span class="current"><%=i%></span>
<%
} else if (i > 0) {
%>
<a href="indexmanager!page.action?type=<%=i %>&id=1"><%=i%></a>
<%
}
}
%>
<a href="indexmanager!page.action?type=next&id=1"> Next > </a>
<a href="indexmanager!page.action?type=last&id=1"> 尾页 </a>
</div>
</c:if>
</c:if>
在上面中我们还看到有indexmanager!page.action页面跳转,那么看看page这个函数的功能
public String page()
{
PageVo pagevo=(PageVo) session.getAttribute("pagevo");
//获取分页的类型
String type=request.getParameter("type");
if("prvious".equals(type))
{
pagevo.setPrivousPage();
}
else if("next".equals(type))
{
pagevo.setNextPage();
}
else if("first".equals(type))
{
pagevo.setFirstPage();
}
else if("last".equals(type))
{
pagevo.setLastPage();
}
else
{
int pageNo=Integer.parseInt(type);
pagevo.setPageNo(pageNo);
}
List<Article> articles=pagevo.getPageNow();
//得到当前页
int currentpage=pagevo.getPageNo();
session.setAttribute("articles", articles);
session.setAttribute("pagevo", pagevo);
session.setAttribute("currentpage", currentpage);
return "editarticle";
}
page函数主要是根据我们点击的分页数,就是上面显示的1,2,3等等或上一页、下一页、首页、和尾页来获取相应的该也得信息,然后对它进行重新绑定。
最后我这里提供一个分页显示的CSS样式,记住这个要在jsp中引入该css样式,而且在第四步中使用了
<div align="right" class="viciao">
中的viciao就是该css样式,当然在这个样式中还有很多中样式类型
分享到:
相关推荐
然而,"假分页"是相对于真分页的一种简单实现方式,它并不真正地在数据库层面上进行分页,而是先将所有数据一次性加载到内存中,然后通过程序逻辑来模拟分页效果。 以下是一个简单的JSP假分页实现示例: 1. **假...
本篇文章将深入探讨JSP实现的真分页和假分页的区别、原理以及具体实现方法。 首先,我们需要理解什么是真分页和假分页。假分页,也称为无状态分页,主要通过在客户端存储和处理分页信息,如当前页数和每页显示的...
java实现分页 jsp分页 分页java实现分页 jsp分页 分页java实现分页 jsp分页 分页java实现分页 jsp分页 分页java实现分页 jsp分页 分页java实现分页 jsp分页 分页
### 使用JSP实现分页效果的关键技术点 #### 一、理解分页的基本概念与应用场景 分页是在处理大量数据时的一种常见展示方式,通过将数据分成若干个页面来逐页展示,不仅可以优化用户体验,还能有效提升系统的响应...
本篇文章将深入探讨"真分页"和"假分页"的概念,并结合JSP和Servlet来实现这两种分页方法。 ### 真分页与假分页概念 **假分页**,又称为内存分页,其主要特点是服务器一次性加载所有数据到内存中,然后根据用户请求...
JSP中分页效果实现步骤 JSP中分页效果实现步骤是指在JSP页面中实现数据的分页显示,通过限制每页显示的记录数和当前页码来实现数据的分页效果。下面是JSP中分页效果实现步骤的详细步骤: 步骤1:定义DAO方法 在...
本文将深入探讨如何使用JSP(Java Server Pages)来实现查询分页,这是一项在网页开发中频繁遇到且必须掌握的技术。 ### 分页技术的重要性 分页技术主要解决的是当数据量庞大时,一次性加载所有数据到页面会导致...
jsp 分页jsp 分页jsp 分页jsp 分页jsp 分页jsp 分页jsp 分页jsp 分页jsp 分页jsp 分页jsp 分页jsp 分页jsp 分页jsp 分页jsp 分页jsp 分页jsp 分页jsp 分页jsp 分页jsp 分页jsp 分页jsp 分页jsp 分页jsp 分页jsp 分页...
二、JSP分页步骤 1. **计算总页数**:首先,我们需要知道所有数据的数量,然后根据每页显示的数据量来计算总页数。这可以通过执行SQL查询获取数据总数,然后用总数除以每页数量得到。 2. **接收用户请求**:用户...
### JSP分页实现 #### 初始化分页参数 在给定的代码中,首先初始化了分页参数`p`,默认值为1,代表当前页面是第一页。然后,通过`request.getParameter("page")`方法获取URL中传入的页面参数,如果存在,则将其...
jsp假分页代码,让你更好的把JSP读取数据库然后分页
总结来说,实现Java AJAX分页和JSP分页涉及前后端的协作。前端通过AJAX与后端通信,后端处理请求并从数据库获取数据,然后将数据返回给前端,前端再更新页面内容。这个过程提升了用户体验,使得浏览大数据集变得更加...
**JSP分页技术**是Web开发中常用的一种技术,用于在网页...总的来说,JSP分页技术,特别是假分页技术,是Web开发中提高性能和用户体验的重要手段。理解并掌握这部分内容,对于提升Web应用的效率和质量具有积极的意义。
在本例中,我们探讨的是使用JSP(JavaServer Pages)和JDBC(Java Database Connectivity)实现的一种“假分页”方法。假分页指的是在服务器端完全获取所有数据,然后在内存中进行处理,只显示用户当前请求的页面...
绝对精简的JSP分页,经过本人亲测,绝对好用,方便不想复杂分页的朋友使用。 此分页方法是先将要分页的List对象放在Session中, 然后在页面中,用for循环取出数据。
分页插件分页插件分页插件JAVA JSP 简单分页插件JAVA JSP 简单分页插件JAVA JSP 简单分页插件JAVA JSP 简单分页插件JAVA JSP 简单分页插件JAVA JSP 简单分页插件JAVA JSP 简单分页插件JAVA JSP 简单分页插件JAVA JSP...
### JSP分页技术详解:初学者的完美指南 #### 引言 在现代Web开发中,数据展示的效率和用户体验至关重要。对于大型数据库或数据集的处理,一次性加载所有数据不仅消耗大量资源,还可能导致页面加载缓慢,严重影响...
标题中的“jsp分页显示标签”指的是JSP中可以使用的特定标签库,如JSTL(JavaServer Pages Standard Tag Library)或自定义标签,来简化分页逻辑的实现。JSTL的`<c:forEach>`标签可以用于循环输出分页按钮,而`...
本资源提供了一种基于JSP的分页解决方案,利用`<jsp:include>`标签来实现,同时兼容Oracle、SQL Server和MySQL等主流数据库。下面我们将详细探讨这个知识点。 1. **JSP(JavaServer Pages)**: JSP是Java的一个子...