1. 程式人生 > 其它 >JKAS開發框架技術文件1:入門

JKAS開發框架技術文件1:入門

一、環境要求
java jdk 1.8

tomcat 8/resin >4.0

mysql > 5.0

 

二、Jkas 包結構
核心包名:org.jkas.core

工具包名:org.jkas.utils

外掛包名:org.jkas.plugin

檢視包名:org.jkas.view;

 

三、目錄結構
data/

certs/ 金鑰目錄

jkas.license 框架金鑰(開放後已經去除)

config.ini 全域性配置檔案

crontab 定時任務列表檔案

alias URL別名配置檔案

 

temp/ 臨時目錄

logs/logyyyymm.log 框架日誌檔案

logs/jkas_cron_yyyy-mm.log 框架定時任務日誌檔案

 

WEB-INF/

lib 框架庫檔案目錄

classes/beetl.properties 檢視格式化配置

classes/fastjson.properties Fastjson配置檔案

classes/redis.properties Redis引數配置檔案

classes/memcache.properties Memcache引數配置檔案

web.xml 站點配置檔案

 

locale/ 語言檔案目錄

 

static/ CSS/JS資源目錄

 

themes/ 檢視主題目錄

 

四、如何開始
1、匯入類庫

1.1、方式一:自己手動匯入:

自己把Jkas核心及依賴類庫下載並複製到WEB-INF目錄和你專案的依賴類目錄即可(一般為libs目錄)

1.2、方式二:開發工具自動匯入

Jkas已經提交到Maven Central及阿里雲Maven倉庫,用不同開發構建工具引用方式如下:

maven:

<dependency>
<groupId>cn.org.jkas</groupId>
<artifactId>jkas</artifactId>
<version>2.33</version>
</dependency>

gradle:

implementation 'cn.org.jkas:jkas:2.33'

 

Gradle Kotlin DSL:

implementation("cn.org.jkas:jkas:2.33")

 

2、配置設定

2.1、框架配置檔案指定控制器類的入口包:


#控制器對映包路徑

app_package=test.z.app

#預設字尾
url_endwith=.do

 

2.2、容器web.xml配置(一般不用配置,直接複製過去即可)

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

<display-name>JKAS</display-name>
<description>jkas web kernel</description>

<servlet>
<servlet-name>routerServlet</servlet-name>
<servlet-class>org.jkas.Router</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>routerServlet</servlet-name>
<url-pattern>*.htm</url-pattern>
</servlet-mapping>

<servlet-mapping>
<servlet-name>routerServlet</servlet-name>
<url-pattern>/jkas.js</url-pattern>
</servlet-mapping>

<servlet-mapping>
<servlet-name>routerServlet</servlet-name>
<url-pattern>*.jl</url-pattern>
</servlet-mapping>

<welcome-file-list>
<welcome-file>index.htm</welcome-file>
</welcome-file-list>

<session-config>
<session-timeout>30</session-timeout>
</session-config>

<resource-ref>
<res-ref-name>dbconfig</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>

</web-app>

 

2.3、資料庫連結池配置,分為容器資料庫連結池和框架連結池兩種方式(用到資料庫時才配置)

不管用哪一種方式,記得把框架配置檔案裡資料庫相關配置與容器裡的資料來源名稱要保持一致

2.3.1、框架資料庫相關配置:

[DATABASE]

#資料來源型別,0為預設容器資料來源,1為使用框架配置資料來源,框架資料配置檔案路徑為data/ds/資料來源檔名

ds_type=0

#資料庫表字首
table_prefix=jkas_
data_source=dbconfig //必須與resin或tomcat配置的資料來源保持一致,如果用框架資料來源,必須與框架資料來源檔名一致

#是否開啟資料庫叢集

db_cluster=1

#叢集用來寫的資料來源設定,多個用逗號隔開,必須與resin或tomcat配置的資料來源保持一致,如果用框架資料來源,必須與框架資料來源檔名一致
data_source_write=dbconfigw

