1. 程式人生 > >jfinalQ開發教程04-jfinal配置和jfinalQ檔案結構

jfinalQ開發教程04-jfinal配置和jfinalQ檔案結構

bird.jpg

jfinalQ

1.前言

有耐心看完前5講的同學,可正真看到jfinalQ到底是什麼了,

前4講說了程式碼生成工具,即:jfinalQ-gencode,

第5講說了加密部署工具,即,jfinalQ-encrypt,

如果對這兩部分感興趣,那麼接下來的內容會更加有趣哦~


2.簡介

jfinalQ,致力於極速開發,適配移動端,程式碼生成,加密部署的javaee框架。


極速開發

基於jfinal,學習是需要1周時間,上手快,功能強大,使用方便,開發快捷。


適配移動端

基於bootstrap,完美適配pc端和手機pad端的網頁,簡潔美觀,使用簡單。


程式碼生成

普通增刪改查功能秒級生成,大大提高了開發效率。


加密部署

為有加密部署需求的企業提供一種省時省力低成本的解決方案。


3.下載

jfinalQ已經開源到github,地址:https://github.com/uikoo9/jfinalQ


jfinal配置

1.說明

在使用jfinalQ之前,需要線熟悉jfinal,可以去官網下載文件看看,估計1天即可上手


2.開發環境

jfinalQ的相關開發環境,建議進行開發的時候要保持一致:

java

1.6.0_45

tomcat

6.0.39

tomcat部署方式

基於xml部署,詳見:http://uikoo9.com/blog/detail/tomcat-xml

mysql

5.6.17

myeclipse

10.6


3.web.xml

其實jfinalQ專案中已經配置好了,這裡做下介紹:

從web.xml說起,程式碼如下:

<?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" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
	version="3.0">
	<display-name></display-name>
	<filter>
		<filter-name>jfinal</filter-name>
		<filter-class>com.jfinal.core.JFinalFilter</filter-class>
		<init-param>
			<param-name>configClass</param-name>
			<param-value>com.uikoo9.z.jfinal.QJfinalConfig</param-value>
		</init-param>
	</filter>
	<filter-mapping>
		<filter-name>jfinal</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>
</web-app>

這裡只需要將config指向com.uikoo9.z.jfinal.QJfinalConfig


4.QJfinalConfig.java

這是自定義的jfinal config檔案,如下:

13.png

其中,

configConstant中只設置了dev mode,這個在配置檔案中設定


configRoute中設定了所有controller用註解方式載入

jfinal預設關聯controller的方式為:

public void configRoute(Routes me) { 
    me.add("/hello", HelloController.class); 
}

使用jfinalQ後只需要在每個controller上進行註解即可:

@QControllerUrl("/blog")
public class BlogController extends Controller{}



configPlugin中設定了所有model用註解方式關聯

jfinal預設關聯model和表的方式為:

arp.addMapping("user", User.class);

使用jfinalQ後只需要在每個Model上添加註解即可:

@QTable("t_blog_article")
public class BlogArticleModel extends Model<BlogArticleModel>{}


configInterceptor中設定了一個全域性interceptroe和一個自定義interceptor

afterJFinalStart中設定了三個:百度編輯器上傳檔案到七牛雲的token更新,定時任務,微信執行緒


jfinalQ檔案結構

要使用jfinalQ,首先需要了解jfinalQ的檔案結構,這節應該說是最重要的一節了。


概覽

14.png

可以看到這個專案是比較整潔的,這也算是一種檔案結構規範吧。


src

1.fore

15.png

src下的fore包是用來處理使用者端請求的,可管理端做區分,

由於model都放到了管理端,所以這裡只有controller和service兩個包結構。


2.manage

16.png

src下的manage包是用來處理管理端請求的,其實就是和資料庫表一一對應,

可以看到manage下按功能做了區分,

例如bill功能下有兩個對應的表t_bill_account,t_bill_detail,

每個表都有對應的controller和model類,

前4節講的內容都是程式碼生成,而manage下的程式碼基本都是程式碼生成的,只需要稍作修改,

詳見:

表命名規範:http://uikoo9.com/book/chapterDetail/32

程式碼生成:http://uikoo9.com/book/chapterDetail/32

許可權系統:http://uikoo9.com/book/chapterDetail/34

一對多的處理:http://uikoo9.com/book/chapterDetail/34


3.z

17.png

z包下分為:jfinal包,my包,QContants.java

jfinal包:

QController,對crud做封裝的基類

QInterceptor,全域性的interceptor,基於這個做了許可權系統

QJfinalConfig,上一節講到的配置

QJfinalUtil,封裝一些jfinal的功能,包括自動載入controller,自動管理model等

my包:

MyInterceptor,自定的全域性攔截器

MyTask,一個定時任務

QContants:

常量類,所有的常量對應關係都在這裡


配置檔案

19.png

1.config.properties

所有的配置資訊都放到這裡,包括資料庫連線資訊,七牛雲資訊,定時任務資訊,郵件簡訊資訊等


2.contants.properties

常量對應檔案


3.ehcache.xml

jfinalQ的快取系統採用ehcache,一方面用來快取資料庫列表資訊,一方面用來快取常用變數


4.jfinal-auth.xml

公開訪問的地址,詳見第3講


5.logback.xml

jfinalQ的日誌系統採用logback,方便接入各種日誌外掛


WebRoot

21.png

1.WEB-INF/lib

存放jar包


2.WEB-INF/view/base

22.png

base下是一些基於freemarker做封裝的模版,

base/common

公用的頁面,包括error:錯誤頁面,manage:管理頁面

base/head

head模版,使用者端的頁面有不同的head時,使用不同的head模版頁面

base/inc.html

所有基於freemarker的封裝都在這裡,封裝了大量bootstrap的元件和常用的頁面結構等


3.WEB-INF/view/fore,WEB-INF/view/manage

前者是使用者端相關頁面,後者是管理端相關頁面,都以功能塊做了區分,見下:

23.png

其中manage檔案下的頁面,大部分都是程式碼生成的,只有使用者端fore下的頁面需要自己寫。


4.WUI

24.png

js相關檔案,

建議js外掛,css樣式等,都採用cdn的,

也就是說一些現成的外掛都可以用公開cdn上的,

而一些自己寫的js可以放到七牛雲上,

而不要在專案中存放,保持簡潔,保證訪問速度。


jfinalQ2.0

官網:http://uikoo9.com/jfinalQ

原始碼:https://github.com/uikoo9/jfinalQ


更多精彩內容:http://uikoo9.com/


求打賞(長按圖片即可識別)~
微信 捐助列表:http://uikoo9.com/donate/