分享

Struts2拦截器总结

 WindySky 2011-06-30
一、编写拦截器
1、  实现接口com.opensymphony.xwork2.Intercepter(或继承com.opensymphony.xwork2.AbstractInterceptor)
2、  在interceptor方法中加入如下代码:
        public String intercept(ActionInvocation arg0) throws Exception {
           System.out.println("Before");   //在Action之前调用
           String result = arg0.invoke();  //如果此拦截器之后还有拦截器,则调用下个拦截器的intercept方法
                                           //如果之后没有了拦截器,则调用Action的execute方法
           System.out.println("After");
            return result;   
        }
 
二、在Struts.xml中配置拦截器
1、  在struts.xml中声明拦截器和拦截器Stack,拦截器Stack可以包括多个拦截器和其他Stack。
       <interceptors>
           <!-- 拦截器 -->
           <interceptor name="MyInterceptor" class="com.test.interceptor.MyInterceptor"></interceptor>
           <!-- 拦截器Stack -->
<interceptor-stack name="validationWorkflowStack">
<interceptor-ref name="basicStack"/>
                <interceptor-ref name="validation"/>
                <interceptor-ref name="workflow"/>
</interceptor-stack>
    </interceptors>
2、  将拦截器配置到单个Action中,只拦截此Action中的execute方法。
<action name="register" class="com.test.action.RegisterAction" method="test">
           <result name="success">/success.jsp</result>
           <result name="input">/register2.jsp</result>
           <interceptor-ref name="MyInterceptor"></interceptor-ref>
    </action>
3、  将拦截器配置到所有Action中,拦截所有Action中的execute方法。
<default-interceptor-ref name="MyInterceptor"></default-interceptor-ref>
对已经单独配置了拦截器的Action不起作用
 
三、拦截Action中指定的方法
1、 继承com.opensymphony.xwork2.interceptor.MethodFilterInterceptor。
2、 因为是针对某个Action的方法,所以只能配置在Action内部
<action name="register" class="com.test.action.RegisterAction" method="test">
           <result name="success">/success.jsp</result>
           <result name="input">/register2.jsp</result>
           <interceptor-ref name="MyInterceptor">
              <param name="includeMethod">test,execute</param> <!-- 拦截text和execute方法,方法间用逗号分隔 -->
              <param name="excludeMethod">myfun</param>        <!-- 不拦截myfun方法 -->
</interceptor-ref>
    </action>
 
四、struts2拦截器的interceptor方法中,参数ActionInvocation可用来获取页面用户输入的信息。
public String intercept(ActionInvocation arg0) throws Exception {
       Map map = arg0.getInvocationContext().getSession();
       if(map.get("user") == null) {
           return Action.LOGIN;
       } else {
           return arg0.invoke();
       }
    }

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/sendfeng/archive/2009/06/07/4248120.aspx

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约