OSCHina技术导向:Java轻量web开发框架——JFinal
JFinal 是基于 Java 语言的极速 WEB + ORM 框架,其核心设计目标是开发迅速、代码量少、学习简单、功能强大、轻量级、易扩展、Restful。在拥有Java语言所有优势的同时再拥有ruby、python、php等动态语言的开发效率!为您节约更多时间,去陪恋人、家人和朋友 :)
JFinal有如下主要特点:
MVC架构,设计精巧,使用简单
遵循COC原则,零配置,无xml
独创Db + Record模式,灵活便利
ActiveRecord支持,使数据库开发极致快速
自动加载修改后的java文件,开发过程中无需重启web server
AOP支持,拦截器配置灵活,功能强大
Plugin体系结构,扩展性强
多视图支持,支持FreeMarker、JSP、Velocity
强大的Validator后端校验功能
功能齐全,拥有struts2的绝大部分功能
体积小仅218K,且无第三方依赖
以下是JFinal实现Blog管理的示例:
1:控制器(支持FreeMarker、JSP、Velocity、JSON等等以及自定义视图渲染)
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
@Before(BlogInterceptor.class)public class BlogController extends Controller { public void index() { setAttr("blogList", Blog.me.find("select * from blog")); } public void add() { } @Before(BlogValidator.class) public void save() { getModel(Blog.class).save(); } public void edit() { setAttr("blog", Blog.me.findById(getParaToInt())); } @Before(BlogValidator.class) public void update() { getModel(Blog.class).update(); } public void delete() { Blog.me.deleteById(getParaToInt()); }} |
2:Model(无xml、无annotation、无attribute、无getter、无setter、new Blog()这行代码也不是必须)
|
1
2
3
|
public class Blog extends Model { public static final Blog me = new Blog();} |
3:Validator(API引导式校验,比xml校验方便N倍,有代码检查不易出错)
|
1
2
3
4
5
6
7
8
9
10
|
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); }} |
4:拦截器(在此demo中仅为示例,本demo不需要此拦截器)
|
1
2
3
4
5
6
7
|
public class BlogInterceptor implements Interceptor { public void intercept(ActionInvocation ai) { System.out.println("Before invoking " + ai.getActionKey()); ai.invoke(); System.out.println("After invoking " + ai.getActionKey()); }} |
JFinal官方微信欢迎您的加入:

