首先自定义拦截器需要实现Interceptor接口

package control.center;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.Interceptor;

public class PersonAction implements Interceptor {

 @Override
 public void destroy() {

 }

 @Override
 public void init() {

 }

 @Override
 //当拦截到Action的时候执行该方法
 public String intercept(ActionInvocation arg0) throws Exception {

  Object user=ActionContext.getContext().getSession().get("user");
  if(user!=null)
  {
   //调用该用法就执行被拦截到的方法
   arg0.invoke(); 
  }
  ActionContext.getContext().put("message","你没有权限执行该操作"); 
  return "message";
 }

}

然后再struts2配置文件中声明和使用拦截器:

<struts>
    <package name="employee" namespace="/control/center" extends="struts-default">
       <!--
                               配置中声明自定义拦截器
                              自定义拦截器后,默认的拦截器不能在使用,所以要使用拦截器栈
       -->
       <interceptors>
          <!--<interceptor name="Permission" class="control.center.HelloWordAction"/> -->
          <interceptor-stack name="permissionStack">
             <!-- 引入系统默认拦截器栈 -->
             <interceptor-ref name="defaultStack"/>
             <!-- 引入自定义拦截器 -->
             <interceptor-ref name="permission"/>
          </interceptor-stack>
       </interceptors>
      
        <action name="list_*" class="control.center.HelloWordAction" method="{1}">
            <!--在Action中应用拦截器-->            
            <interceptor-ref name="permission"/>
            <result type="success">/WEB-INF/message.jsp</result>
        </action>
    </package>
</struts>

posted on 2011-02-26 14:39  魔战  阅读(388)  评论(0编辑  收藏  举报