[11] 拦截器(langsin.com)

1、struts2 不能使用的解决办法:看是否存在web.xml,并配置<filter></filter>  <filter-mapping></filter-mapping>

2、拦截器机制:struts2之所以能完成各类Action的跳转,就是通过其struts-default.xml内定义的各类拦截器实现的;如果不指定某一个Action的拦截器,struts2会使用一个defaultstack(拦截器栈)来拦截,一旦指定了Action的拦截器,则defaultstack就不起作用了,如果想一起使用"自定义拦截器"和"系统默认拦截器"就必须在struts.xml内同时声明。

3、拦截器参数:(见红字

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
 <package name="struts2" extends="struts-default">
  <interceptors>
   <interceptor name="MyInterceptor" class="com.test.interceptor.MyInterceptor">
    <param name="hello">world</param>  //定义时改变hello的值,hello是定义在MyIntercepter中定义的私有属性(private string hello),并提供了getter和setter方法。
   </interceptor>
  </interceptors>
 
  <action name="login" class="com.test.action.LoginAction">
   <result name="input">/login2.jsp</result>
   <result name="success">/result.jsp</result>
   <result name="failer">/login2.jsp</result>
  </action>
  
  <action name="PointConverter" class="com.test.action.PointAction">
   <result name="success">/output.jsp</result>
   <result name="input">/login2.jsp</result>
   <result name="failer">/login2.jsp</result>
  </action>
  
  <action name="Register" class="com.test.action.RegisterAction">
   <result name="success">/success.jsp</result>
   <result name="input">/register.jsp</result>
   <interceptor-ref name="MyInterceptor">
    <param name="hello">wel</param>   //使用时改变参数hello的值
   </interceptor-ref>
   <interceptor-ref name="defaultStack"></interceptor-ref>
  </action>
 </package>
</struts>

注意:后面“运行时”的参数会覆盖“声明中"的参数.即:hello的值为wel,在服务器重启的时候加载。

 

4、自定义拦截器栈和默认拦截器:在struts.xml内,可以自定义组合拦截器形成栈;默认拦截器会自动应用于所有的Action中

 <interceptors>
   <interceptor name="MyInterceptor" class="com.test.interceptor.MyInterceptor">
    <param name="hello">world</param>
   </interceptor>
   
   <interceptor-stack name="MyStack">
    <interceptor-ref name="MyInterceptor"></interceptor-ref>
    <interceptor-ref name="defaultStack"></interceptor-ref>
   </interceptor-stack>

      <default-interceptor-ref name="MyStack"></default-interceptor-ref>  //默认拦截器


  </interceptors>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值