使用pager-taglib的jar包实现分页的方法
2013-06-12 17:41
525 查看
首先将pager-taglib.jar放到lib目录下
在创建一个Pager类,代码如下:
分页中的一些参数需要从页面传过来,我们还需要创建一个SystemContext类,当然这个类要使用ThreadLocal模式,具体代码如下:
当然我还需要一个SystemContextFilter过滤器了,代码如下:
web.xml配置一下:
<filter>
<filter-name>SystemContextFilter</filter-name>
<filter-class>org.zttc.itat.filter.SystemContextFilter</filter-class>
<init-param>
<param-name>pageSize</param-name>
<param-value>15</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>SystemContextFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
分页页面pager.jsp显示的代码(其他需要分页的页面可以将其包含进去):
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@taglib prefix="pg" uri="http://jsptags.com/tags/navigation/pager" %>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<pg:pager maxPageItems="15" items="${param.items }" export="curPage=pageNumber" url="${param.url }">
<c:forEach items="${param.params }" var="p">
<pg:param name="${p }"/>
</c:forEach>
<pg:last>
共${items }记录,共${pageNumber }页,
</pg:last>
当前第${curPage }页
<pg:first>
<a href="${pageUrl }">首页</a>
</pg:first>
<pg:prev>
<a href="${pageUrl }">上一页</a>
</pg:prev>
<pg:pages>
<c:if test="${curPage eq pageNumber }">
[${pageNumber }]
</c:if>
<c:if test="${curPage ne pageNumber }">
<a href="${pageUrl }">${pageNumber }</a>
</c:if>
</pg:pages>
<pg:next>
<a href="${pageUrl }">下一页</a>
</pg:next>
<pg:last>
<a href="${pageUrl }">尾页</a>
</pg:last>
</pg:pager>
在创建一个Pager类,代码如下:
package org.zttc.itat.model; import java.util.List; public class Pager<T> { private List<T> datas; private int pageOffset; private long totalRecord; private int pageSize; public List<T> getDatas() { return datas; } public void setDatas(List<T> datas) { this.datas = datas; } public int getPageOffset() { return pageOffset; } public void setPageOffset(int pageOffset) { this.pageOffset = pageOffset; } public long getTotalRecord() { return totalRecord; } public void setTotalRecord(long totalRecord) { this.totalRecord = totalRecord; } public int getPageSize() { return pageSize; } public void setPageSize(int pageSize) { this.pageSize = pageSize; } }
分页中的一些参数需要从页面传过来,我们还需要创建一个SystemContext类,当然这个类要使用ThreadLocal模式,具体代码如下:
package org.zttc.itat.model; public class SystemContext { private static ThreadLocal<Integer> pageOffset = new ThreadLocal<Integer>(); private static ThreadLocal<Integer> pageSize = new ThreadLocal<Integer>(); public static int getPageOffset() { return pageOffset.get(); } public static void setPageOffset(int _pageOffset) { pageOffset.set(_pageOffset); } public static int getPageSize() { return pageSize.get(); } public static void setPageSize(int _pageSize) { pageSize.set(_pageSize); } public static void removePageOffset() { pageOffset.remove(); } public static void removePageSize() { pageSize.remove(); } }
当然我还需要一个SystemContextFilter过滤器了,代码如下:
package org.zttc.itat.filter; import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import org.zttc.itat.model.SystemContext; public class SystemContextFilter implements Filter{ private int pageSize = 0; @Override public void destroy() { } @Override public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws IOException, ServletException { try { int pageOffset = 0; try { pageOffset = Integer.parseInt(req.getParameter("pager.offset")); } catch (NumberFormatException e) {} SystemContext.setPageOffset(pageOffset); SystemContext.setPageSize(pageSize); chain.doFilter(req, resp); } finally { SystemContext.removePageOffset(); SystemContext.removePageSize(); } } @Override public void init(FilterConfig cfg) throws ServletException { try { pageSize = Integer.parseInt(cfg.getInitParameter("pageSize")); } catch (NumberFormatException e) { pageSize = 10; } } }
web.xml配置一下:
<filter>
<filter-name>SystemContextFilter</filter-name>
<filter-class>org.zttc.itat.filter.SystemContextFilter</filter-class>
<init-param>
<param-name>pageSize</param-name>
<param-value>15</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>SystemContextFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
分页页面pager.jsp显示的代码(其他需要分页的页面可以将其包含进去):
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@taglib prefix="pg" uri="http://jsptags.com/tags/navigation/pager" %>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<pg:pager maxPageItems="15" items="${param.items }" export="curPage=pageNumber" url="${param.url }">
<c:forEach items="${param.params }" var="p">
<pg:param name="${p }"/>
</c:forEach>
<pg:last>
共${items }记录,共${pageNumber }页,
</pg:last>
当前第${curPage }页
<pg:first>
<a href="${pageUrl }">首页</a>
</pg:first>
<pg:prev>
<a href="${pageUrl }">上一页</a>
</pg:prev>
<pg:pages>
<c:if test="${curPage eq pageNumber }">
[${pageNumber }]
</c:if>
<c:if test="${curPage ne pageNumber }">
<a href="${pageUrl }">${pageNumber }</a>
</c:if>
</pg:pages>
<pg:next>
<a href="${pageUrl }">下一页</a>
</pg:next>
<pg:last>
<a href="${pageUrl }">尾页</a>
</pg:last>
</pg:pager>
相关文章推荐
- 使用pager-taglib.jar实现的分页技术
- 使用pager-taglib.jar实现的分页技术
- SSH pager-taglib分页的实现 具体使用方法 分页pager
- 使用pager-taglib.jar实现分页
- 使用pager-taglib实现通用分页框架
- 使用pager-taglib插件实现SSH框架的分页显示功能,只翻页三出错
- SSH pager-taglib分页的实现 具体使用方法 分页pager
- pager-taglib分页标签使用方法
- 分页的一些实现的思想和方法(ThreadLocal+Filter+pager-taglib)
- SSH pager-taglib分页的实现 具体使用方法 分页pager
- pager-taglib分页标签使用方法
- spring+hibernate+pager taglib实现分页(底层也做了分页)(三)
- pager-taglib的使用(jsp分页)
- 使用FragmentTabHost+Fragment+viewpager 实现滑动分页
- SSH pager-taglib分页的实现
- sqlserver2005使用row_number() over分页的实现方法
- 仿微博个人主页时使用 CoordinatorLayout+AppBarLayout+viewpager(NestedScrollView和RecycleView) 实现方法: <?xml ver
- JSP通用分页组件 pager-taglib使用
- pager-taglib分页处理的使用
- pager-taglib 分页乱码。解决方法。