您的位置:首页 > 编程语言 > Java开发

STRUTS系列之 拦截器配置

2017-04-17 16:53 363 查看
Struts 为Action配置拦截器有四种方法:

为单个Action指定拦截器

<package name="default" extends="struts-default">
<interceptors>
<!-- 定义名为logger的拦截器 -->
<interceptor name="logger" class="org.sunxin.interceptor.LogInterceptor" />
<!-- 定义名为security的拦截器 -->
<interceptor name="security" class="org.sunxin.interceptor.ValidationInterceptor" />
</interceptors>
<action name="register" class=".....">
<result name="input">register.jsp</result>
<result>login.jsp</result>
<!-- 为register action指定拦截器 -->
<interceptor-ref name="logger" />
<interceptor-ref name="security" />
</action>
</package>


注:该方法适用于action需要拦截器不多或与其他action拦截器不通用的情况下。

为action引用拦截器栈

<package name="default" extends="struts-default">
<interceptors>
<!-- 定义名为logger的拦截器 -->
<interceptor name="logger" class="org.sunxin.interceptor.LogInterceptor" />
<!-- 定义名为security的拦截器 -->
<interceptor name="security" class="org.sunxin.interceptor.ValidationInterceptor" />

<!-- 为上述拦截器设定拦截器栈 -->
<interceptor-stack name="defaultStack" >
<interceptor-ref name="logger" />
<interceptor-ref name="security" />
</interceptor-stack>
</interceptors>

<action name="register" class=".....">
<result name="input">register.jsp</result>
<result>login.jsp</result>
<!-- 为register action指定拦截器栈 -->
<interceptor-ref name="defaultStack" />
</action>
</package>


注:该方法适用于action使用的拦截器较多的情况下,并且拦截器栈也能被其他action引用。

定义默认的拦截器栈

如果多个action都需要相同的拦截器,可以指定默认的拦截器或拦截器栈

<package name="default" extends="struts-default">
<interceptors>
<!-- 定义名为logger的拦截器 -->
<interceptor name="logger" class="org.sunxin.interceptor.LogInterceptor" />
<!-- 定义名为security的拦截器 -->
<interceptor name="security" class="org.sunxin.interceptor.ValidationInterceptor" />

<!-- 为上述拦截器设定拦截器栈 -->
<interceptor-stack name="defaultStack" >
<interceptor-ref name="logger" />
<interceptor-ref name="security" />
</interceptor-stack>
</interceptors>

<default-interceptor-ref name="defaultStack">

<!--register action不需要配置拦截器或拦截器栈,自动使用配置的默认拦截器栈 -->
<action name="register" class=".....">
<result name="input">register.jsp</result>
<result>login.jsp</result>
</action>
</package>


注:如果在action里配置了其他拦截器或拦截器栈,那么action将不会引用默认的拦截器栈,需要显式的配置

如:

<package name="default" extends="struts-default">
<interceptors>
<!-- 定义名为logger的拦截器 -->
<interceptor name="logger" class="org.sunxin.interceptor.LogInterceptor" />
<!-- 定义名为security的拦截器 -->
<interceptor name="security" class="org.sunxin.interceptor.ValidationInterceptor" />
<interceptor name="timer" class="org.sunxin.interceptor.TimernInterceptor" />

<!-- 为上述拦截器设定拦截器栈 -->
<interceptor-stack name="defaultStack" >
<interceptor-ref name="logger" />
<interceptor-ref name="security" />
</interceptor-stack>
</interceptors>

<default-interceptor-ref name="defaultStack">

<!--register action不需要配置拦截器或拦截器栈,自动使用配置的默认拦截器栈 -->
<action name="register" class=".....">
<result name="input">register.jsp</result>
<result>login.jsp</result>

<interceptor-ref name="timer" />
<interceptor-ref name="defaultStack" />
</action>
</package>


注:拦截器都是在包中定义,所以不同包的拦截器不能相互引用,除非两个包之间是继承关系。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  struts