经典struts2分页方法 JAVA_WEB必备分页

1.       创建MyThreadLocal类,此类用来存放分页信息和返回的结果集,主要思想是把分页信息放在ThreadLocal,避免在ServiceDao层传递分页信息

代码如下:

 

public class MyThreadLocal

{   //新建一个本地变量

    private static ThreadLocal tl = new ThreadLocal();  

   

    //把分页信息放到ThreadLocal

    public static void setValue(PageModel pm) {  

        tl.set(pm);  

    }  

      //通过ThreadLocal获得分页信息

    public static PageModel getValue() {  

        PageModel pm = (PageModel) tl.get();  

        if(pm == null) {  

            pm = new PageModel();  

        }  

        return pm;  

    }  

      

    //当调用结束后释放Thread资源

    public static  void remove() {  

        tl.remove();  

    }  

 

 

}

 

2.    创建PageModel类,用来存储分页信息和存储数据库返回信息

public class PageModel {

   

    private int total;  

    private List datas;  

    private int pageSize;  

    private int offset;  

      

    public int getPageSize() {  

        return 7;  

    }  

    public void setPageSize(int pageSize) {  

        this.pageSize = 7;  

    }  

    public int getOffset() {  

        return offset;  

    }  

    public void setOffset(int offset) {  

        this.offset = offset;  

    }  

    public int getTotal() {  

        return total;  

    }  

    public void setTotal(int total) {  

        this.total = total;  

    }  

    public List getDatas() {   

        return datas;  

    }  

    public void setDatas(List datas) {  

        this.datas = datas;  

    }  

 

}

 

 

3.       创建PageModelInterceptor类,用来接收分页信息

public class PageModelInterceptor extends AbstractInterceptor {

 

    @Override 

    public String intercept(ActionInvocation invoke) throws Exception {  

        int offset = 0;  

        try {  

          

            offset = Integer.parseInt(ServletActionContext.getRequest()  

                    .getParameter("pagerOffset"));  

        } catch (NumberFormatException e) {  

        }  

        int pageSize = 8;  

        PageModel pm = MyThreadLocal.getValue();  

        pm.setOffset(offset);  

        pm.setPageSize(pageSize<0 ? Integer.MAX_VALUE : pageSize);  

        //pagemodel中相关的分页数据设置好之后放到Threadlocal  

        //在后台进行查询的时候从ThreadLocal中取出PageModel对象然后使用分页数据即可。

        MyThreadLocal threadLocal = new MyThreadLocal();

        threadLocal.setValue(pm);  

        try {  

            return invoke.invoke();  

        }

        finally {  

         //注意等到整个拦截器执行完成即一个ThreadLocal完成它的工作后要清除里面的内容  

            MyThreadLocal.remove();  

        }  

    }  

 

 

}

 

4.       后台得到分页参数进行分页

searchpaginated( hql, null, MyThreadLocal.getValue().getOffset(),8

       );

 

 

 

 

 

源码下载:http://download.csdn.net/source/2416869

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值