乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

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

       燮羽 2010-10-27
      1、定義PageModel類 
      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類 
      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)的分頁數(shù)據(jù)設(shè)置好之后放到Threadlocal中  
      16. //在后臺(tái)進(jìn)行查詢的時(shí)候從ThreadLocal中取出PageModel對(duì)象然后使用分頁數(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. <!--加入我們自己定義的攔截器,在攔截器中把分頁數(shù)據(jù)設(shè)置到ThreadLocal里然后再dao層取出用于分頁 -->  
      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)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(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)遵守用戶 評(píng)論公約

        類似文章 更多