您的位置:首页 > 其它

把JFinal整合到Actframework是一种什么样的体验

2017-07-14 11:36 615 查看
摘要: actframework的路由解析真的是太过强大,说比spring强大完全不为过,jfinal的确是极速开发的神器,activerecord template engine极简到新手都能分分钟上手使用。两者结合起来是不是更加完美呢?

使用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的特性真的很多,在此就不一一介绍了。

@JFinal @罗格林 欢迎批评指正。

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  jfinal actframework