JFinal 1.9 针对于开拓者最为关注的功能有20多项增强及改善。除了提供配置装备部署文件的全局反对于外,还增强了在挪移互联网时期对于JFinal作为效率端及客户真个反对于,好比XmlRender、JsonRender可颇为利便地开拓Xml、Json效率端挨次,HttpKit可能极简地与相似于微信公共平台的API妨碍通讯。除了功能性的增强之外,还对于代码妨碍了优化与精简,更轻、更快、更爽 ^_^
JFinal有如下主要特色:
MVC架构,妄想详尽,运用重大
凭证COC原则,零配置装备部署,无xml
初创Db + Record方式,锐敏利便
ActiveRecord反对于,使数据库开拓极致快捷
自动加载更正后的java文件,开拓历程中无需重启web server
AOP反对于,拦阻器配置装备部署锐敏,功能强盛
Plugin系统妄想,扩展性强
多视图反对于,反对于FreeMarker、JSP、Velocity
强盛的Validator后端校验功能
功能残缺,具备struts2的绝大部份功能
体积小仅248K,且无第三方依赖
jfinal 小例子
清晰jfinal的妄想以及特色
先上图
一、建数据库(我用的是oracle数据库,其余的相对于也差未多少)
-- Create tablecreate table CLASSES
(
classesid NUMBER not null,
classesname VARCHAR2(20),
classesaddress VARCHAR2(50)
);-- Create tablecreate table STUDENT
(
studentid NUMBER not null,
studentname VARCHAR2(10),
studentage NUMBER,
studentsex VARCHAR2(2),
classesid NUMBER);alter table STUDENT add constraint FK_CLASSESID foreign key (CLASSESID) references CLASSES (CLASSESID);
新建名目,我用的myeclipse,先把jar包导入
二、实体类
Classes.java
package com.demo.model;import com.jfinal.plugin.activerecord.Model;public class Classes extends Model<Classes> { public static final Classes dao = new Classes();
}
Student.java
package com.demo.model;import com.jfinal.plugin.activerecord.Model;public class Student extends Model<Student> { public static final Student dao = new Student(); public Classes getClasses() { return Classes.dao.findById(get("classesid"));
}
}
甚么这是实体类?
没错!!~ ActiveRecord 是 jfinal 最中间的组成部份之一,经由 ActiveRecord 来操作数据库,将极大地削减代码量,极大地提升开拓功能,配置装备部署在前面,我这里用的是Model,Model 是 ActiveRecord 中最紧张的组件之一,它充任 MVC 方式中的 Model部份。
以上代码中的 User 经由秉持 Model,便赶快具备的泛滥利便的操作数据库的措施。在 User 中申明的 dao 动态工具是为了利便查问操作而界说的,该工具并非必需的。 基于ActiveRecord 的 Model 无需界说属性, 无需界说 getter、 setter措施,无需 XML 配置装备部署,无需 Annotation 配置装备部署,极大飞腾了代码量。Model罕有措施见民间API。
JFinal尚有 初创 Db + Record 方式,Db 类及其配套的 Record 类, 提供了在 Model 类之外加倍丰硕的数据库操作功能。运用 Db 与 Record 类时,无需对于数据库表妨碍映射,Record 至关于一个通用的 Model。Db罕有措施见民间API。
JFinal 1.9 changelog
1:削减PropKit、Prop利便全局运用配置装备部署,配置装备部署文件加载默认目录改为类道路之下,适宜maven习气
2:增强jsp之下的jstl的EL输入,削减ModelRecordElResolver,JspRender.isSupportActiveRecord默认值改为false,默认运用EL增强
3:削减HttpKit及EncryptionKit利便与第三方API妨碍通讯与加密,便于开拓微信公共号这种名目
4:削减Controller.renderXml(String)利便开拓xml效率端名目
5:增强FileRender,文件下载反对于多线程下载以及断点续传功能
6:改善DbPro.tx()与Tx拦阻器事件功能,削减对于抛出Error时的回滚,增强事件清静
7:优化ActionHandler对于动态资源分说功能,反对于对于抛出Error时写日志,利便jvm当掉时排查过错
8:提升Oracle在表数据量极大时ARP初始化功能,OracleDialect.forTableBuilderDoBuild()中sql条件改为rownum<1,fillStatement()削减对于Timestamp的分说
9:优化JsonRender,削减JsonRender.addExcludeAttrs()措施,可能清扫renderJson()时不想转换为json的属性,默认已经清扫tomcat开启SSL后自动天生的属性,利便tomcat反对于SSL
10:优化 StrKit.firstCharToLowerCase、firstCharToUpperCase,功能提升 2.1 倍
11:增强HandlerKit,削减renderError404(),利便在Handler中运用404页面妨碍渲染
12:增强FakeStaticHandler,反对于对于非伪动态action恳求的过滤
13:精简JFinalConfig与配置装备部署加载、读取无关代码
14:ICallback.run()更名为call()
15:凋谢Table.getColumnTypeMap()利便开拓者扩展ARP功能,并使其返回的map为只读确保清静
16:削减Controller.renderText(String, ContentType)利便种种Content Type的text渲染
17:削减com.jfinal.plugin.activerecord.OrderedFieldContainerFactory 类,利便开拓数据库查问工具名目,以便model中的属性迭代输入挨次与sql select后的字段秩序坚持不同
18:优化DruidPlugin,driverClass 默认值改为 null,以便让新版本Druid自动探测该值
19:改善EhCachePlugin,削减RenderInfo、RenderType处置对于render工具缓存时线程清静下场
20:优化SessionInViewInterceptor,跳过处置JsonRender提升功能
21:反对于Controller内public无参措施成为非action,削减com.jfinal.ext.interceptor.NotAction,个别用于在拦阻器中需要操作器提供public无参措施的场景
22:优化JsonKit,listToJson、mapToJson措施可见性改为private,对于这些措施有依赖的代码可改为调用toJson()措施
23:优化Render,去掉对于Serializable接口的实现,删除了所有Render秉持类中的transient关键字以及serialVersionUID属性
文件清单及运用剖析
1:jfinal-1.9-bin.jar
开拓 jfinal 名目仅有必需的 jar 包,此外所有 jar 包都不是必需的
2:jfinal-1.9-src.zip
jfinal 1.9 源代码
3:jfinal-1.9-bin-with-src.jar
jfinal 1.9 开拓包 + 源码 的整合,利便非 maven 开拓者在开拓时调试以及魔难源码,从而不用再径自绑定 jfinal-1.9-src.zip 就能在 IDE 中魔难源码
4:jetty-server-8.1.8.jar
jetty-server-8.1.8.jar 用来反对于无需格外装置 tomcat jetty 等 web server
即可开始开拓,同时它也是反对于热部署的需要包。特意留意在运用tomcat开拓或者部署时需要去掉 jetty-server-8.1.8.jar 包,省患上引起矛盾
5:jfinal-1.9-lib 目录下所有 jar 包
为开拓者豫备的罕用且可能用到的 jar 包,利便非 maven 用户取用。概况请见 jfinal-1.9-lib 目录下的剖析文件:“jfinal-1.9-库文件依赖及运用剖析.txt”