zoukankan      html  css  js  c++  java
  • Struts2自定义拦截器

    自定义拦截器

    1). 具体步骤

    I. 定义一个拦截器的类

    > 可以实现 Interceptor 接口
    > 继承 AbstractInterceptor 抽象类

    II然后在拦截器类的interceptor()方法中定义这个拦截器的功能

    III. 在 struts.xml 文件配置.

    1注册拦截器

    <interceptors>
    <interceptor name="hello" class="com.atguigu.struts2.interceptors.MyInterceptor"></interceptor>
    </interceptors>
    2使用拦截器:<interceptor-ref name="hello"></interceptor-ref>
    <action name="testToken" class="com.atguigu.struts2.token.app.TokenAction">
    <interceptor-ref name="hello"></interceptor-ref>
    <interceptor-ref name="defaultStack"></interceptor-ref>
    <result>/success.jsp</result>
    <result name="invalid.token">/token-error.jsp</result>
    </action>
    III. 注意: 在自定义的拦截器中可以选择不调用 ActionInvocation 的 invoke() 方法. 那么后续的拦截器和 Action 方法将不会被调用.
    Struts 会渲染自定义拦截器 intercept 方法返回值对应的 result(比如验证用户权限、验证用户是否登录)

    意外的收获:

    1若想Struts2中的拦截器的属性可以参照下面

    <interceptors>
    <interceptor-stack name="atguigustack">
    <interceptor-ref name="defaultStack">
    <param name="fileUpload.maximumSize">2097152</param>
    <!--
    <param name="fileUpload.allowedTypes">text/html,text/xml</param>
    <param name="fileUpload.allowedExtensions">html,dtd,xml</param>
    -->
    </interceptor-ref>
    </interceptor-stack>
    </interceptors>
    然后再把默认拦截器栈变为自己定义的拦截器栈,这一步一定要,没有的话Struts2不能被加载
    <default-interceptor-ref name="atguigustack"></default-interceptor-ref>

    2若想自己定义的拦截器被全部Action都能使用,可以使用以下方方式:

    <package name="FileUploadTest" namespace="/" extends="struts-default"> 
            <!-- 注册自定义的拦截器 -->
            <interceptors>
                <interceptor name="hello" class="com.atguigu.struts2.Interceptor.app.TestInterceptor"></interceptor>
                
           
                <!-- 配置全部Action使用的拦截器 -->
                
                <interceptor-stack name="atguigustack">
                        <interceptor-ref name="hello"></interceptor-ref>
                        <interceptor-ref name="defaultStack"></interceptor-ref>
               </interceptor-stack>
            </interceptors>
            
                <!-- 使用自己修改后的拦截器栈 -->
                <default-interceptor-ref name="atguigustack"></default-interceptor-ref>
                
  • 相关阅读:
    【BZOJ4008】[HNOI2015] 亚瑟王(DP)
    【BZOJ4416】 [SHOI2013] 阶乘字符串(状压DP)
    【BZOJ4524】[CQOI2016] 伪光滑数(堆的套路题)
    【洛谷5336】[THUSC2016] 成绩单(区间DP)
    【洛谷4238】【模板】多项式乘法逆
    【洛谷4707】重返现世(kth Min-Max容斥+动态规划)
    【洛谷5339】[TJOI2019] 唱、跳、rap和篮球(容斥+NTT)
    【洛谷3723】[AH2017/HNOI2017] 礼物(FFT)
    【LOJ2290】「THUWC2017」随机二分图(状压+记忆化搜索)
    【洛谷5795】[THUSC2015] 异或运算(可持久化Trie)
  • 原文地址:https://www.cnblogs.com/jeremy-blog/p/3995563.html
Copyright © 2011-2022 走看看