日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

使用ThreadLocal結(jié)合struts2的攔截器實(shí)現(xiàn)分頁(yè)

 燮羽 2010-10-27
1、定義PageModel類(lèi) 
Xml代碼 
  1. public class PageModel {  
  2.     private int total;  
  3.     private List datas;  
  4.     private int pageSize;  
  5.     private int offset;  
  6.       
  7.     public int getPageSize() {  
  8.         return pageSize;  
  9.     }  
  10.     public void setPageSize(int pageSize) {  
  11.         this.pageSize = pageSize;  
  12.     }  
  13.     public int getOffset() {  
  14.         return offset;  
  15.     }  
  16.     public void setOffset(int offset) {  
  17.         this.offset = offset;  
  18.     }  
  19.     public int getTotal() {  
  20.         return total;  
  21.     }  
  22.     public void setTotal(int total) {  
  23.         this.total = total;  
  24.     }  
  25.     public List getDatas() {  
  26.         return datas;  
  27.     }  
  28.     public void setDatas(List datas) {  
  29.         this.datas = datas;  
  30.     }  
  31. }  



2、定義ThreadLocal類(lèi) 
Java代碼 
  1. public class MyThreadLocal {  
  2.     private static ThreadLocal tl = new ThreadLocal();  
  3.       
  4.     public static void setValue(PageModel pm) {  
  5.         tl.set(pm);  
  6.     }  
  7.       
  8.     public static PageModel getValue() {  
  9.         PageModel pm = (PageModel) tl.get();  
  10.         if(pm == null) {  
  11.             pm = new PageModel();  
  12.         }  
  13.         return pm;  
  14.     }  
  15.       
  16.     public static  void remove() {  
  17.         tl.remove();  
  18.     }  
  19. }  


3、定義我們自己的攔截器 
Java代碼 
  1. public class PageModelInterceptor extends AbstractInterceptor {  
  2.   
  3.     @Override  
  4.     public String intercept(ActionInvocation invoke) throws Exception {  
  5.         int offset = 0;  
  6.         try {  
  7.             offset = Integer.parseInt(ServletActionContext.getRequest()  
  8.                     .getParameter("pager.offset"));  
  9.         } catch (NumberFormatException e) {  
  10.         }  
  11.         int pageSize = 5;  
  12.         PageModel pm = MyThreadLocal.getValue();  
  13.         pm.setOffset(offset<0 ? 0 : offset);  
  14.         pm.setPageSize(pageSize<0 ? Integer.MAX_VALUE : pageSize);  
  15.                   //將pagemodel中相關(guān)的分頁(yè)數(shù)據(jù)設(shè)置好之后放到Threadlocal中  
  16. //在后臺(tái)進(jìn)行查詢(xún)的時(shí)候從ThreadLocal中取出PageModel對(duì)象然后使用分頁(yè)數(shù)據(jù)即可。  
  17.         MyThreadLocal.setValue(pm);  
  18.         try {  
  19.             return invoke.invoke();  
  20.         }finally {  
  21. //注意等到整個(gè)攔截器執(zhí)行完成即一個(gè)ThreadLocal完成它的工作后要清除里面的內(nèi)容  
  22.             MyThreadLocal.remove();  
  23.         }  
  24.     }  
  25. }  


4、在struts.xml配置文件中加入我們的攔截器 
Xml代碼 
  1. <interceptors>  
  2. <!--定義攔截器 -->  
  3.     <interceptor name="pageModelInterceptor" class="com.bjsxt.oa.util.PageModelInterceptor"/>  
  4.               <interceptor-stack name="myInterceptorStack">  
  5.                 <interceptor-ref name="exception"/>  
  6. <!--加入我們自己定義的攔截器,在攔截器中把分頁(yè)數(shù)據(jù)設(shè)置到ThreadLocal里然后再dao層取出用于分頁(yè) -->  
  7.                 <interceptor-ref name="pageModelInterceptor"/>  
  8.                 <interceptor-ref name="alias"/>  
  9.                 <interceptor-ref name="servletConfig"/>  
  10.                 <interceptor-ref name="i18n"/>  
  11.                 <interceptor-ref name="prepare"/>  
  12.                 <interceptor-ref name="chain"/>  
  13.                 <interceptor-ref name="debugging"/>  
  14.                 <interceptor-ref name="scopedModelDriven"/>  
  15.                 <interceptor-ref name="updatableInterceptor"/>  
  16.                 <interceptor-ref name="modelDriven"/>  
  17.                 <interceptor-ref name="fileUpload"/>  
  18.                 <interceptor-ref name="checkbox"/>  
  19.                 <interceptor-ref name="multiselect"/>  
  20.                 <interceptor-ref name="staticParams"/>  
  21.                 <interceptor-ref name="actionMappingParams"/>  
  22.                 <interceptor-ref name="params">  
  23.                   <param name="excludeParams">dojo\..*,^struts\..*,pager.offset</param>  
  24.                 </interceptor-ref>  
  25.                 <interceptor-ref name="conversionError"/>  
  26.                 <interceptor-ref name="validation">  
  27.                     <param name="excludeMethods">input,back,cancel,browse</param>  
  28.                 </interceptor-ref>  
  29.                 <interceptor-ref name="workflow">  
  30.                     <param name="excludeMethods">input,back,cancel,browse</param>  
  31.                 </interceptor-ref>  
  32.             </interceptor-stack>  
  33.         </interceptors>     
  34.   
  35. <default-interceptor-ref name="myInterceptorStack"/>

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶(hù)發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶(hù) 評(píng)論公約

    類(lèi)似文章 更多