1. 程式人生 > >國內優秀MVC開源框架jfinal簡介

國內優秀MVC開源框架jfinal簡介

簡單 public validator void 檢查 protect java free setattr

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簡介