论坛首页 Java企业应用论坛

webwork的拦截器真是好用

浏览 3993 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-02-28  
          这几天设计一个项目,虽然基本上是采用老项目的权限管理,但发现老项目的权限管理,把一些细微的权限写死在方法里面,而且每增加一个权限,都有进行配置,写静态属性,很烦。所以今天想了下,决定采用webwork自带的拦截器来实现细微的权限设计。在这里我就不细说拦截器的使用了。贴代码出来
java 代码
 
  1. public class PermissionInterceptor implements Interceptor {  
  2.     private static Logger logger = Logger.getLogger(PermissionInterceptor.class);  
  3.       
  4.     /** 
  5.      * 需求拦截并进行判断的权限参数 
  6.      */  
  7.     private String prem;  
  8.       
  9.   
  10.     public final void setPrem(String prem) {  
  11.         this.prem = prem;  
  12.     }  
  13.   
  14.     public PermissionInterceptor() {  
  15.         super();  
  16.     }  
  17.   
  18.     public void destroy() {  
  19.     }  
  20.   
  21.     public void init() {  
  22.     }  
  23.   
  24.     /** 
  25.      * 拦截用户操作 
  26.      */  
  27.     public String intercept(ActionInvocation invocate) throws Exception {  
  28.         logger.debug(prem);  
  29.         if(PermissionUtil.hasPermission(prem)){  
  30.             logger.debug("No Prem");  
  31.             return invocate.invoke();     
  32.         }else{  
  33.             logger.debug("Yes Prem");  
  34.             return Constant.NOT_AUTHORIZE;  
  35.         }  
  36.           
  37.     }  
  38.   
  39. }  

在配置文件里只需要这样做就ok了

        
xml 代码
 
  1. <action name="list"  
  2.     class="com.teesoo.teanet.action.member.MemberAction" method="list">  
  3.     <result name="success" type="freemarker">  
  4.         /WEB-INF/template/member/member_list.ftl  
  5.     </result>  
  6.       
  7.     <interceptor-ref name="myDefaultStack">  
  8.        
  9.     </interceptor-ref>  
  10.       
  11.     <interceptor-ref name="permissionInterceptor">  
  12.         <param name="prem">  
  13.             df  
  14.         </param>  
  15.     </interceptor-ref>  
  16.   
  17. </action>  
<action name="list"><interceptor-ref name="permissionInterceptor">
               
            </interceptor-ref>

        </action>
上面的df就是你自己定义的权限操作参数。这样就避免了软编码。直接硬编码就ok了。方便明了。
我这才发现webwork的拦截器是多么的贴心
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics