• Struts拦截器(转)


    xml

    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
        "http://struts.apache.org/dtds/struts-2.3.dtd">
    
    <struts>
        <package name="hello" extends="struts-default">
        
            <!-- 【拦截器配置】 -->
            <interceptors>
            
                <!-- 配置用户自定义的拦截器 -->
                <interceptor name="helloInterceptor" class="cn.itcast.a_interceptor.HelloInterceptor"></interceptor>
                
                <!-- 自定义一个栈: 要引用默认栈、自定义的拦截器 -->
                <interceptor-stack name="helloStack">
                    <!-- 引用默认栈 (一定要放到第一行)-->
                    <interceptor-ref name="defaultStack"></interceptor-ref>
                    <!-- 引用自定义拦截器 -->
                    <interceptor-ref name="helloInterceptor"></interceptor-ref>
                </interceptor-stack>
                
            </interceptors>
            
            <!-- 【执行拦截器】 -->
            <default-interceptor-ref name="helloStack"></default-interceptor-ref>
            
        
            <!-- Action配置 -->
            <action name="hello" class="cn.itcast.a_interceptor.HelloAction">
                <result name="success">/index.jsp</result>
            </action>
        
        
        </package>
    </struts>

    action

    package cn.itcast.a_interceptor;
    
    import com.opensymphony.xwork2.ActionSupport;
    
    /**
     * Action开发测试
     * @author Jie.Yuan
     *
     */
    public class HelloAction extends ActionSupport{
    
        public HelloAction() {
            System.out.println("1. Action实例创建了");
        }
        
        @Override
        public String execute() throws Exception {
            System.out.println("3. 执行了请求处理的方法: execute");
            return super.execute();
        }
    }

    Interceptor

    package cn.itcast.a_interceptor;
    
    import com.opensymphony.xwork2.ActionInvocation;
    import com.opensymphony.xwork2.interceptor.Interceptor;
    
    /**
     * 自定义拦截器
     * @author Jie.Yuan
     *
     */
    public class HelloInterceptor implements Interceptor{
        
        // 启动时候执行
        public HelloInterceptor(){
            System.out.println("创建了拦截器对象");
        }
    
        // 启动时候执行
        @Override
        public void init() {
            System.out.println("执行了拦截器的初始化方法");
        }
    
        // 拦截器业务处理方法 (在访问action时候执行? 在execute之前执行?)
        @Override
        public String intercept(ActionInvocation invocation) throws Exception {
            System.out.println("2. 执行Action之前");
            
            // 调用下一个拦截器或执行Action  (相当于chain.doFilter(..)
            // 获取的是: execute方法的返回值
            String resultFlag = invocation.invoke();
            
            System.out.println("4. 拦截器,业务处理-结束" + resultFlag);
            
            return resultFlag;
        }
        
    
        @Override
        public void destroy() {
            System.out.println("销毁....");
        }
    
    
    }
  • 相关阅读:
    Android popupwindow和dialog监听返回键
    Android开发常用资料传送门
    Android 自己搭建一个直播系统吧
    js 时间戳转换成几分钟前,几小时前,几天前
    Android 热补丁动态修复框架小结
    【活动】参加葡萄城控件主办的“谁是报表达人”知识评测活动,赢取iPad Mini2团队
    上周热点回顾(3.24-3.30)团队
    C#正则表达式引发的CPU跑高问题以及解决方法团队
    上周热点回顾(3.17-3.23)团队
    实际遭遇GC回收造成的Web服务器CPU跑高团队
  • 原文地址:https://www.cnblogs.com/Damon-Luo/p/5657502.html
Copyright © 2020-2023  润新知