Struts2拦截器配置

本文记录Java学习过程中遇到的Struts2拦截器配置~

拦截器

要想让拦截器起作用,首先要对它进行配置。拦截器的配置是在struts.xml文件中完成的,它通常以<interceptor>标签开头,以</interceptor>标签结束。

定义拦截器的语法格式为:

<interceptor name="interceptorName" class="interceptorClass">
	<param name="paramName">paramValue</param>
</interceptor>

上述语法格式中,name属性用来指定拦截器的名称,class属性用于指定拦截器的实现类。有时候,在定义拦截器时需要传入参数,这时需要使用<param>标签,其中name属性用来指定参数的名称,paramValue表示参数的值。

拦截器栈

在实际开发过程中,经常需要在Action执行前同时执行多个拦截动作,例如:用户登录检查、登录日志记录以及权限检查等。这时,可以把多个拦截器组成一个拦截器栈。在使用时,可以将栈内的多个拦截器当成一个整体来引用。当拦截器栈被附加到一个Action上时,在执行Action之前必须先执行拦截器栈中的每一个拦截器。

定义拦截器栈使用<interceptors>元素和<interceptor-stack>子元素,当配置多个拦截器时,需要使用<interceptor-ref>元素来指定多个拦截器,配置语法格式如下:

<interceptors>
	<interceptor-stack name="interceptorStackName">
		<interceptor-ref name="interceptorName"/>
	</interceptor-stack>
</interceptors>

在上述语法中,interceptorStackName值表示配置的拦截器栈的名称;interceptorName值表示拦截器的名称。

除此之外,在一个拦截器栈中还可以包含另一个拦截器栈,示例代码如下:

<package name="default" namespace="/" extends="struts-default">
	<interceptors>
		<interceptor name="interceptor1" class="interceptor1Class">
		<interceptor name="interceptor2" class="interceptor2Class">
		<interceptor-stack name="myStack">
			<interceptor-ref name="defaultStack" />
			<interceptor-ref name="interceptor1" />
			<interceptor-ref name="interceptor2" />
		</interceptor-stack>
	</interceptors>
</package>

在上述代码中,定义的拦截器栈时myStack,在myStack栈中,除了引用了两个自定义的拦截器interceptor1和interceptor2外,还引用了一个内置拦截器栈defaultStack,这个拦截器是必须要引入的。

标签: none