探索JFinal:小试牛刀

前言:既然JFinal这么火,我只好小试牛刀,探索一下jfinal为何如此火,本篇为jfinal系列的开山篇,先了解一下jfianl,然后构建测试项目学习一下。

推荐语

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的绝大部分功能 – 体积小仅248K,且无第三方依赖

既然是开源的好东西,那么为了表示一下我的情怀,我也捐助了19元,希望jfinal的研发人员有更强的动力走下去。

搭建jfinal环境

第一步,我们创建web项目

第二步,添加必要的jar包

第三步,,修改web.xml

>index.html>>>com.hc.jf.config.InitConfig> >/*</url-pattern> </filter-mapping>

添加Java文件 1.InitConfig.java

(Constants me) {// 加载少量必要配置,随后可用PropKit.get(…)获取值PropKit.use(“jdbc.properties”);me.setDevMode(PropKit.getBoolean(“devMode”, false));me.setViewType(ViewType.JSP);// 设置视图类型为Jsp,否则默认为FreeMarker}(Routes me) {me.add(“/”, IndexController.class, “/index”); // 第三个参数为该Controller的视图存放路径me.add(“/mem”, MembersController.class);// 第三个参数省略时默认与第一个参数值相同,在此即为 “/mem”}(Plugins me) {// 配置C3p0数据库连接池插件C3p0Plugin c3p0Plugin = new C3p0Plugin(PropKit.get(“jdbcUrl”), PropKit.get(“user”), PropKit.get(“password”).trim());me.add(c3p0Plugin);// 配置ActiveRecord插件ActiveRecordPlugin arp = new ActiveRecordPlugin(c3p0Plugin);me.add(arp);arp.addMapping(“members”, Members.class); // 映射会员 表到 会员模型}

先不去思考究竟要表达什么,三个方法的作用分别如下: 1. 配置数据库连接以及视图表达方式,这里选用的是jsp,freemarker用了一会觉得不得要领,但是往后可能还需要尝试,我们的前端差不多还得使用html。 2. 配置前后端的URL,即访问地址,这个很关键,很多时候这个地方容易搞混乱,在后面我会再次说明。 3. 创建数据库连接,关联模型。数据库访问基本上是必须的!

2.IndexController.java

/** * IndexController */{() {render(“index.jsp”);}}

注意:jfianl在经过1.InitConfig.java中的me.add(“/”, IndexController.class, “/index”);路由后,你在地址栏输入

http://localhost:8080/ymeng/

就会访问到IndexController 的index方法(这是jfianl的一种默认写法)中,当然,这与IndexController.class, “/index”)中的第三个参数是无关的,第三个参数指定的是前端的路径,

然后index()方法指定你访问到的页面内容是index.jsp。

3.MembersController.java

{() {setAttr(“memPage”, Members.me.paginate(getParaToInt(0, 1), 10));render(“memlist.jsp”);}}

注意:我们只需要知道,这个方法就是将数据库中的数据指定到memlist.jsp中的memPage属性中。

4.Members.java

<serialVersionUID = 4460796361065191809L;Members me = new Members();// 创建模型/*** @param pageNumber 第几页* @param pageSize 每页大小* @return*/public Page<Members> paginate(int pageNumber, int pageSize) {return paginate(pageNumber, pageSize, “select *”, “from members order by realname”);}}

注意:名如其意,paginate方法看起来就是来处理分页问题的。至于第三、第四、更多的参数则是sql语句拼接。

那么后端我们需要开发的内容就完结了,目录结构如下:

添加前端文件

1.constants.js

var common = {ctx : “/ymeng”};

把项目的根路径记录下来,在js中可能要用到,本例子中暂时没有用到。

快乐不是因为得到的多而是因为计较的少!

探索JFinal:小试牛刀

相关文章:

你感兴趣的文章:

标签云: