基于SSH+pager-taglib的分页封装(一)

2014-11-24 00:14:31 · 作者: · 浏览: 2

手动编写分页挺好,不过太累。于是在搜索了很多网上开源分页插件后选择pager-taglib-2.0,此分页插件因为用法简单功能强大能快速上手,下面逐步实现快速jsp页面的分页。
整体效果(因为记录比较少,所以只有两页):

\

第二页:

\

1.下载pager-taglib-2.0.war
jsptags.com/tags/navigation/pager/">http://jsptags.com/tags/navigation/pager/上可以看到demo和war包下载,在war中解压出jar包,粘贴入项目的lib文件夹中。

\
2.在显示的jsp上需要引入
<%@ taglib prefix="pg" uri="http://jsptags.com/tags/navigation/pager" %>

3.建立JSPPageModel模型,用于在jsp页面上返回对象集和总记录数
package com.v.oa.common;

import java.util.List;

public class JSPPageModel {

private int total;

private List list;

public int getTotal() {
return total;
}

public void setTotal(int total) {
this.total = total;
}

public List getList() {
return list;
}

public void setList(List list) {
this.list = list;
}

}
4.建立SystemContext类,将系统启动时显示起始记录数和每页显示行数设置在ThreadLocal中。
package com.v.oa.common;

public class SystemContext {

private static ThreadLocal offset = new ThreadLocal();
private static ThreadLocal pagesize = new ThreadLocal();

public static void setOffset(int _offset){
offset.set(_offset);
}

public static int getOffset(){
Integer _offset = (Integer)offset.get();
if(_offset == null){
return 0;
}
return _offset;
}

public static void removeOffset(){
offset.remove();
}

public static void setPagesize(int _pagesize){
pagesize.set(_pagesize);
}

public static int getPagesize(){
Integer _pagesize = (Integer)pagesize.get();
if(_pagesize == null){
return Integer.MAX_VALUE;
}
return _pagesize;
}

public static void removePagesize(){
pagesize.remove();
}
}


5.建立过滤器,读出ThreadLocal中的显示的起始记录数和每页显示行数。这里没有在界面中去设置用户可以选择每页显示多少条记录的功能,此处固定为每页显示5条记录。
package com.v.oa.common;

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 javax.servlet.http.HttpServletRequest;

public class PagerFilter implements Filter {

@Override
public void destroy() {
// TODO Auto-generated method stub

}

@Override
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest httpRequest = (HttpServletRequest)request;

SystemContext.setOffset(getOffset(httpRequest));
SystemContext.setPagesize(getPagesize(httpRequest));

try{
chain.doFilter(request, response);
}finally{
SystemContext.removeOffset();
SystemContext.removePagesize();
}
}

private int getOffset(HttpServletRequest request){
int offset = 0;
try {
offset = Integer.parseInt(request.getParameter("pager.offset"));
} catch (Exception ignore) {
}
return offset;
}

private int getPagesize(HttpServletRequest request){
return 5;
}

public void init(FilterConfig arg0) throws ServletException {
}
}

6.action中:
pro