博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JFinal 学习笔记之Handler包分析
阅读量:6171 次
发布时间:2019-06-21

本文共 1891 字,大约阅读时间需要 6 分钟。

HandlerFactory.java

  HandlerFactory是不可实例化的,因为 它的构造 函数 特意定位 私有 的;它有一个 静态的方法叫做 getHandler,它有两个参数 ,一个是Handler的List类型,另一个是一个单一的handler,代码如下 :

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

  如上代码所示 ,从 最后一个 开始 循环 ,然后 把它的next都 赋值 为 第二个参数 的Handler,然后最后 返回 的Handler为第一个参数List中 第一个元素,并 带上了next参数 。使用它的地方就是JFinal的initHandler方法。

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

  不过 我有一点疑问,这个 getHandlerList()方法,能带给 我真正的List吗 ?因为我看 没有 地方 去add它,也就是说,这 个List永远只是 一个 size为 0的List,不知道@JFinal  怎么看这个问题,求解。

Handler.java

  我们 先来 看看 代码 ,这是 一个 抽象类,其中 nextHandler 被 标记为过时的,也就是说 已经 没多少地方用到 了。

public abstract class Handler {        /**     * The next handler     */    protected Handler next;        /**     * Use next instead of nextHandler     */    @Deprecated    protected Handler nextHandler;        /**     * Handle target     * @param target url target of this web http request     * @param request HttpServletRequest of this http request     * @param response HttpServletRequest of this http request     * @param isHandled JFinalFilter will invoke doFilter() method if isHandled[0] == false,     *             it is usually to tell Filter should handle the static resource.     */    public abstract void handle(String target, HttpServletRequest request, HttpServletResponse response, boolean[] isHandled);}

  关键 是看 上面的handle方法,这是一个 抽象方法。这里面 包含了ServletRequest和Response,以及 一个 boolean数组 ,标识是否 被处理 过,我觉得 熟悉代码 还是 要 从 它的实现来分层 发散,所以 下面 的都是 它的实现类。

转载于:https://www.cnblogs.com/kmsfan/p/7496615.html

你可能感兴趣的文章
PostgreSQL 与 12306 抢火车票的思考
查看>>
堆排序
查看>>
Java的热部署(后期完善)
查看>>
我的友情链接
查看>>
响应式微服务 in java 译 Message-Based Microservices<十>
查看>>
流程自动化布局
查看>>
前端构建工具gulp入门教程
查看>>
转载:爱加密40.98%占有率稳居应用加密市场榜首
查看>>
怎么退出 git bash vim编辑器
查看>>
64位Red Hat 6.5 修改yum源
查看>>
Android之人脸识别
查看>>
在centos7开启防火墙后如何让容器能够访问外网
查看>>
技术Leader
查看>>
S3C6410基于SD卡的裸机开发
查看>>
发博小技巧——如何从项目中剔除第三方组件并在GitHub分享
查看>>
人生只有一次,去做自己喜欢做的事情
查看>>
ELK日志分析平台的搭建
查看>>
linux 基本练习题
查看>>
LNMP 安装
查看>>
Linux基础命令
查看>>