JFinal 是基於 Java 語言的極速 WEB + ORM 框架,其核心設計目標是開發迅速、代碼量少、學習簡單、功能強大、輕量級、易擴展、Restful。在擁有Java語言全部優點的同時再擁有ruby、python、php等動態語言的開發效率!爲您節約更多時間,去陪戀人、家人和朋友 :)php
JFinal有以下主要特色:java
MVC架構,設計精巧,使用簡單python
遵循COC原則,零配置,無xmlweb
首創Db + Record模式,靈活便利sql
ActiveRecord支持,使數據庫開發極致快速數據庫
極簡、高性能Template Engine,十分鐘內掌握基本用法後端
自動加載修改後的java文件,開發過程當中無需重啓web serverruby
AOP支持,攔截器配置靈活,功能強大微信
Plugin體系結構,擴展性強架構
多視圖支持,支持FreeMarker、JSP、Velocity
強大的Validator後端校驗功能
功能齊全,擁有struts2的絕大部分功能
體積小僅538K
如下是JFinal實現Blog管理的示例:
1:控制器(支持FreeMarker、JSP、Velocity、JSON等等以及自定義視圖渲染)
@Before(BlogInterceptor.class) public class BlogController extends Controller { static BlogService service = new BlogService(); public void index() { setAttr("blogPage", service.paginate(getParaToInt(0, 1), 10)); } public void add() { } @Before(BlogValidator.class) public void save() { getModel(Blog.class).save(); } public void edit() { setAttr("blog", service.findById(getParaToInt())); } @Before(BlogValidator.class) public void update() { getModel(Blog.class).update(); } public void delete() { service.deleteById(getParaToInt()); } }
2:BlogService全部業務與sql所有放在Service層
public class BlogService { private static final Blog dao = new Blog().dao(); public Page paginate(int pageNumber, int pageSize) { return dao.paginate(pageNumber, pageSize, "select *", "from blog order by id asc"); } public Blog findById(int id) { return dao.findById(id); } public void deleteById(int id) { dao.deleteById(id); } }
3:Model(無xml、無annotation、無attribute)
public class Blog extends Model { }
4:Validator(API引導式校驗,比xml校驗方便N倍,有代碼檢查不易出錯)
public class BlogValidator extends Validator { protected void validate(Controller controller) { validateRequiredString("blog.title", "titleMsg", "請輸入Blog標題!"); validateRequiredString("blog.content", "contentMsg", "請輸入Blog內容!"); } protected void handleError(Controller controller) { controller.keepModel(Blog.class); } }
5:攔截器(在此demo中僅爲示例,本demo不須要此攔截器)
public class BlogInterceptor implements Interceptor { public void intercept(Invocation inv) { System.out.println("Before invoking " + inv.getActionKey()); inv.invoke(); System.out.println("After invoking " + inv.getActionKey()); } }
5:最新下載
JFinal官方微信歡迎您的加入: