【JFinal】 与JFinal的第一次接触          返回主页

    JFinal 是基于 Java 语言的极速 WEB + ORM 框架,
其核心设计目标是开发迅速、代码量少、学习简单、功能强大、轻量级、易扩展、Restful。
在拥有Java语言所有优势的同时再拥有ruby、python、php等动态语言的开发效率!
为您节约更多时间,去陪恋人、家人和朋友 :)

这是官网的介绍语,作为华人圈内少有的敏捷开发框架,JFinal确实很有知名度,本文是我对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应用。

创建MyAppConfig.java

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>

创建JSP页面文件

文件名为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"> Insert title here

请输入您的名字:

同样的步骤,再创建一个hello.jsp,并在标签中追加如下代码:

<body>

<p>${sayHello}</p><p><a href="${basePath}/"></a></p>

</body>

创建Controller类

创建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");

    }

}

注册Controller路由

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,且无第三方依赖