使用jfinal也有五六年了吧,见证了jfinal从零到有再到现在的火热,jfinal的功能越来越强大,但框架并没有变得越来越臃肿,对于新手老手来讲,代码依然简洁。
下面,让我们来看看jfinal的简单demo:
<!--配置jfinal filter,所有请求由jfinal接管-->
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
id="WebApp_ID" version="3.0">
<filter>
<filter-name>jfinal</filter-name>
<filter-class>com.jfinal.core.JFinalFilter</filter-class>
<init-param>
<param-name>configClass</param-name>
<param-value>com.github.piaohao.config.MainConfig</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>jfinal</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
//配置全局配置类,注册路由,模板引擎,数据库插件,各种第三方插件,拦截器等
public class MainConfig extends JFinalConfig {
@Override
public void configConstant(Constants me) {
PropKit.use("common.properties");//加载全局属性
}
@Override
public void configRoute(Routes me) {
me.add("/",IndexController.class);
}
@Override
public void configEngine(Engine me) {
}
@Override
public void configPlugin(Plugins me) {
DruidPlugin dp = new DruidPlugin(PropKit.get("jdbc.master.url"), PropKit.get(
"jdbc.master.username"), PropKit.get("jdbc.master.password"));
dp.setTestOnBorrow(true);
dp.setTestWhileIdle(true);
dp.setTestOnReturn(true);
dp.addFilter(new StatFilter());
WallFilter wall = new WallFilter();
wall.setDbType("mysql");
dp.addFilter(wall);
ActiveRecordPlugin arp = new ActiveRecordPlugin(dp);
arp.setShowSql(PropKit.getBoolean("devMode", true));
arp.addMapping("account", "id", Account.class);
me.add(arp);
}
@Override
public void configInterceptor(Interceptors me) {
}
@Override
public void configHandler(Handlers me) {
}
}
//路由Controller
public class IndexController extends Controller {
public void list() {
renderJson(Account.dao.find("select * from account"));
}
}
到此,一个完整的jfinal流程结束了,然后打包成war,在servlet容器运行即可。
我们再看看actframework整合jfinal的demo:
//jfinal的active record插件,用于数据库操作
public class MyConfig {
@OnAppStart
public static void init() {
PropKit.use("common.properties");
DruidPlugin dp = new DruidPlugin(PropKit.get("jdbc.master.url"), PropKit.get(
"jdbc.master.username"), PropKit.get("jdbc.master.password"));
dp.setTestOnBorrow(true);
dp.setTestWhileIdle(true);
dp.setTestOnReturn(true);
dp.addFilter(new StatFilter());
WallFilter wall = new WallFilter();
wall.setDbType("mysql");
dp.addFilter(wall);
ActiveRecordPlugin arp = new ActiveRecordPlugin(dp);
arp.setShowSql(PropKit.getBoolean("devMode", true));
// 所有配置在 MappingKit 中搞定
arp.addMapping("account", "id", Account.class);
dp.start();
arp.start();
}
}
//主程序,act相当灵活,Controller定义在哪里都行,可以类集成,可以只是类中的部分方法
public class Todo {
@GetAction("/list")
public void list() {
List<Account> accounts = Account.dao.find("select * from account");
render(accounts);
}
public static void main(String[] args) throws Exception {
Act.start("TODO-JFinal");
}
}
actframework类似play1,不是基于servelt的mvc框架,因此可以直接运行jar包。
本文只是做了一个简单介绍,actframework的特性真的很多,在此就不一一介绍了。
https://github.com/piaohao/act-jfinal(插件地址)
https://github.com/piaohao/act-jfinal-demo(demo地址)
http://git.oschina.net/463168428/act-jfinal-demo
http://git.oschina.net/463168428/act-jfinal