</interceptors>
3.定义拦截器栈
将多个拦截器合并在一起组成一个拦截器栈(拦截器链),当一个拦截器栈被应用到一个 Action的时,必须先执行完拦截器堆栈中的每一个拦截器后,才进入Action的执行。
定义拦截器栈可以使用
也可以在一个拦截器栈中包含另一个拦截器栈,例如下面的表示形式:
</interceptor-stack>
拦截器栈2中除了包含拦截器4与拦截器5,还包含了拦截器栈1,而拦截器栈1中又包含有3个拦截器,所以,拦截器栈2共包含有5个拦截器。
4.定义带参数的拦截器栈
系统为开发者提供了两个机会来为拦截器指定参数。
·定义拦截器时指定参数值:这种参数值为拦截器参数的默认值。
·使用拦截器时指定参数:这种参数是在使用该拦截器时动态分配的参数值。
下面是在配置拦截器栈时为拦截器指定参数,语法如下。
参数值1</param> 参数值2</paran>
6
???更多参数
</interceptor-ref>
????更多拦截器 </interceptor-stack>
也可以针对一个拦截器堆栈统一指定所有的参数:
</interceptor-stack>
5.引用拦截器或拦截器栈
定义好了一个拦截器就可以使用这个拦截器来拦截Action了! 在struts.xml文件中配置片段如下:
以下为使用拦截器
七、为包(package)配置默认的拦截器
以前在struts.xml文件中配置一个包时,没有为包中的Action指定任何拦截器,则系统默认拦截器将会起作用。
通常情况下定义包时都会有如下的形式。
7
当继承了struts-default包时,也就继承了它的默认拦截器栈:defaultStack,如果在包中没有为Action指定拦截器时,则defaultStack将会默认地去拦截 Action。 一旦为包中的某个Action指定了某个拦截器,则默认的拦器栈将不会起作用。如果该包中的Action都还需要使用默认拦截器,就要手动配置默认拦截器栈。 在 配置文件中包的默认拦截器配置代码片段如下: </interceptors> 个默认拦截器(栈)> </package> </struts> 一个包中只能配置一个默认拦截器。 如果需要把多个拦截器都配置为默认拦截器,可以把这些拦截器定义为一个拦截器栈,然后把这个栈配置为默认拦截器就可以达到目的。 为包(package)配置默认的拦截器(带参数的) 与在Action中使用普通拦截器一样,在配置默认拦截器时也可以为其指定参数, 在 下面是在配置默认拦截器时为拦截器指定参数的示例: 8 参数值1</param> 参数值2</param> ?? </default-interceptor-ref> ?? 八、总结一下与拦截器相关的配置元素。 ● ● ● ● ●元素:用来为拦截器指定参数,它可以做 九、Struts2的内置拦截器 Struts 2.0框架的大部工作,都是通过内建拦截器来实现的,比如解析请求参数、参数类型转换、将请求参数值赋值给Action的属性、数据校验等。 Struts 2.0框架中提供了大量的内建拦截器,这些拦截器都是以key-value键值对的形式配置在 struts-default.xml文件中,文件位置: 源文件位置:struts-2.0.14\\src\\core\\src\\main\\resources\\ struts-default.xml 包路径位置:struts2-core-2.0.14.jar\\struts-default.xml 代码如下(需要使用时再查阅):