struts2 intercepter

1.要求拦截器是无状态的原因是Struts 2不能保证为每一个请求或者action创建一个实例,所以如果拦截器带有状态,会引发并发问题。

所有的Struts 2的拦截器都直接或间接实现接口com.opensymphony.xwork2.interceptor.Interceptor。除此之外,大家可能更喜欢继承类com.opensymphony.xwork2.interceptor.AbstractInterceptor。

2.

配置和使用拦截器

在struts-default.xml中已经配置了以上的拦截器。如果您想要使用上述拦截器,只需要在应用程序struts.xml文件中通过“<include file="struts-default.xml" />”将struts-default.xml文件包含进来,并继承其中的struts-default包(package),最后在定义Action时,使用“<interceptor-ref name="xx" />”引用拦截器或拦截器栈(interceptor stack)。一旦您继承了struts-default包(package),所有Action都会调用拦截器栈 ——defaultStack。当然,在Action配置中加入“<interceptor-ref name="xx" />”可以覆盖defaultStack。

 

3.自定义拦截器的配置:

           <package name="intercepter" extends="struts-default">
      <interceptors>
       <interceptor name="myInterceptor" class="struts.interceptor.TimerInterceptor"></interceptor>
      </interceptors>
         <action name="test" class="struts.action.TestAction">
          <interceptor-ref name="myInterceptor"></interceptor-ref>
          <result>index.jsp</result>

          <result name="input">input.jsp</result>
         </action>
         
    </package>

 

          import com.opensymphony.xwork2.interceptor.Interceptor;

                 public String intercept(ActionInvocation ai) throws Exception {
                String userName=(String)ai.getInvocationContext().getSession().get("user");
                  if(userName!=null){
                    Thread.sleep(5000);
                 System.out.println("timer interceptor..........................");
                return ai.invoke();           //成功则执行action方法
                  }
                    else{
                 return Action.INPUT;        //不成功则跳转到 name="input" 的result
                   }
                     }

                    }

 

(1)<interceptor-ref name="timer"/>

          INFO [com.opensymphony.xwork2.interceptor.TimerInterceptor] - Executed action [//Login!execute] took 110 ms.   执行action所用的时间

 

------------------------

createSession和freemarker有关 :这是特别有用当使用“ @ s.token ”标记freemarker模板

 

 

 

你可能感兴趣的:(thread,freemarker,xml,jsp,struts)