struts2拦截器是可插拔式的设计,如果我们需要使用某个拦截器时,只需要在配置文件中应用该拦截器即可;并且struts2拦截器由struts-default.xml,struts.xml等配置文件进行管理。
配置拦截器:
在struts.xml文件中定义拦截器只需为拦截器类指定一个拦截器名,就完成了拦截器定义(用<interceptor.../>)。
<interceptor name="拦截器名" class="拦截器实现类"/>
同时定义多个拦截器。
<interceptors>
<interceptor name="拦截器名" class="拦截器实现类"/>
<interceptor name="拦截器名" class="拦截器实现类"/>
</interceptors>
如果还需要在配置拦截器的时传入拦截器参数,则需要在<interceptor.../>元素中使用<param.../>子元素。
<interceptor name="拦截器名" class="拦截器实现类">
<param name="参数名">参数值</param>
</interceptor>
除此之外,还可以配置拦截器栈。
<itnerceptor-stack name="拦截器栈名">
<interceptor-ref name="拦截器一"/>
<interceptor-ref name="拦截器二"/>
</interceptor-stack>
使用拦截器:
当定义了拦截器和拦截器栈后,就可以使用这个拦截器或拦截器栈来拦截Action了,拦截行为将在Action的execute方法之前被执行。在Action中使用拦截器的语法和在配置拦截器栈中引用拦截器的语法是一样的。
<action name="login" class="lee.LoginAction">
<result>/welcome.jsp</result>
<interceptor-ref name="拦截器一" />
<interceptor-ref name="拦截器二" />
</action>
注意,一旦在Action中使用了自定义拦截器或拦截器栈则defaultStack就不起作用了。
同样,我们不仅可以在Action中定义拦截器,还可以在包中定义拦截器。具体就不再叙述了,请大家自行摸索或百度。
扫描二维码关注公众号,回复:
6124083 查看本文章