JFinalJFinalConfig

Posted charlottepl

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JFinalJFinalConfig相关的知识,希望对你有一定的参考价值。

JFinalConfig

基于JFinal的web项目需要创建一个继承自JFinalConfig类的子类,该类用于对整个web项目进行配置,JFinalConfig子类需要实现六个抽象方法,如下所示:

public class DemoConfig extends JFinalConfig {
    public void configConstant(Constants me) {}
    public void configRoute(Routes me) {}
    public void configEngine(Engine me) {}
    public void configPlugin(Plugins me) {}
    public void configInterceptor(Interceptors me) {}
    public void configHandler(Handlers me) {}
}

1. configConstant()

  • 常用配置
public void configConstant(Constants me) {
    // 配置开发模式,true 值为开发模式
    //而 me.setDevMode(...) 是设置 jfinal 的开发模式,true 为开发模式,false 为生产模式,开发模式用于开发过程,此配置有助于开发工作,例如会在控制台输出 jfinal action report。                  false 用于生产环境,性能会最大化。
    me.setDevMode(true);
    
    // 配置 aop 代理使用 cglib,否则将使用 jfinal 默认的动态编译代理方案
    me.setToCglibProxyFactory();
    
    // 配置依赖注入
    me.setInjectDependency(true);
    
    // 配置依赖注入时,是否对被注入类的超类进行注入
    me.setInjectSuperClass(false);
    
    // 配置为 slf4j 日志系统,否则默认将使用 log4j
    // 还可以通过 me.setLogFactory(...) 配置为自行扩展的日志系统实现类
    me.setToSlf4jLogFactory();
    
    // 设置 Json 转换工厂实现类,更多说明见第 12 章
    me.setJsonFactory(new MixedJsonFactory());
    
    // 配置视图类型,默认使用 jfinal enjoy 模板引擎
    me.setViewType(ViewType.JFINAL_TEMPLATE);
    
    // 配置基础下载路径,默认为 webapp 下的 download
    me.setBaseDownloadPath(...);
    
    // 配置基础上传路径,默认为 webapp 下的 upload
    me.setBaseUploadPath(...);
    
    // 配置 404、500 页面
    me.setError404View("/common/404.html");
    me.setError500View("/common/500.html");    
}
  • 其他配置
public void configConstant(Constants me) {
    // 配置 encoding,默认为 UTF8
    me.setEncoding("UTF8");
    
    // 配置 json 转换 Date 类型时使用的 data parttern
    me.setJsonDatePattern("yyyy-MM-dd HH:mm");
    
    // 配置是否拒绝访问 JSP,是指直接访问 .jsp 文件,与 renderJsp(xxx.jsp) 无关
    me.setDenyAccessJsp(true);
    
    // 配置上传文件最大数据量,默认 10M
    me.setMaxPostSize(10 * 1024 * 1024);
    
    // 配置验证码缓存 cache,配置成集中共享缓存可以支持分布式与集群
    me.setCaptchaCache(...);
    
    // 配置 urlPara 参数分隔字符,默认为 "-"
    me.setUrlParaSeparator("-");
}

configRoute()

  • 常用配置
public void configRoute(Routes me) {
    // 如果要将控制器超类中的 public 方法映射为 action, 配置成 true,一般不用配置
    me.setMappingSuperClass(false);
    
    // 配置 baseViewPath,可以让 render(...) 参数省去 baseViewPath 这部分前缀,之后render()方法参数可以直接写终点文件,隐去了目录结构。
    me.setBaseViewPath("/view");
    
    // 配置作用于该 Routes 对象内配置的所有 Controller 的拦截器
    me.addInterceptor(new FrontInterceptor());
    
    // 添加路由
    me.add("/hello", HelloController.class);
}

Routes.setBaseViewPath(baseViewPath) 方法用于为该 Routes 内部的所有 Controller 设置视图渲染时的基础路径,该基础路径与Routes.add(…, viewPath) 方法传入的viewPath以及 Controller.render(view) 方法传入的 view 参数联合组成最终的视图路径,规则如下:

finalView = baseViewPath + viewPath + view

注意:当Render()方法中的参数view以 “/” 字符打头时表示绝对路径,baseViewPath 与 viewPath 将被忽略。例如“/hello/index.html”

  • 路由配置 API
    Routes 类中添加路由的方法有两个:
public Routes add(String controllerKey, Class<? extends Controller> controllerClass, String viewPath)
public Routes add(String controllerKey, Class<? extends Controller> controllerClass)

以上是关于JFinalJFinalConfig的主要内容,如果未能解决你的问题,请参考以下文章

微信小程序代码片段

VSCode自定义代码片段——CSS选择器

谷歌浏览器调试jsp 引入代码片段,如何调试代码片段中的js

片段和活动之间的核心区别是啥?哪些代码可以写成片段?

VSCode自定义代码片段——.vue文件的模板

VSCode自定义代码片段6——CSS选择器