interceptor 配置

拦截器允许在action的执行前后插入代码执行 、可以action动态添入 验证 对象组装 权限控制 日志记录 而不需要修改action
要在action配置拦截器首先需要在interceptors 元素使用interceptor 元素定义拦截器没然后在action使用intercepter-ref指定
引用的拦截器。interceptor有两个必要的元素 name和class 前者是拦截器的名字后者是拦截器完整的类名。
 例:我们要为ResourceActrion配置来呢哥哥拦截器logger 和security
<package name="default" extends="struts-default">
 <interceptors>
   <interceptor name ="logger" class="....."/>
   <interceptor name="security" class="...."/>
 </interceptors>
<action name="resoure" class="....">
   <result name="input">login.jsp</result>
  <interceptor-ref name="logger"/>
  <interceptor-ref name="security"/>
</action>
</package>
 
如果一个action需要多个interceptor 我们可以将多个拦截器组成拦截栈,在action应用
<package name="default" extends="struts-default">
 <interceptors>
   <interceptor name ="logger" class="....."/>
   <interceptor name="security" class="...."/>
 </interceptors>
 <interceptor-stack name="loggerStack">
  <interceptor-ref name="logger"></interceptor-ref>
  <interceptor-ref name="security"></interceptor-ref>
 </interceptor-stack>

<action name="aa">
   <result name="input">login.jsp</result>
   <interceptor-ref name="loggerStack"></interceptor-ref>
   </action>
   </package>
 
如果很多的action 需要引用相同的拦截器,那么我们可以使用default-interceptor-ref元素来定义一个默认的
拦截器或者拦截器栈的引用这样就不需要为每个action指定引用信息
<package name="default" extends="struts-default">
 <interceptors>
   <interceptor name ="logger" class="....."/>
   <interceptor name="security" class="...."/>
 </interceptors>
 <interceptor-stack name="loggerStack">
  <interceptor-ref name="logger"></interceptor-ref>
  <interceptor-ref name="security"></interceptor-ref>
 </interceptor-stack>

 <default-interceptor-ref name="loggoerDefault"/>
<action name="aa">
   <result name="input">login.jsp</result>
   </action>
   </package>
 但在这个action定义其他的拦截器的引用,那么这个action将不使用默认的拦截器,如果想在默认的拦截器上
上添加拦截器,中能在action新配置默认拦截器应用的拦截器

你可能感兴趣的:(jsp,struts,Security)