当前位置: 首页 > 工具软件 > JPress > 使用案例 >

【JPress】core.web(2)

柳均
2023-12-01

2021SC@SDUSC


目录

一、web.handler

1.JPressHandler

二、JPressCoreFunctions

1.JPressCoreFunctions

三、Render

1.TemplateRender

2.JPressRenderFactory


一、web.handler

1.JPressHandler

web.handler包下有JPressHandler类和AttachmentHandlerKit类,AttachmentHandlerKit类是服务于JPressHandler类的附件处理工具类。JPressHandler类继承了Handler类,是JPress内部的一个伪静态处理器。其作用大致如下:

  • 安全拦截。不让前端访问 插件目录 下的 .html、 .sql 文件 和 WEB-INF 目录下的任何文件,不让访问 模板目录 下的 .html 文件。

  • 兼容 v3 的模板。

  • 处理附件目录。

  • 启用伪静态。

二、JPressCoreFunctions

1.JPressCoreFunctions

JPressCoreFunctions类是JPress的core.web包下的函数库,内置了许多方法协助其他包处理拦截器和控制器的业务。例如:

public static String escape(String html) {
    if (html == null || html.trim().length() == 0) {
        return "";
    }
    return StrUtil.escapeHtml(html);
}

为html的包装函数。

public static String para(String key, String defaultValue) {
    return JbootControllerContext.get().get(key, defaultValue);
}

为获取Controller参数的函数。

三、Render

Render为core.web下的负责渲染视图的包,有两个类:JPressRenderFactory和TemplateRender。

1.TemplateRender

jfinal 提供了 RenderFactory 来定制 Controller.render 所有 render 方法的实现类,TemplateRender是定制 Controller.render(String view) 实现类的一个渲染类。

TemplateRender代码中 render() 方法重写了父类 Render.render() 方法,将切换掉 Controller.render(String view) 的实现类。Controller 中所有 render 方法的实现类都可以通过这种方式来切换到自己的实现类上去,极度方便灵活。

除了重写 render() 外,JPress自带的渲染器还添加了renderHtml()来渲染html视图。

除了这些方法外,TemplateRender类还有其他方法用于渲染时的状态、参数、格式、模板等处理。

2.JPressRenderFactory

JPressRenderFactory的继承关系如下,其父类的父类为JFinal的RenderFactory。

父类 RenderFactory.getRender(...) 方法,可以切换掉 Controller.render(String view) 的实现类。同理,可以通过覆盖掉 getXXXXRender() 来切换掉 Controller.getXXXXRender(),十分灵活。

在JPressRenderFactory中重写了getErrorRender()方法,渲染了特定的404页面。除了重写,还新增了getTemplateRender()方法,为JPress定制的模板类定制了渲染的方法。

以上为JPress的core包下负责处理消息队列、提供核心函数库、定制JPress模板渲染的三个核心文件的分析。

 类似资料: