JFinal 1.9 針對開發(fā)者最為關(guān)注的功能有20多項增強(qiáng)及改進(jìn)。除了提供配置文件的全局支持外,還加強(qiáng)了在移動互聯(lián)網(wǎng)時代對JFinal作為服務(wù)端及客戶端的支持,例如XmlRender、JsonRender可極度方便地開發(fā)Xml、Json服務(wù)端程序,HttpKit可以極簡地與類似于微信公眾平臺的API進(jìn)行通信。除了功能性的增強(qiáng)以外,還對代碼進(jìn)行了優(yōu)化與精簡,更輕、更快、更爽 ^_^
JFinal有如下主要特點(diǎn):
MVC架構(gòu),設(shè)計精巧,使用簡單
遵循COC原則,零配置,無xml
獨(dú)創(chuàng)Db + Record模式,靈活便利
ActiveRecord支持,使數(shù)據(jù)庫開發(fā)極致快速
自動加載修改后的java文件,開發(fā)過程中無需重啟web server
AOP支持,攔截器配置靈活,功能強(qiáng)大
Plugin體系結(jié)構(gòu),擴(kuò)展性強(qiáng)
多視圖支持,支持FreeMarker、JSP、Velocity
強(qiáng)大的Validator后端校驗功能
功能齊全,擁有struts2的絕大部分功能
體積小僅248K,且無第三方依賴
jfinal 小例子
了解jfinal的結(jié)構(gòu)和特點(diǎn)
先上圖
1、建數(shù)據(jù)庫(我用的是oracle數(shù)據(jù)庫,其他的相對也差不多)
-- 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包導(dǎo)入
2、實(shí)體類
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"));
}
}
什么這是實(shí)體類?
沒錯!!~ ActiveRecord 是 jfinal 最核心的組成部分之一,通過 ActiveRecord 來操作數(shù)據(jù)庫,將極大地減少代碼量,極大地提升開發(fā)效率,配置在后面,我這里用的是Model,Model 是 ActiveRecord 中最重要的組件之一,它充當(dāng) MVC 模式中的 Model部分。
以上代碼中的 User 通過繼承 Model,便立即擁有的眾多方便的操作數(shù)據(jù)庫的方法。在 User 中聲明的 dao 靜態(tài)對象是為了方便查詢操作而定義的,該對象并不是必須的。 基于ActiveRecord 的 Model 無需定義屬性, 無需定義 getter、 setter方法,無需 XML 配置,無需 Annotation 配置,極大降低了代碼量。Model常見方法見官方API。
JFinal還有 獨(dú)創(chuàng) Db + Record 模式,Db 類及其配套的 Record 類, 提供了在 Model 類之外更為豐富的數(shù)據(jù)庫操作功能。使用 Db 與 Record 類時,無需對數(shù)據(jù)庫表進(jìn)行映射,Record 相當(dāng)于一個通用的 Model。Db常見方法見官方API。
JFinal 1.9 changelog
1:添加PropKit、Prop方便全局使用配置,配置文件加載默認(rèn)目錄改為類路徑之下,符合maven習(xí)慣
2:增強(qiáng)jsp之下的jstl的EL輸出,添加ModelRecordElResolver,JspRender.isSupportActiveRecord默認(rèn)值改為false,默認(rèn)使用EL增強(qiáng)
3:添加HttpKit及EncryptionKit方便與第三方API進(jìn)行通信與加密,便于開發(fā)微信公眾號這類項目
4:添加Controller.renderXml(String)方便開發(fā)xml服務(wù)端項目
5:增強(qiáng)FileRender,文件下載支持多線程下載以及斷點(diǎn)續(xù)傳功能
6:改進(jìn)DbPro.tx()與Tx攔截器事務(wù)功能,添加對拋出Error時的回滾,增強(qiáng)事務(wù)安全
7:優(yōu)化ActionHandler對靜態(tài)資源判斷性能,支持對拋出Error時寫日志,方便jvm當(dāng)?shù)魰r排查錯誤
8:提升Oracle在表數(shù)據(jù)量極大時ARP初始化性能,OracleDialect.forTableBuilderDoBuild()中sql條件改為rownum<1,fillStatement()添加對Timestamp的判斷
9:優(yōu)化JsonRender,添加JsonRender.addExcludeAttrs()方法,可以排除renderJson()時不想轉(zhuǎn)換為json的屬性,默認(rèn)已經(jīng)排除tomcat開啟SSL后自動生成的屬性,方便tomcat支持SSL
10:優(yōu)化 StrKit.firstCharToLowerCase、firstCharToUpperCase,性能提升 2.1 倍
11:增強(qiáng)HandlerKit,添加renderError404(),方便在Handler中使用404頁面進(jìn)行渲染
12:增強(qiáng)FakeStaticHandler,支持對非偽靜態(tài)action請求的過濾
13:精簡JFinalConfig與配置加載、讀取有關(guān)代碼
14:ICallback.run()更名為call()
15:開放Table.getColumnTypeMap()方便開發(fā)者擴(kuò)展ARP功能,并使其返回的map為只讀確保安全
16:添加Controller.renderText(String, ContentType)方便各種Content Type的text渲染
17:添加com.jfinal.plugin.activerecord.OrderedFieldContainerFactory 類,方便開發(fā)數(shù)據(jù)庫查詢工具項目,以便model中的屬性迭代輸出順序與sql select后的字段次序保持一致
18:優(yōu)化DruidPlugin,driverClass 默認(rèn)值改為 null,以便讓新版本Druid自動探測該值
19:改進(jìn)EhCachePlugin,添加RenderInfo、RenderType解決對render對象緩存時線程安全問題
20:優(yōu)化SessionInViewInterceptor,跳過處理JsonRender提升性能
21:支持Controller內(nèi)public無參方法成為非action,添加com.jfinal.ext.interceptor.NotAction,通常用于在攔截器中需要控制器提供public無參方法的場景
22:優(yōu)化JsonKit,listToJson、mapToJson方法可見性改為private,對這些方法有依賴的代碼可改為調(diào)用toJson()方法
23:優(yōu)化Render,去掉對Serializable接口的實(shí)現(xiàn),刪除所有Render繼承類中的transient關(guān)鍵字以及serialVersionUID屬性
文件清單及使用說明
1:jfinal-1.9-bin.jar
開發(fā) jfinal 項目唯一必須的 jar 包,其它所有 jar 包都不是必須的
2:jfinal-1.9-src.zip
jfinal 1.9 源代碼
3:jfinal-1.9-bin-with-src.jar
jfinal 1.9 開發(fā)包 + 源碼 的整合,方便非 maven 開發(fā)者在開發(fā)時調(diào)試和查看源碼,從而不用再單獨(dú)綁定 jfinal-1.9-src.zip 就可以在 IDE 中查看源碼
4:jetty-server-8.1.8.jar
jetty-server-8.1.8.jar 用來支持無需額外安裝 tomcat jetty 等 web server
即可開始開發(fā),同時它也是支持熱部署的必要包。特別注意在使用tomcat開發(fā)或部署時需要去掉 jetty-server-8.1.8.jar 包,以免引起沖突
5:jfinal-1.9-lib 目錄下所有 jar 包
為開發(fā)者準(zhǔn)備的常用且可能用到的 jar 包,方便非 maven 用戶取用。詳情請見 jfinal-1.9-lib 目錄下的說明文件:“jfinal-1.9-庫文件依賴及使用說明.txt”
您的評論需要經(jīng)過審核才能顯示
有用
有用
有用