首页 > 其他 > 详细

Jfinal----Handler之责任链设计模式

时间:2015-11-09 18:26:43      阅读:369      评论:0      收藏:0      [点我收藏+]

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

Jfinal----Handler之责任链设计模式

原文:http://www.cnblogs.com/haifg/p/4950501.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!