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的主要内容,如果未能解决你的问题,请参考以下文章