版权声明:网上学习笔记,共享。 https://blog.csdn.net/qq_37346607/article/details/84765126
1. web.xml配置
<!-- 自定义拦截器进行文字过滤拦截 -->
<filter>
<filter-name>interceptor</filter-name>
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter>
<filter-mapping>
<filter-name>interceptor</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
注意: FilterDispathcer (org.apache.struts2.dispatcher.FilterDispatcher) 在早期的Struts2开发中使用,从Struts 2.1.3开始,它已不推荐使用。
如果你使用的Struts的版本 >= 2.1.3,推荐升级到新的Filter-StrutsPrepareAndExecuteFilter (org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter)。
2. 定义拦截器类
package com.centralsoft.framework.interceptor;
import com.opensymphony.xwork2.Action;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;
import com.ArticleAction; // 项目定义的action类
public class CharacterFilterInterceptor extends AbstractInterceptor {
@Override
public String intercept(ActionInvocation ai) throws Exception {
// TODO Auto-generated method stub
//获取action实例
Object obj = ai.getAction();
if(obj!=null){
// TODO 确定你需要处理的Action
if(obj instanceof ArticleAction){ //
ArticleAction action = (ArticleAction)obj;
// TODO 这里就可以开始处理你需要处理的对象
return ai.invoke(); // 将控制转移给后续的拦截器,直到动作
}else{
return Action.LOGIN; // 停止后续的执行,并且决定哪个结果被呈现(引入的struts.xml对应,见第3条)
}
}else{
return Action.LOGIN;
}
}
}
3. 配置struts.xml
<struts>
<package name="cms" namespace="/cms" extends="struts-default">
<!-- 定义拦截器 -->
<interceptors>
<interceptor name="replace"
class="com.CharacterFilterInterceptor"/>
</interceptors>
<action name="articleSaveImage" method="saveImage" class="ArticleAction">
<result name="login">/login.jsp</result>
<result name="success">/success.jsp</result>
<result name="error">/error.jsp</result>
<!-- 使用拦截器 defaultStack是必要的-->
<interceptor-ref name="defaultStack"/>
<interceptor-ref name="replace"/>
</action>
</struts>
另一种方式:
<struts>
<package name="cms" namespace="/cms" extends="struts-default">
<!-- 定义拦截器 -->
<interceptors>
<interceptor name="replace"
class="com.CharacterFilterInterceptor"/>
<interceptor-stack name="myStack">
<interceptor-ref name="replace"></interceptor-ref>
<interceptor-ref name="defaultStack"></interceptor-ref>
</interceptor-stack>
</interceptors>
<action name="articleSaveImage" method="saveImage" class="ArticleAction">
<result name="login">/login.jsp</result>
<result name="success">/success.jsp</result>
<result name="error">/error.jsp</result>
<!-- 使用拦截器 -->
<interceptor-ref name="myStack"/>
</action>
</struts>