在JSP中使用pager-taglib进行分页处理

     在应用程序开发的时候分页有两种:真分页和假分页,假分页要把所有数据先提取出来放到一个list集合里或者静态变量中。真分页则是需要用到几行数据再从数据库中提取出来放把需要显示的数据放到list集合里。但无论真分页假分页pager-taglib都可以很好的为我们进行处理。

1.下载pager-taglib
下载地址http://jsptags.com/index.jsp,找http://jsptags.com/tags/navigation/pager/index.jsp,demo进行下载,主要的jar文件就在这个demo里面

2.编写如下JSP文件
<%@ page language="java" import="java.util.*;" pageEncoding="utf-8"%> <!-- 引入JSTL标准标签库--> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <!-- 引入pager标签库 --> <%@ taglib prefix="pg" uri="http://jsptags.com/tags/navigation/pager"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>Pager Tags Example</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> </head> <body> <table> <tr> <td>id</td> <td>name</td> </tr> <!-- pm是分页模型,封装了要分页的总数据条数total以及当前也需要显示的数据datas--> <!-- 判断pm.datas是否为空,空则显示无数据 --> <c:if test="${empty pm.datas}"> No data </c:if> <c:if test="${!empty pm.datas}"> <!-- 循环显示pm.datas集合中的数据 --> <c:forEach items="${pm.datas}" var="dog"> <tr> <td>${dog.id}</td> <td>${dog.name }</td> </tr> </c:forEach> </c:if> </table> <!-- maxIndexPages="10" 最大显示10页--> <pg:pager items="${pm.total}" export="currentPageNumber=pageNumber" url="list.do"> <pg:first> <!-- 比如${pageUrl}等变量都是固定的,是在pager-tags中已经定义好了的 --> <a href="${pageUrl}" mce_href="${pageUrl}">首页</a> </pg:first> <pg:prev> <a href="${pageUrl}" mce_href="${pageUrl}">前页</a> </pg:prev> <pg:pages> <c:choose> <!-- 判断当前页,并将当前页的显示为红色 --> <c:when test="${currentPageNumber eq pageNumber }"> <font color="red">${pageNumber }</font> </c:when> <c:otherwise> <a href="${pageUrl}" mce_href="${pageUrl}">${pageNumber }</a> </c:otherwise> </c:choose> </pg:pages> <pg:next> <a href="${pageUrl}" mce_href="${pageUrl}">后页</a> </pg:next> <pg:last> <a href="${pageUrl}" mce_href="${pageUrl}">尾页</a> </pg:last> </pg:pager> </body> </html>

 

 

该JSP请求的ACTION为

/* * Generated by MyEclipse Struts * Template path: templates/java/JavaClass.vtl */ package com.yourcompany.struts.action; import java.util.ArrayList; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.struts.action.Action; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; public class ListAction extends Action { public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { int pager=Integer.parseInt(request.getParameter("pager.offset")); ArrayList<Dog> doglist = new ArrayList<Dog>(); for(int i=0;i<1000;i++) { Dog d = new Dog(); d.setId(i); d.setName("dog"+i); doglist.add(d); } PageModel pm = new PageModel(); pm.setTotal(1000); pm.setDatas(doglist.subList(pager, pager+20)); request.setAttribute("pm", pm); return mapping.findForward("list"); } }

 

PagerModel类为

package com.yourcompany.struts.action; import java.util.List; public class PageModel { /** * 总记录数 */ private int total; /** * 当前页结果集 */ private List<?> datas; public List<?> getDatas() { return datas; } public void setDatas(List<?> datas) { this.datas = datas; } public int getTotal() { return total; } public void setTotal(int total) { this.total = total; } }

 

编写完这些后,我们就可以看看我们的分页效果了

 

你可能感兴趣的:(jsp,MyEclipse,struts,list,action,程序开发)