JFinal開發(fā)平臺搭建(1)

為什么使用JFinal

前段時間聽說了JFinal框架粗恢,據(jù)說適合快速開發(fā)薇正,恰好接到了外包項目片酝,決定用JFinal試一下怎么樣,于是就有了這篇挖腰。雕沿。。

官方網(wǎng)站

http://www.jfinal.com/

看一下官網(wǎng)上的宣傳

JFinal 是基于 Java 語言的極速 WEB + ORM 框架猴仑,其核心設計目標是開發(fā)迅速审轮、代碼量少、學習簡單辽俗、功能強大疾渣、輕量級、易擴展崖飘、Restful榴捡。在擁有Java語言所有優(yōu)勢的同時再擁有ruby、python朱浴、php等動態(tài)語言的開發(fā)效率吊圾!為您節(jié)約更多時間达椰,去陪戀人、家人和朋友 :)

JFinal有如下主要特點:

  • MVC架構(gòu)街夭,設計精巧砰碴,使用簡單
  • 遵循COC原則躏筏,零配置板丽,無xml
  • 獨創(chuàng)Db + Record模式,靈活便利
  • ActiveRecord支持趁尼,使數(shù)據(jù)庫開發(fā)極致快速
  • 自動加載修改后的java文件埃碱,開發(fā)過程中無需重啟web server
  • AOP支持,攔截器配置靈活酥泞,功能強大
  • Plugin體系結(jié)構(gòu)砚殿,擴展性強
  • 多視圖支持,支持FreeMarker芝囤、JSP似炎、Velocity
  • 強大的Validator后端校驗功能
  • 功能齊全,擁有struts2的絕大部分功能
  • 體積小僅632K悯姊,且無第三方依賴

看起來很厲害的樣子

引入maven依賴

        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>3.8.1</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>javax</groupId>
            <artifactId>javaee-api</artifactId>
            <version>7.0</version>
            <scope>provided</scope>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.eclipse.jetty/jetty-server -->
        <dependency>
            <groupId>org.eclipse.jetty</groupId>
            <artifactId>jetty-server</artifactId>
            <version>9.4.9.v20180320</version>
        </dependency>

        <dependency>
            <groupId>com.jfinal</groupId>
            <artifactId>jetty-server</artifactId>
            <version>8.1.8</version>
            <!-- 此處的 scope 值為 compile 僅為支持 IDEA 下啟動項目 打 war 包時需要改成 provided羡藐,以免將一些無用的 
                jar 打進去 -->
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>com.jfinal</groupId>
            <artifactId>jfinal</artifactId>
            <version>3.3</version>
        </dependency>
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.16</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.44</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.0.29</version>
        </dependency>
        <dependency>
            <groupId>com.jfinal</groupId>
            <artifactId>cos</artifactId>
            <version>2017.5</version>
        </dependency>

在web.xml中配置

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:web="http://java.sun.com/xml/ns/javaee" 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.o2o.common.O2OConfig</param-value>
    </init-param>
  </filter>
  <filter-mapping>
    <filter-name>jfinal</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>
</web-app>

可以看到,配置了filter為com.jfinal.core.JFinalFilter,配置入口類文件com.o2o.common.O2OConfig

創(chuàng)建入口類悯许,繼承JFinalConfig

public class O2OConfig extends JFinalConfig {
    
    /**
     * 配置常量
     */
    public void configConstant(Constants me) {
        // 加載少量必要配置仆嗦,隨后可用PropKit.get(...)獲取值
        PropKit.use("application.properties");
        me.setDevMode(PropKit.getBoolean("devMode", false));//開發(fā)模式設置
    }
    
    /**
     * 配置路由
     */
    public void configRoute(Routes me) {
        me.add("/", IndexController.class, "/WEB-INF/view/index");//第一個參數(shù)是訪問的路徑,第二個參數(shù)配置Controller先壕,第三個參數(shù)是視圖的路徑
        me.add("/navigation", NavigationController.class,"/WEB-INF/view/navigation");
        me.add("/manager", ManagerController.class,"/WEB-INF/view/manager");
        me.add("/role", RoleController.class,"/WEB-INF/view/role");/
    }
    
    public void configEngine(Engine me) {
        me.addSharedFunction("/WEB-INF/view/common/_layout.html");
        me.addSharedFunction("/WEB-INF/view/common/_paginate.html");
    }
    
