JFinal 是基于 Java 语言的极速 WEB + ORM 框架,
其核心设计目标是开发迅速、代码量少、学习简单、功能强大、轻量级、易扩展、Restful。
在拥有Java语言所有优势的同时再拥有ruby、python、php等动态语言的开发效率!
为您节约更多时间,去陪恋人、家人和朋友 :)
这是官网的介绍语,作为华人圈内少有的敏捷开发框架,JFinal确实很有知名度,本文是我对JFinal的入门级应用的一次小结。
既然基于JFinal框架,没有理由不下载JFinal相关Jar包。打开JFinal官方网站http://www.jfinal.com/,下载相关内容:
下载jfinal-1.6-bin-with-src.jar是为了使小白在使用中可方便地查看并分析源码, 下载jfinal-1.6demofor_jsp.zip是因为有部分必要的Jar包在Demo中可以找到,而且,第一个Demo将采用JSP页面。
将下载好的jfinal-1.6-bin-with-src.jar直接Copy到工程的webcontent/web-inf/lib
这一章节比较重要,介绍如何配置及编码,完成第一个JFinal应用。
public class MyAppConfig extends JFinalConfig {
@Override
public void configConstant(Constants me) {
me.setDevMode(true);
me.setEncoding("UTF-8");
me.setViewType(ViewType.JSP);
}
@Override
public void configRoute(Routes me) {
me.add("/", IndexController.class);
}
@Override
public void configPlugin(Plugins me) {
}
@Override
public void configInterceptor(Interceptors me) {
}
@Override
public void configHandler(Handlers me) {
me.add(new ContextPathHandler("basePath"));
}
}
2.3.2. 修改web.xml 既然MyAppConfig.java是入口,那么,在Tomcat这个容器中,就需要配置这个入口,使得Tomcat启动的同时加载这个入口类。
打开web.xml,追加内容:
<filter>
<filter-name>jfinal</filter-name>
<filter-class>com.jfinal.core.JFinalFilter</filter-class>
<init-param>
<param-name>configClass</param-name>
<param-value>com.snowalker.config.MyAppConfig</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>jfinal</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
文件名为index.jsp,并放入WebContent中: 完成后可看到首先要打开的index.jsp已经有默认内容了,并且字符集为utf-8: <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">同样的步骤,再创建一个hello.jsp,并在
标签中追加如下代码:<body>
<p>${sayHello}</p><p><a href="${basePath}/"></a></p>
</body>
创建IndexController.java用于响应页面请求
并添加代码:
public class IndexController extends Controller {
public void index(){
this.render("/index.jsp");
}
public void sayHello(){
String userName = this.getAttr("userName");
String sayHello = "Hello " + userName + ",welcome to JFinal world.";
this.setAttr("sayHello", sayHello);
this.render("/hello.jsp");
}
}
JSP页面和Controller都准备完成后,就需要在MyAppConfig.java中将两者关联起来,JFinal里称之为Route(路由),下面是MyAppConfig类中追加的路由代码:
@Override
public void configRoute(Routes me) {
me.add("/", IndexController.class);
}
JFinal action report -------- 2016-08-18 20:18:25 ------------------------------
Controller : com.snowalker.controller.IndexController.(IndexController.java:1)
Method : index
--------------------------------------------------------------------------------
JFinal action report -------- 2016-08-18 20:18:31 ------------------------------
Controller : com.snowalker.controller.IndexController.(IndexController.java:1)
Method : sayHello
Parameter : userName=阿斯达
--------------------------------------------------------------------------------
JFinal有如下主要特点:
MVC架构,设计精巧,使用简单
遵循COC原则,零配置,无xml
独创Db + Record模式,灵活便利
ActiveRecord支持,使数据库开发极致快速
自动加载修改后的java文件,开发过程中无需重启web server
AOP支持,拦截器配置灵活,功能强大
Plugin体系结构,扩展性强
多视图支持,支持FreeMarker、JSP、Velocity
强大的Validator后端校验功能
功能齐全,拥有struts2的绝大部分功能
体积小仅339K,且无第三方依赖