Struts2整合自定义拦截器

版权声明:网上学习笔记,共享。 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>

猜你喜欢

转载自blog.csdn.net/qq_37346607/article/details/84765126