zoukankan      html  css  js  c++  java
  • Jfinal----Handler之责任链设计模式

    Jfinal handler的处理采用了责任链设计模式

    有关责任链模式,推荐看:

    《JAVA与模式》之责任链模式

    1、实现Handler只需要继承Handler

    public class DemoHandler extends Handler {
    
        @Override
        public void handle(String target, HttpServletRequest request,
                HttpServletResponse response, boolean[] isHandled) {
    
        }
    
    }

    2、在继承JFinalConfig的文件中添加配置即可

        /**
         * 配置处理器
         */
        public void configHandler(Handlers me) {
            me.add(new DemoHandler());
        }

    以上两步就搞定Handler

    在Jfinal中handler源码实现:

    1、启动涉及Handler的主要执行过程

    JFinalFilter--->JFinal(init()方法)---->initHandler()(初始化handler)

    2、在initHandler()方法中

    private void initHandler() {
            Handler actionHandler = new ActionHandler(actionMapping, constants);
            handler = HandlerFactory.getHandler(Config.getHandlers().getHandlerList(), actionHandler);
        }

    3、最主要的过程使配置的Handler形成链式结构

    /**
         * Build handler chain
         */
        public static Handler getHandler(List<Handler> handlerList, Handler actionHandler) {
            Handler result = actionHandler;
            
            for (int i=handlerList.size()-1; i>=0; i--) {
                Handler temp = handlerList.get(i);
                temp.nextHandler = result;
                result = temp;
            }
            
            return result;
        }

    具体过程,用一张图表示

    可以经过交换,handler的执行过程为:handler1--->handler2--.....--->ActionHandler

  • 相关阅读:
    Jmeter——关联与正则
    Jmeter图形插件扩展
    Jmeter——检查点
    Jmeter——集合点
    OpenGL帧缓存对象(FBO:Frame Buffer Object)(转载)
    unicode 和 utf8
    管理node的版本
    pyqt5 开发环境
    cmake
    一些可能常用的工具函数
  • 原文地址:https://www.cnblogs.com/haifg/p/4950501.html
Copyright © 2011-2022 走看看