JFinal

一.configConstant配置

public void configConstant(Constants me) {
}

1. 读取文件配置 使用loadPropertyFile或者PropKit

PropKit.use("config.properties");使用 PropKit.get("jdbcUrl") 获取
loadPropertyFile("config.properties");使用 getProperty("jdbcUrl") 获取

2. 设置开发模式

默认flase
me.setDevMode(PropKit.getBoolean("devMode"));
设置Action Report什么出现 默认true
me.setReportAfterInvocation(false);

3. 设置 ViewType

默认是Freemarker
me.setViewType(ViewType.JSP);

4.设置视图路径 –取消

默认WebRoot
me.setBaseViewPath("/WEB-INF/view");   --BaseViewPath

5.设置上传路径

cos组件有效 jfinal默认有值 相对 绝对都可以 "/"代表绝对路径
默认是 upload
me.setBaseUploadPath("amoqiload");  UploadFile file = getFile("img");
me.setMaxPostSize(1024*1024*20); //设置最大上传大小

6. 设置默认下载路径

cos组件有效 jfinal默认有值  相对 绝对都可以  "/"代表绝对路径
默认是 download
me.setBaseDownloadPath("amoqidownload");

7. 设置默认的Freemarker模板文件后缀名 jfinal默认.html

me.setFreeMarkerViewExtension(".ftl");
me.setJspViewExtension(".jtl");
me.setVelocityViewExtension(".vtl");

8.设置参数分隔符

默认是 -
me.setUrlParaSeparator("~");

9.设置国际化

me.setI18nDefaultBaseName("i18n");
me.setI18nDefaultLocale("zh_CN"");

10.设置Error View

me.setError404View("404.html");
me.setErrorRenderFactory(errorRenderFactory);

11.设置编码

me.setEncoding("GBK");

12.设置渲染工厂

设置默认的xml渲染工厂 默认使用Freemarker render渲染
me.setXmlRenderFactory(自定义工厂);

13设置默认json中时间格式化

me.setJsonDatePattern("yyyy-mm-dd HH:mm");
me.setJsonFactory(FastJsonFactory.me());
renderJson 和JsonKit底层依赖于JsonManager中设置的JsonFactory

14.设置自己Log的工厂实现

me.setLogFactory(Slf4JLogFactory.me());

二.configRoute配置

public void configRoute(Routes me) {}

1.基本配置说明

me.add(controllerKey, controllerClass, viewPath);
controllerKey:访问controller需要的路径(key)
controllerClass:需要访问的controller类
viewPath:视图路径
最后一个viewPath可以省略,省略后默认为第一个
me.add("/", IndexController.class);
me.add("/user", UserController.class,"/user");
finalView(视图位置) = baseViewPath(configConstant配置里) + viewPath(this) + view (render里)

2.扩展配置说明

当需要添加的路由过多,或者项目由大型团队开发可以拆分路由配置可以新建一个类(此处为 FrontRoutes) 需要继承 Routes 添加路由public class FrontRoutes extends Routes {@Overridepublic void config() {add("/",IndexController.class);add("/user",UserController.class);}
}
me.add(new FrontRoutes());  //configRoute配置 即可

三.configPlugin配置

1.基本说明

    Plugin都有自己的生命周期,public void configPlugin(Plugins me) {//Jfinal配置插件//输入库连接池//C3p0Plugin c3p0Plugin = new C3p0Plugin(getProperty("jdbcUrl"), getProperty("user"), getProperty("password"));C3p0Plugin c3p0Plugin = new C3p0Plugin(PropKit.get("jdbcUrl"), PropKit.get("user"), PropKit.get("password"));//ORM ActiverecordActiveRecordPlugin arp = new ActiveRecordPlugin(c3p0Plugin);arp.setShowSql(true);arp.addMapping("user", User.class);me.add(c3p0Plugin);me.add(arp);
}**重启程序或者热加载会重新启用插件**

2.扩展配置说明

如果需要自定义插件 需要实现IPlugin接口,并实现接口中的两个方法start(); stop();
MyPlugins myPlugins = new MyPlugins();
me.add(myPlugins);

四.configInterceptor(拦截器)配置

1.拦截位置和拦截级别

  1. 拦截位置

    • Controller
    • Service
    • 甚至是Jar包中需要拦截处理的对象
  2. 级别

    • 全局拦截器Global
    • Class
    • Method
    • Inject拦截器

2.自定义拦截器配置 (是否为手机登录的验证)

me.addGlobalActionInterceptor(new PhoneInterceptor());    //MainConfig   MainConfig配置public class PhoneInterceptor implements Interceptor {     //PhoneInterceptor  自定义拦截器
@Override
public void intercept(Invocation inv) {Controller c = inv.getController();boolean isPhone = isPhone(c);c.getSession().setAttribute("isPhone", isPhone);inv.invoke();
}
public boolean isPhone(Controller c){HttpServletRequest request = c.getRequest();System.out.println(request.getHeader("user-agent"));String userAgent = request.getHeader("user-agent");if(userAgent!=null){userAgent = userAgent.toLowerCase();return userAgent.indexOf("iphone")!=-1 || userAgent.indexOf("android")!=-1;}return false;}
}

五.处理器配置configHandler

1.处理器说明

  • JFinal的入口是JFinalFilter,下一步接管请求的就是Handler
  • 可以接管所有的web请求
  • 完全掌控整个应用
  • 实现更高层次的功能扩展

2.可实现的功能

  1. 自定义路由规则
  2. URL伪静态处理
  3. 资源控制访问
  4. 操作日志入库
  5. 更高级的权限管理
  6. 等等

3.自定义实现

