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

使用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

转载于:https://my.oschina.net/piaohao/blog/1377311

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值