每日博客

JFinal有如下主要特点:

MVC架构,设计精巧,使用简单

遵循COC原则,支持零配置,无xml

独创Db + Record模式,灵活便利

ActiveRecord支持,使数据库开发极致快速

自动加载修改后的java文件,开发过程中无需重启web server

AOP支持,拦截器配置灵活,功能强大

Plugin体系结构,扩展性强

多视图支持,支持FreeMarker、JSP、Velocity

强大的Validator后端校验功能

功能齐全,拥有struts2的绝大部分功能

体积小仅 723 KB,且无第三方依赖

控制器(支持FreeMarker、JSP、Velocity、JSON等以及自定义视图渲染)

  1. public class BlogController extends Controller{
  2.     BlogService service;
  3.     public void index(){
  4.         set("blogPage", service.paginate(getParaToInt(0, 1), 10));
  5.         render("blog.html");
  6.     }
  7.     public void add() {}
  8.     public void save() {
  9.         getModel(Blog.class).save();
  10.         redirect("/blog");
  11.     }
  12.     public void edit() 
  13.     {set("blog", service.findById(getParaToInt()));}
  14.     public void update() {
  15.         getModel(Blog.class).update();
  16.         redirect("/blog");
  17.     }
  18.     public void delete() {
  19.         service.deleteById(getParaToInt());
  20.         redirect("/blog");
  21.     }
  22. }

Service(所有业务与sql放在Service层)

  1. public class BlogService {
  2.     private Blog dao = new Blog().dao();
  3.     public Page<Blog> paginate(int pageNumber, int pageSize) {
  4.         return dao.paginate(pageNumber, pageSize, "select *", "from blog order by id asc");
  5.     }
  6.     public Blog findById(int id) {return dao.findById(id}
  7.     public void deleteById(int id) {dao.deleteById(id);}
  8. }

 

Model(无xml、无annotation、无attribute)

public class Blog extends Model<Blog> {}

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.   protected void handleError(Controller controller) {
  7.     controller.keepModel(Blog.class);
  8.   }
  9. }

拦截器

  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. }
posted @ 2021-09-13 20:20  谦寻  阅读(31)  评论(0编辑  收藏  举报