- JFinal 1.8 发布,JAVA 极速 WEB+ORM 框架4个月前174评/12704阅
- JFinal 1.6 发布,JAVA 极速 WEB+ORM 框架5个月前121评/5768阅
- JFinal 1.5 发布,JAVA极速WEB+ORM框架11个月前100评/6620阅
- JFinal 1.4 发布,JAVA极速WEB+ORM框架1年前82评/6096阅
- JFinal 1.3 周年纪念版发布,极速WEB+ORM框架1年前51评/3378阅
OSCHina技术导向:Java轻量web开发框架——JFinal的更多相关文章
- Pagekit – 现代化技术构建的轻量的 CMS 系统
Pagekit 是一个模块化,轻量的 CMS 系统,基于现代化的技术,如 Symfony 组件和 Doctrine.它提供了一个很好的平台,用于主题和延伸开发.Pagekit 为您提供了工具来创造美丽 ...
- Ninja:Java全栈Web开发框架-Ninja中文网
相信不少业界人士都还停留在SSh的时代 其实我想给大家推荐的一个轻量级框架那就是Ninja; Ninja是一个Java全栈Web开发框架,稳定.快速.非常高效. 商业价值 在你的下一个项目中,Ninj ...
- 动手打造轻量web服务器(二)路由
tomcat启动慢?自己动手打造轻量web服务器(一) 上篇讲了怎么做一个最简单的web服务器,这篇就是在上篇加上URL路由功能(什么是路由?) 首先,根据http获得请求行 val scanner ...
- OSCHina技术导向:web内容管理系统Magnolia
Magnolia简介: Magnolia CMS是一家瑞士公司自2003年起发布的一个基于Java的开源内容管理系统.它适合且已被使用在以下领域:电子商务(例如:COOP.Migros.Rossman ...
- OSCHina技术导向:Java模板引擎velocity
OSChina 采用 velocity 作为页面模板 Velocity是一个基于java的模板引擎(template engine).它允许任何人仅仅简单的使用模板语言(template langua ...
- Python轻量Web框架Flask使用
http://blog.csdn.net/jacman/article/details/49098819 目录(?)[+] Flask安装 Python开发工具EclipsePyDev准备 Flask ...
- OSCHina技术导向:Java WEB企业门户平台Liferay
Liferay 是一个完整的门户解决方案,基于J2EE的应用,使用了EJB以及JMS等技术,前台界面部分使用Struts MVC 框架,基于XML的portlet配置文件可以自由地动态扩展,使用了We ...
- OSCHina技术导向:Java电子商务平台OFBiz
OFBiz 是开放的电子商务平台,是一个非常著名的开源项目,提供了创建基于最新J2EE/XML规范和技术标准,构建大中型企业级.跨平台.跨数据库.跨应用服务器的多层.分布式电子商务类WEB应用系统的框 ...
- OSCHina技术导向:Java开源QQ工具iQQ
iQQ 使用Java语言跨平台开发,基于腾讯WebQQ 3.0网络协议.可以使用于Java所支持的各种平台上运行.作者基于Linux(Ubuntu 12.04)系统,使用IDE NetBeans开发, ...
随机推荐
- 【转】理解 Android Build 系统----不错
$ mmm -help用法:make [选项] [目标] ...选项: -b, -m 忽略兼容性. -B, --always-make Unconditionally make all targets ...
- 【转】Android C程序也可自己手动用交叉编译器编译 (
原文网址:http://blog.sina.com.cn/s/blog_533074eb0101ez5q.html Android 编译环境 本身比较复杂,且不像普通的编译环境:只有顶层目录下才有 M ...
- bootstrap绿色大气后台模板下载[转]
From:http://www.oschina.net/code/snippet_2364127_48176 1. [图片] 2. [文件] 素材火官网后台模板下载.rar ~ 4MB 下载( ...
- UESTC_冰雪奇缘 CDOJ 843
艾莎女王又开始用冰雪魔法盖宫殿了. 她决定先造一堵墙,于是释放魔法让形为直角梯形的冰砖从天而降,定入冻土之中. 现在你将回答女王的询问:某段冻土上冰砖的面积. 注:多块冰砖之间会互相重叠,重叠部分要多 ...
- WPF拖动总结[转载]
WPF拖动总结 这篇博文总结下WPF中的拖动,文章内容主要包括: 1.拖动窗口 2.拖动控件 Using Visual Studio 2.1thumb控件 2.2Drag.Drop(不连续,没有中 ...
- MVC之MVCSQO方法查询、排序、分页、投影
- 获取设备、APP的一些信息
获取设备的一些信息: UIDevice *device = [UIDevice currentDevice]; @property(nonatomic,readonly,strong) NSStrin ...
- XMAL 中x名称控件的Auttribute
1 X:Class 作用告诉XAML编译器将XAML标签的编译结果与后台代码中指定的类合并,只能用于根节点,并且与之同名的类需要有Partial 例如窗口 2 X:ClassModifier 作用告诉 ...
- 在sql server中怎样获得正在执行的Sql查询
方法1:使用DBCC inputbuffer(spid) 使用SP_WHO获得SPID,然后再执行上面的DBCC command,参见下图 执行一段sql语句 打开另一个query窗口并执行SP_WH ...
- 预载入和JavaScript Image()对象
预载入和JavaScript Image()对象 很多high-res图像真的可以使 Web 站点更加整洁.但是它们也会使站点的访问速度变慢——图像是文件,文件使用带宽,带宽直接与等待时间相关.是该了 ...
