國內優秀MVC開源框架jfinal簡介
JFinal簡介
JFinal 項目開發始於2011年初,作者詹波(James Zhan)曾任搜格信息技術有限公司Java架構師,北京信息管理科學研究所CTO,現任微格網際(北京)科技有限公司聯合創始人、網校網CTO。項目開源於2012年3月18日,采用對商業應用友好的Apache Licence 2.0協議。基於 Java 語言的極速 WEB + ORM 框架,其核心設計目標是開發迅速、代碼量少、學習簡單、功能強大、輕量級、易擴展、Restful。在擁有Java語言所有優勢的同時再擁有ruby、python、php等動態語言的開發效率。
特點:
1) MVC架構,設計精巧,使用簡單
2) 遵循COC原則,零配置,無xml
3) 獨創Db + Record模式,靈活便利
4) ActiveRecord支持,使數據庫開發極致快速
5) 自動加載修改後的java文件,開發過程中無需重啟web server
6) AOP支持,攔截器配置靈活,功能強大
7) Plugin體系結構,擴展性強
8) 多視圖支持,支持FreeMarker、JSP、Velocity
9) 強大的Validator後端校驗功能
10) 功能齊全,擁有struts2的絕大部分功能
11) 體積小僅632K,且無第三方依賴
基於MVC的設計:
控制器(支持FreeMarker、JSP、Velocity、JSON等以及自定義視圖渲染)
@Before(BlogInterceptor.class) 1. public class BlogController extends Controller { 2. public void index() { 3. setAttr("blogList", Blog.dao.find("select * from blog")); 4. } 5. 6. public void add() { 7. } 8. 9. @Before(BlogValidator.class) public void save() { 10. getModel(Blog.class).save(); 11. } 12. 13. public void edit() { 14. setAttr("blog", Blog.dao.findById(getParaToInt())); 15. } 16. @Before(BlogValidator.class) public void update() { getModel(Blog.class).update(); } 17. 18. public void delete() { 19. Blog.dao.deleteById(getParaToInt()); 20. } 21. }
|
Model(無xml、無annotation、無attribute、無getter、無setter)
1. public class Blog extends Model<Blog> { 2. }
|
Validator(API引導式校驗,比xml校驗方便N倍,有代碼檢查不易出錯)
1. public class BlogValidator extends Validator { 2. protected void validate(Controller controller) { 3. validateRequiredString("blog.title", "titleMsg", "請輸入Blog標題!"); 4. validateRequiredString("blog.content", "contentMsg", "請輸入Blog內容!"); 5. } 6. 7. protected void handleError(Controller controller) { 8. controller.keepModel(Blog.class); 9. } 10. }
|
攔截器:
1. public class BlogInterceptor implements Interceptor { 2. public void intercept(Invocation inv) { 3. System.out.println("Before invoking " + inv.getActionKey()); 4. inv.invoke(); 5. System.out.println("After invoking " + inv.getActionKey()); 6. } 7. }
|
國內優秀MVC開源框架jfinal簡介