我在struts2中创建了一个Authentication Interceptor
我必须检查何时调用拦截器方法
所以我在控制台上打印了方法名称。
这是我的代码
public class AuthenticationInterceptor implements Interceptor {
@Override
public void destroy() {
System.out.println("AuthenticationInterceptor destroy");
}
@Override
public void init() {
System.out.println("AuthenticationInterceptor init");
}
@Override
public String intercept(ActionInvocation actionInvocation) throws Exception {
System.out.println("AuthenticationInterceptor intercept");
return actionInvocation.invoke();
}
}
这是我在struts.xml中的包。
<package name="portfolioSecure" namespace="/secure" extends="portfolio">
<interceptors>
<interceptor name="authenticationInterceptor" class="ask.portfolio.utility.AuthenticationInterceptor"></interceptor>
<interceptor-stack name="secureStack">
<interceptor-ref name="authenticationInterceptor"></interceptor-ref>
<interceptor-ref name="defaultStack"></interceptor-ref>
</interceptor-stack>
</interceptors>
<default-interceptor-ref name="secureStack"></default-interceptor-ref>
<action name="login" class="ask.portfolio.actions.Login">
<result name="success">/loginSuccess.jsp</result>
<result name="error">/welcome.jsp</result>
</action>
</package>
当我的应用程序启动时 AuthenticationInterceptor init 打印在控制台上 类似地, AuthenticationInterceptor拦截也会打印。但即使我停止服务器,也不会打印 AuthenticationInterceptor destroy 我想知道何时调用拦截器破坏方法,拦截器中的后处理是什么,它与destroy方法()有关。
答案 0 :(得分:2)
当容器或应用程序停止或未部署时,destroy方法只调用一次。它呼吁拦截器清理它已分配的任何资源。