#叢集用來讀的資料來源設定,多個用逗號隔開,必須與resin或tomcat配置的資料來源保持一致,如果用框架資料來源,必須與框架資料來源檔名一致
data_source_read=dbconfigr1,dbconfigr2

#資料庫型別mysql sqlite oracle mssql 暫時只支援mysql和sqlite,非Mysql和sqlite資料庫需要自行寫完整的sql
db_type=mysql

#開啟自定義SQL語句功能

db_custom_sql=1

#配置自定義SQL檔案所在目錄,SQL自定義檔案與模型指定的表名同名,以.m為字尾
db_custom_sql_dir=data/sql

 

2.3.2、方式一:容器資料庫連結池,分resin和tomcat兩種,其他容器可自行找教程

resin:

<character-encoding>UTF-8</character-encoding>
<database>
<jndi-name>dbconfig</jndi-name><!--必須與上面系統配置檔案資料來源配置保持一致-->
<driver type="com.mysql.jdbc.Driver">
<url>jdbc:mysql://localhost:3306/dbname</url>
<user>root</user>
<password>123456</password>
</driver>
</database>

 

tomcat:

在context.xml裡面配置資料庫連線池

<Resource
name="dbconfig" <!--必須與上面系統配置檔案資料來源配置保持一致-->
type="javax.sql.DataSource"
driverClassName="com.mysql.jdbc.Driver"
maxIdle="2"
maxWait="5000"
username="jkasdev_u"
password="123456"
url="jdbc:mysql://localhost:3306/dbname"
maxActive="4"/>

如果用tomcat資料庫連結池,記得在專案web.xml裡增加相應的引用,資料來源名稱也要保持一致,如下:

<resource-ref>
<res-ref-name>dbconfig</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>

2.3.3、方式二:框架資料庫連結池

資料來源連線檔案在系統/data/ds/xxx,xxx為資料來源名稱,命名要與框架配置檔案裡資料庫設定部分資料來源名稱保持一致,如:/data/ds/datasource

driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://127.0.0.1:3306/sc_test?characterEncoding=utf8&useSSL=true&useOldAliasMetadataBehavior=true
username=root
password=123456
# 初始化連線數量
initialSize=5
# 最大連線數
maxActive=10
# 延遲時間
maxWait=3000

 

3、控制器繼承於org.jkas.core.C 類

 

import org.jkas.core.C;

public class Index extends C

{

public void index()

{

echo("Hello Jkas !");

}

}

 

4、模型繼承於org.jkas.core.M類,類的命名以M結尾


import org.jkas.core.M;

public class UserM extends M

{ public UserM()

{ primaryKey("user_id");

}

}

5、服務繼承於org.jkas.core.S類

import org.jkas.core.S;

public class UserService extends S

{ public UserService()

{

}

}

 

6、訪問方式

模組名在開啟模組功能時有效!

域名[/模組名]/控制器名[/方法名/引數名/引數值/引數名/引數值/.../.../].字尾 //[]方括號裡面的內容為可有可無,方法名沒有預設為index

如:

http://www.jkas.org/test.do

http://www.jkas.org/test/about.do

http://www.jkas.org/test/about/name/jkas/age/1.do

 

特殊情況:

方法名為數字開頭:方法預設成index,自動把引數名變為id

如:http://www.jkas.org/goods/22.do 則自動訪問 http://www.jkas.org/goods/index/id/22.do

 

引數個數為奇數情況:自動把第一個引數名變為id

如:http://www.jkas.org/goods/detail/22.do 則自動訪問 http://www.jkas.org/goods/detail/id/22.do

http://www.jkas.org/goods/detail/22/k.do 則自動訪問 http://www.jkas.org/goods/detail/22/k.do 偶數個數不處理

http://www.jkas.org/goods/detail/22/k/v.do 則自動訪問 http://www.jkas.org/goods/detail/id/22/k/v.do