关闭页面特效

JFinal 学习笔记之Handler包分析

1|0HandlerFactory.java


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

1
2
3
4
5
6
7
8
9
10
11
12
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.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  怎么看这个问题,求解。

2|0Handler.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数组 ,标识是否 被处理 过,我觉得 熟悉代码 还是 要 从 它的实现来分层 发散,所以 下面 的都是 它的实现类。


__EOF__

作  者ღKawaii
出  处https://www.cnblogs.com/kmsfan/p/7496615.html
关于博主:一个普通的小码农,为了梦想奋斗
版权声明:署名 - 非商业性使用 - 禁止演绎,协议普通文本 | 协议法律文本
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!

posted @   yangliwen  阅读(1536)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· 展开说说关于C#中ORM框架的用法!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
0
0
关注
跳至底部
document.getElementById("homeTopTitle").innerText="ღKawaii";
点击右上角即可分享
微信分享提示