我使用了 Struts 2 框架,并创建了一个具有登录页面的 Web 应用程序。我有三个不同的Action
类,分别命名为Action1
、Action2
、Action3
和 JSP 页面的不同视图,这些视图是通过在类中运行一些业务逻辑来呈现的Action
。
现在,我想在Action
类执行处理之前检查用户是否已登录。所以,
我在下面创建了一个可以正常工作的拦截器:
public String intercept(ActionInvocation invocation) throws Exception
{
HttpServletRequest request = ServletActionContext.getRequest();
HttpServletResponse response = ServletActionContext.getResponse();
HttpSession session = request.getSession();
if(session.isNew())
{
response.sendRedirect("Login.action");
}
System.out.println("Interceptor Fired");
String result = invocation.invoke();
return result;
}
我想要struts.xml
的不是为下面的所有操作添加拦截器
<interceptor-ref name="newStack"/>
我的struts.xml
文件有:
<package name="default" extends="struts-default">
<interceptors>
<interceptor name="printMsgInterceptor" class="LoginInterceptor"></interceptor>
<interceptor-stack name="newStack">
<interceptor-ref name="printMsgInterceptor"/>
<interceptor-ref name="defaultStack" />
</interceptor-stack>
</interceptors>
<action name="actone" class="Action1">
<result name="success">/success.jsp</result>
<interceptor-ref name="newStack"/>
</action>
<action name="acttwo" class="Action2">
<result name="success">/success.jsp</result>
<interceptor-ref name="newStack"/>
</action>
<action name="actthree" class="Action3">
<result name="success">/success.jsp</result>
<interceptor-ref name="newStack"/>
</action>
</package>
对于每个动作,我都想写一些定义struts.xml
来运行拦截器而不是手动添加
<interceptor-ref name="newStack"/>