struts2拦截器之配置和使用

struts2拦截器实现对Action插拨式管理,即Action执行前后插入代码或去掉拦截器。

1.struts2拦截器配置

通过制定拦截器名和拦截器实现类定义拦截器。

配置格式:

1.1 无参数形式

<interceptor  name="拦截器名"   class="拦截器实现类"/> 

1.2 有参数形式

<interceptor  name="拦截器名"   class="拦截器实现类">

   <!--    参数可以有多个,无限制-->

    <param  name="参数名">参数值</param>

</interceptor>

1.3 拦截器栈配置

<interceptor-stack   name="拦截器栈名">

   <interceptor-ref  name="拦截器1"/>

   <interceptor-ref  name="拦截器2"/>

   .......................可以配置多个

</interceptor-stack>

1.4  拦截器栈引用拦截器栈

<interceptor-stack   name="拦截器栈名A">

   <interceptor-ref  name="拦截器1"/>

   <interceptor-ref  name="拦截器2"/>

   .......................可以配置多个

</interceptor-stack>

=================

<interceptor-stack   name="拦截器栈名B">

   <interceptor-ref  name="拦截器3"/>

   <interceptor-ref  name="拦截器栈名A"/>

   .......................可以配置多个

</interceptor-stack>

B就有A的所有拦截器

*************************************************************************************************************************************

2.拦截器使用

拦截器和拦截器栈一旦定义,将可以用来拦截我们定义的Action,在Action配置的方法执行前,先执行拦截器。

如下代码,一旦访问loginAction,就会先执行拦截器,最后执行login方法,返回结果,指定视图。

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
	"-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN"
	"http://struts.apache.org/dtds/struts-2.1.7.dtd">

<struts>

    <package name="login" extends="struts-default">
    	<!-- 定义拦截器 -->
    	<interceptors>
    		<interceptor name="security" class="com.lanhuigu.interceptor.SecurityInterceptor"/>
    	</interceptors>  
        <action name="login" class="com.lanhuigu.action.LoginAction" method="login">
        	<!-- 使用自定义拦截器,不用默认拦截器 -->
        	<interceptor-ref name="security"></interceptor-ref> 
        	<!-- 登录成功,跳转到成功页面的首页 -->
            <result name="success">/index.jsp</result>
            <!-- 登录失败,跳转到登录页面,重新登录 -->
            <result name="error">/login/jsp/login.jsp</result>
        </action>
    </package>

</struts>

拦截器实现类

package com.lanhuigu.interceptor;

import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.Interceptor;
/**
 * 自定义拦截器实现类
 */
public class SecurityInterceptor implements Interceptor{

	@Override
	public void destroy() {
		// TODO Auto-generated method stub
		System.out.println("destroy---服务销毁时执行");
	}

	@Override
	public void init() {
		// TODO Auto-generated method stub
		System.out.println("init--服务启动初始化时执行");
	}

	@Override
	public String intercept(ActionInvocation invocation) throws Exception {
		// TODO Auto-generated method stub
		System.out.println("执行action目标方法前,先执行我");
		String result = invocation.invoke();
		return result;
	}

}









你可能感兴趣的:(struts2,interceptors,拦截器配置,拦截器定义)