    /**
     * 配置插件
     */
    public void configPlugin(Plugins me) {
        // 配置 druid 數(shù)據(jù)庫連接池插件
        DruidPlugin druidPlugin = new DruidPlugin(PropKit.get("jdbcUrl"), PropKit.get("user"), PropKit.get("password"));
        me.add(druidPlugin);
        
        // ehcache插件
        EhCachePlugin ehCachePlugin = new EhCachePlugin();
        me.add(ehCachePlugin);
        
        // 配置ActiveRecord插件
        ActiveRecordPlugin arp = new ActiveRecordPlugin(druidPlugin);
        arp.setShowSql(false);
        arp.setDevMode(true);
        // 所有映射在 MappingKit 中自動化搞定
        _MappingKit.mapping(arp);
        me.add(arp);
    }
    
    public static DruidPlugin createDruidPlugin() {
        return new DruidPlugin(PropKit.get("jdbcUrl"), PropKit.get("user"), PropKit.get("password").trim());
    }
    
    /**
     * 配置全局攔截器
     */
    public void configInterceptor(Interceptors me) {
        me.add(new LoginInterceptor());
    }
}

其他的配置文件

  • application.properties
jdbcUrl = 自己寫
user = 自己寫
password = 自己寫
devMode = false
  • log4j.properties(省略)
  • ehcache.xml(省略)

參考資料 http://www.jfinal.com/

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末瘩扼,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子垃僚,更是在濱河造成了極大的恐慌集绰,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,000評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件谆棺,死亡現(xiàn)場離奇詭異栽燕,居然都是意外死亡,警方通過查閱死者的電腦和手機包券,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,745評論 3 399
  • 文/潘曉璐 我一進店門纫谅,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人溅固,你說我怎么就攤上這事付秕。” “怎么了侍郭?”我有些...
    開封第一講書人閱讀 168,561評論 0 360
  • 文/不壞的土叔 我叫張陵询吴,是天一觀的道長掠河。 經(jīng)常有香客問我猛计,道長奉瘤,這世上最難降的妖魔是什么盗温? 我笑而不...
    開封第一講書人閱讀 59,782評論 1 298
  • 正文 為了忘掉前任卖局,我火速辦了婚禮砚偶,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘均芽。我一直安慰自己骡技,他們只是感情好羞反,可當我...
    茶點故事閱讀 68,798評論 6 397
  • 文/花漫 我一把揭開白布昼窗。 她就那樣靜靜地躺著澄惊,像睡著了一般掸驱。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上温赔,一...
    開封第一講書人閱讀 52,394評論 1 310
  • 那天啤贩,我揣著相機與錄音痹屹,去河邊找鬼枉氮。 笑死嘲恍,一個胖子當著我的面吹牛佃牛,可吹牛的內(nèi)容都是我干的俘侠。 我是一名探鬼主播爷速,決...
    沈念sama閱讀 40,952評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼廉沮!你這毒婦竟也來了滞时?” 一聲冷哼從身側(cè)響起坪稽,我...
    開封第一講書人閱讀 39,852評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎鳞骤,沒想到半個月后窒百,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,409評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡豫尽,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,483評論 3 341
  • 正文 我和宋清朗相戀三年篙梢,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片拂募。...
    茶點故事閱讀 40,615評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡庭猩,死狀恐怖窟她,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情蔼水,我是刑警寧澤震糖,帶...
    沈念sama閱讀 36,303評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站趴腋,受9級特大地震影響吊说,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜优炬,卻給世界環(huán)境...
    茶點故事閱讀 41,979評論 3 334
  • 文/蒙蒙 一颁井、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧蠢护,春花似錦雅宾、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,470評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至懈凹,卻和暖如春蜀变,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背介评。 一陣腳步聲響...
    開封第一講書人閱讀 33,571評論 1 272
  • 我被黑心中介騙來泰國打工库北, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人们陆。 一個月前我還...
    沈念sama閱讀 49,041評論 3 377
  • 正文 我出身青樓寒瓦,卻偏偏與公主長得像,于是被迫代替她去往敵國和親棒掠。 傳聞我的和親對象是個殘疾皇子孵构,可洞房花燭夜當晚...
    茶點故事閱讀 45,630評論 2 359

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn)烟很,斷路器颈墅,智...
    卡卡羅2017閱讀 134,704評論 18 139
  • Spring Web MVC Spring Web MVC 是包含在 Spring 框架中的 Web 框架,建立于...
    Hsinwong閱讀 22,435評論 1 92
  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 46,859評論 6 342
  • 安裝工具 安裝brew 安裝ffmpeg 安裝gifsicle 轉(zhuǎn)化視頻 參數(shù)解析: -r 10 告訴 ffmpe...
    ShawnDu閱讀 410評論 0 0
  • 今天刷空間雾袱,看到兩條說說恤筛,有一些想法。 按時間的先后是我們隔壁班的男生和我們班的女生從大學一來就在一起芹橡,看起來挺般...
    interested小小銳閱讀 237評論 6 1