me.add(new MyHandlers());    //MainConfig   public class MyHandlers extends Handler {   //MyHandlers
@Override
public void handle(String target, HttpServletRequest request,HttpServletResponse response, boolean[] isHandled) {System.out.println("===log:"+new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())+":"+target);next.handle(target, request, response, isHandled);}
}

六 afterJFinalStart和beforeJFinalStop配置

1.afterJFinalStart基本说明

  1. 调用时间

    • 在JFinal启动(init)之后回调
  2. 可以做什么
    • 系统启动后创建时间调度线程处理调度任务
    • 开启数据同步线程 同步一些数据
    • 缓存数据初始化
    • Application级别的全局变量设置初始化
    • 开启一个webSocket服务

2.beforeJFinalStop基本说明

  1. 调用时间

    • 在JFinal系统关闭之前回调
  2. 可以做什么
    • 关闭一些自定义线程
    • 清空一些数据 关闭一些服务

3.自定义实现

    @Override                   //MainConfig 中实现即可
public void beforeJFinalStop() {System.out.println("beforeJFinalStop:JFinal关闭前需要处理的东西");
}

JFinal配置说明相关推荐

  1. java商城_基于Java,jfinal web框架开发出微信商城,微信分销商城源码分享

    项目简介: 专门针对微信服务号开发的一套微信商城,微信分销商城,支持商品多规格,支持按地区设置邮费,支持限时打折,订单返现,满减送,满包邮,支持订单打印,订单打印模板自定义,发货单打印,发货单打印模板 ...

  2. linux kvm虚拟化命令,Linux系统下kvm虚拟化(三)日常管理常用命令和配置说明

    根据我们之前创建和一些操作可以知道,KVM虚拟机的管理主要是通过virsh命令对环境下kvm虚拟机进行管理,下边这里整理一些常用的配置说明以及如何进行日常管理维护. 1,查看KVM虚拟机配置文件 KV ...

  3. Angular应用中tsconfig.json文件配置说明及配置全局路径映射

    tsconfig.json文件配置说明 1. tsconfig.json文件中的选项配置 2. 配置全局路径映射 1. tsconfig.json文件中的选项配置 TypeScript编译器配置文件的 ...

  4. jfinal整合shiro回顾

    2019独角兽企业重金招聘Python工程师标准>>> 目前jfinal使用shiro进行身份验证和授权的后台实现已完成,现在我再来总结下学习过程及代码实现过程.最近半年多项目开发都 ...

  5. jfinal框架下使用c3P0连接池连接sql server 2008

    2019独角兽企业重金招聘Python工程师标准>>> 闲话少说 进入正题 首先是工程需要的jar包 然后是c3p0的配置文件.我是这样配置的 仅供参考 jdbcDriver = c ...

  6. Jfinal Generator 不需要生成带某个前缀的表名数组的方法

    2019独角兽企业重金招聘Python工程师标准>>> package com.demo.common.model; import javax.sql.DataSource; imp ...

  7. SoJpt Boot 2.3-3.8 发布,Spring Boot 使用 Jfinal 特性极速开发

    SoJpt Boot 2.3-3.8 发布了.SoJpt Boot 基于 JFinal 与 Spring Boot制作, 实现了 Spring Boot 与 Jfinal 的混合双打,使 Spring ...

  8. 关于Jfinal的分享代码托管GitHub

    为什么80%的码农都做不了架构师?>>>    Blog中所有的代码已经托管到github. https://github.com/b1412 此blog中关于Jfinal的代码分享 ...

  9. jfinal js 拦截_jfinal全局数据拦截器

    封装json体.依赖 fastjson.需要的拿走. 此拦截器不处理带文件表单,请自行修改.import com.alibaba.fastjson.JSONObject; import com.jfi ...

最新文章

  1. Spring系列之一 Spring MVC
  2. 阿里云在线web IDE:云效云端开发 DevStudio(ide.aliyun.com)
  3. ultraedit26 运行的是试用模式_如何并行运行你的自动化测试?
  4. 用 Kaggle 经典案例教你用 CNN 做图像分类!
  5. git两个账号切换_Git切换账号方法
  6. java workthread_Java多线程基础(十)——Work Thread模式
  7. mui初级入门教程(六)— 模板页面实现原理及多端适配指南
  8. 明晚直播丨基于IB网络的Oracle Extend RAC最佳实践
  9. 使用Oracle 11g新特性 Active Database Duplication 搭建Dataguard环境
  10. wgs-84,gcj-02,bd-09的相互转换,高德,世界测量,百度坐标系的相互转换,坐标系转换
  11. 开源引擎推荐—ElGameEngine 作者:trcj(http://blog.csdn.net/trcj1)
  12. linux 脚本 if then,shell学习之if-then语法
  13. [源码和报告分享] 基于VC++的MFC类库实现的通讯录管理系统
  14. 深职院计算机专业宿舍,深圳职业技术学院宿舍怎么样 住宿条件好不好
  15. “5G+工业互联网”重点企业,苏州真趣成功入选
  16. Python基础总结
  17. spring cloud SnakeYAML RCE
  18. 华为U9508一键root
  19. 批量添加文件名前后缀的工具_艾孜尔江撰
  20. Pair:医学图像标注神器

热门文章

  1. 提问的智慧 (全文)
  2. getElementByID getElementsByName getElementsByTagName用法详解
  3. oracle得到最大日期,Oracle最大日期获取方法
  4. 报错: Called “net usershare info“ but it failed
  5. linux中位置变量
  6. 了解一下winsock
  7. easyUI,radio控制select
  8. 移动通信的一些技术名词英文缩写解释
  9. 前端开发审查元素时CSS样式有个横线(该CSS样式定义后无效) 的解决办法
  10. 营销-营销方式:营销方式