Adding interceptors in struts.xml for all Action classes(在 struts.xml 中为所有 Action 类添加拦截器)
问题描述
我使用了 Struts 2 框架并创建了一个具有登录页面的 Web 应用程序.我有三个不同的 Action
类,分别命名为 Action1
、Action2
、Action3
,以及用于呈现的 JSP 页面的不同视图通过在 Action
类中运行一些业务逻辑.
I've used the Struts 2 framework and I have created a web application which has a Login Page. I have three different Action
classes named Action1
, Action2
, Action3
, and different views for JSP pages which are rendered by running some business logic in the Action
classes.
现在,我想在 Action
类执行处理之前检查用户是否已经登录.所以,
Now, I want to check whether a user has logged in before the Action
class carries out processing. So,
我在下面创建了一个可以正常工作的拦截器:
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
中做的不是为下面的所有操作添加一个拦截器
What I want to be in struts.xml
is instead of adding an interceptor for all the actions like the one below
<interceptor-ref name="newStack"/>
我的 struts.xml
文件有:
My struts.xml
file has:
<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
中编写一些定义,它运行拦截器而不是手动添加
For every action I want to have some definition written in struts.xml
which runs the interceptor rather than manually adding
<interceptor-ref name="newStack"/>
推荐答案
<interceptor name="test" class="Full path for LoginInterceptor" />
<interceptor-stack name="testStack">
<interceptor-ref name="test"/>
<interceptor-ref name="defaultStack"/> //here you are including default stack
</interceptor-stack>
</interceptors>
<default-interceptor-ref name="testStack"></default-interceptor-ref>
现在 testStack
将为每个请求执行
Now testStack
will execute for every request
这篇关于在 struts.xml 中为所有 Action 类添加拦截器的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:在 struts.xml 中为所有 Action 类添加拦截器
基础教程推荐
- 无法使用修饰符“public final"访问 java.util.Ha 2022-01-01
- 降序排序:Java Map 2022-01-01
- 减少 JVM 暂停时间 >1 秒使用 UseConcMarkSweepGC 2022-01-01
- 设置 bean 时出现 Nullpointerexception 2022-01-01
- FirebaseListAdapter 不推送聊天应用程序的单个项目 - Firebase-Ui 3.1 2022-01-01
- 在 Libgdx 中处理屏幕的正确方法 2022-01-01
- “未找到匹配项"使用 matcher 的 group 方法时 2022-01-01
- 如何使用 Java 创建 X509 证书? 2022-01-01
- Java Keytool 导入证书后出错,"keytool error: java.io.FileNotFoundException &拒绝访问" 2022-01-01
- Java:带有char数组的println给出乱码 2022-01-01