jeesite 框架的簡單應用

我的以爲比較完善的一個講解jeesite的網站javascript

https://www.w3cschool.cn/jeesite/css

jeesite官網html

http://jeesite.com/前端

 

公司項目都是基於jeesite作的項目java

因此就找資料瞭解一下啦jquery

企業信息化快速開發平臺 JeeSite簡介

由 ThinkGem 建立, 最後一次修改 2016-10-18
JeeSite是基於多個優秀的開源項目,高度整合封裝而成的高效,高性能,強安全性的 開源 Java EE快速開發平臺。

JeeSite自己是以Spring Framework爲核心容器,Spring MVC爲模型視圖控制器,MyBatis爲數據訪問層, Apache Shiro爲權限受權層,Ehcahe對經常使用數據進行緩存,Activit爲工做流引擎。

 

JeeSite主要定位於企業信息化領域,已內置企業信息化系統的基礎功能和高效的 代碼生成 工具, 包括:系統權限組件、數據權限組件、數據字典組件、核心工具組件、視圖操做組件、工做流組件、代碼生成等。 前端界面風格採用告終構簡單、性能優良、頁面美觀大氣的Twitter Bootstrap頁面展現框架。 採用分層設計、雙重驗證、提交數據安全編碼、密碼加密、訪問驗證、數據權限驗證。 使用Maven作項目管理,提升項目的易開發性、擴展性。linux


JeeSite目前包括如下三大模塊,系統管理(SYS)模塊、 內容管理(CMS)模塊、在線辦公(OA)模塊、代碼生成(GEN)模塊。 系統管理模塊,包括企業組織架構(用戶管理、機構管理、區域管理)、 菜單管理、角色權限管理、字典管理等功能; 內容管理模塊 ,包括內容管理(文章、連接),欄目管理、站點管理、 公共留言、文件管理、前端網站展現等功能; 在線辦公模塊 ,提供簡單的請假流程實例。

JeeSite 提供了經常使用工具進行封裝,包括日誌工具、緩存工具、服務器端驗證、數據字典、當前組織機構數據 (用戶、機構、區域)以及其它經常使用小工具等。另外還提供一個強大的在線 代碼生成 工具, 此工具提供簡單的單表、一對多、樹結構功能的生成,若是對外觀要求不是很高,生成的功能就能夠用了。 若是你使用了JeeSite基礎框架,就能夠很高效的快速開發出,優秀的信息管理系統。

內置功能

用戶管理:用戶是系統操做者,該功能主要完成系統用戶配置。
機構管理:配置系統組織機構(公司、部門、小組),樹結構展示,可隨意調整上下級。
區域管理:系統城市區域模型,如:國家、省市、地市、區縣的維護。
菜單管理:配置系統菜單,操做權限,按鈕權限標識等。
角色管理:角色菜單權限分配、設置角色按機構進行數據範圍權限劃分。
字典管理:對系統中常用的一些較爲固定的數據進行維護,如:是否、男女、類別、級別等。
操做日誌:系統正常操做日誌記錄和查詢;系統異常信息日誌記錄和查詢。
鏈接池監視:監視當期系統數據庫鏈接池狀態,可進行分析SQL找出系統性能瓶頸。

工做流引擎:實現業務工單流轉、在線流程設計器。git

爲什麼選擇JeeSite

使用 Apache License 2.0 協議,源代碼徹底開源,無商業限制。
使用目前主流的Java EE開發框架,簡單易學,學習成本低。
數據庫無限制,目前支持MySql、Oracle,可擴充SQL Server、PostgreSQL、H2等。
模塊化設計,層次結構清晰。內置一系列企業信息管理的基礎功能。
操做權限控制精密細緻,對全部管理連接都進行權限驗證,可控制到按鈕。
數據權限控制精密細緻,對指定數據集權限進行過濾,七種數據權限可供選擇。
提供在線功能代碼生成工具,提升開發效率及質量。
提供經常使用工具類封裝,日誌、緩存、驗證、字典、組織機構等,經常使用標籤(taglib),獲取當前組織機構、字典等數據。
兼容目前最流行瀏覽器(IE7+、Chrome、Firefox)IE6也支持,但體驗效果差。

技術選型

一、後端
  • 核心框架:Spring Framework 4.0
  • 安全框架:Apache Shiro 1.2
  • 視圖框架:Spring MVC 4.0
  • 服務端驗證:Hibernate Validator 5.1
  • 佈局框架:SiteMesh 2.4
  • 工做流引擎:Activiti 5.1五、FoxBPM 6
  • 任務調度:Spring Task 4.0
  • 持久層框架:MyBatis 3.2
  • 數據庫鏈接池:Alibaba Druid 1.0
  • 緩存框架:Ehcache 2.六、Redis
  • 日誌管理:SLF4J 1.七、Log4j
  • 工具類:Apache Commons、Jackson 2.二、Xstream 1.四、Dozer 5.三、POI 3.9
二、前端
  • JS框架:jQuery 1.9。
  • CSS框架:Twitter Bootstrap 2.3.1。
  • 客戶端驗證:JQuery Validation Plugin 1.11。
  • 富文本:CKEcitor
  • 文件管理:CKFinder
  • 動態頁籤:Jerichotab
  • 手機端框架:Jingle
  • 數據表格:jqGrid
  • 對話框:jQuery jBox
  • 下拉選擇框:jQuery Select2
  • 樹結構控件:jQuery zTree
  • 日期控件: My97DatePicker
四、平臺
服務器中間件:在Java EE 5規範(Servlet 2.五、JSP 2.1)下開發,支持應用服務器中間件 有Tomcat 六、Jboss 七、WebLogic 十、WebSphere 8。
數據庫支持:目前僅提供MySql、Oracle數據庫的支持,但不限於數據庫,平臺留有其它數據庫支持接口, 可方便更改成其它數據庫,如:SqlServer 200八、MySql 5.五、H2等
開發環境:Java EE、Eclipse、Maven、Git

安全考慮

開發語言:系統採用Java 語言開發,具備卓越的通用性、高效性、平臺移植性和安全性。
分層設計:(數據庫層,數據訪問層,業務邏輯層,展現層)層次清楚,低耦合,各層必須經過接口才能接入並進行參數校驗(如:在展現層不可直接操做數據庫),保證數據操做的安全。
雙重驗證:用戶表單提交雙驗證:包括服務器端驗證及客戶端驗證,防止用戶經過瀏覽器惡意修改(如不可寫文本域、隱藏變量篡改、上傳非法文件等),跳過客戶端驗證操做數據庫。
安全編碼:用戶表單提交全部數據,在服務器端都進行安全編碼,防止用戶提交非法腳本及SQL注入獲取敏感數據等,確保數據安全。
密碼加密:登陸用戶密碼進行SHA1散列加密,此加密方法是不可逆的。保證密文泄露後的安全問題。
強制訪問:系統對全部管理端連接都進行用戶身份權限驗證,防止用戶

快速體驗

具有運行環境:JDK1.6+、Maven3.0+、MySql5+或Oracle10g+。
修改src\main\resources\jeesite.properties文件中的數據庫設置參數。
根據修改參數建立對應MySql或Oracle數據庫用戶和參數。
運行bin\init-db.bat腳本,便可導入表結構及演示數據(linux操做系統:在控制檯中切換至項目根目錄,運行命令:mvn antrun:run -Pinit-db)
運行bin\run-tomcat7.bat或bin\run-jetty.bat,啓動Web服務器(第一次運行,須要下載依賴jar包,請耐心等待)。
最高管理員帳號,用戶名:thinkgem 密碼:admin

常見問題

有時出現文字亂碼:修改Tomcat的server.xml文件的Connector項,增長URIEncoding="UTF-8"
用一段時間提示內存溢出,請修改JVM參數:-Xmx512m -XX:MaxPermSize=256m
爲何新建菜單後看不到新建的菜單?由於受權問題,菜單管理只容許最高管理員帳號管理(最高管理員默認帳號:thinkgem 密碼:admin)。
 

JeeSite的安裝

由 ThinkGem 建立, 最後一次修改 2016-10-18

安裝部署

1. 運行Maven目錄下的settings.bat文件,用來設置maven倉庫路徑,並按提示操做(設置PATH系統變量、配置Eclipse)。github

2. 執行jeesite/bin/eclipse.bat 生成工程文件並下載jar依賴包(若是須要修改默認項目名,請打開pom.xml修改第7行artifactId,而後再執行eclipse.bat文件)。
3. 將 jeesite 工程導入到eclipse,選中工程,按F5刷新。
4. 設置數據源:src/main/resources/jeesite.properties
5. 導入數據表並初始化數據:運行db/init-db.bat文件。(導入時若是出現「drop」失敗提示信息,請忽略。)
6. 新建Server(Tomcat),注意選擇如下兩個選項: 
7. 配置server.xml的Connector項,增長URIEncoding="UTF-8"
8. 部署到Tomcat,設置Auto Reload爲Disabled。
9. 訪問工程:http://127.0.0.1:8080/ jeesite  用戶名:thinkgem  密碼:admin

常見問題

1. 'mvn' 不是內部或外部命令,緣由以下
  • PATH未配置或配置了多個不一致的Maven地址,如用戶/系統變量。
  • M2_HOME系統/用戶變量地址不正確,可刪除M2_HOME變量。
  • 檢查mvn運行是否正常,cmd執行:mvn -v
2. 運行eclipse.bat 找不到文件路徑或亂碼:通常緣由是路徑中包含空格或中文。
3. 導入到eclipse下找不到jar包:maven未配置,查看m2_repo倉庫路徑是否正確。
4. 運行init-db.bat提示ORA-xxx:根據錯誤碼排除錯誤,通常是數據庫url不對,用戶名或密碼錯誤。
5. 部署時出現某某被鎖定,通常緣由:Tomcat服務中的兩個選項未選中。
6. 字典列表,添加鍵值,出現亂碼:server.xml未配置url編碼爲utf-8。

JeeSite的文件結構與配置

由 ThinkGem 建立, 最後一次修改 2016-10-18

1、文件結構

1.1. 源碼目錄

src/main/javaweb

com.thinkgem.jeesite

Jeesite平臺目錄

 ├ common

公共模塊存放目錄

 │ ├ beanvalidator

實體Bean驗證相關類

│ ├ log

日誌工具相關類

│ ├ mapper

各類Object到Xml、Object到Json的映射轉換類

│ ├ persistence

持久層相關類

│ ├ security

安全相關類

│ ├ service

業務層相關類

│ ├ servlet

公共servlet相關類

│ ├ utils

各類操做小工具類

│ └ web

模型控制器層相關類

└ modules

JeeSite內置功能模塊存放目錄

├ act

Activiti工做流引擎目錄

├ cms

內容管理、新聞發佈模塊目錄

├ gen

Web版本代碼生成器目錄

├ oa

在線辦公模塊演示用例存放目錄

└ sys

系統核心模塊存放目錄

 ├ dao

數據訪問層相關類

 ├ entity

實體相關類

 ├ interceptor

系統模塊攔截器相關類

 ├ service

業務處相關類

  ├ web

模型控制器層相關類

  └ utils

系統模塊的工具類

1.2. 資源目錄
src/main/resource

act

Activiti工做流引擎相關文件(部署文件、bpmn)

cache

Ehcache緩存配置存放目錄

mappings

Mybatis Sql映射文件存放目錄

jeesite.properties

系統配置屬性文件

spring-*.xml

Spring相關文件

log4j.properties

Log4j日誌配置屬性文件

1.3. 發佈目錄
src/main/webapp

static

靜態文件存放目錄(JS、CSS、前端插件類庫等)

└ compressor.bat

JavaScrpt和CSS文件壓縮腳本

userfiles

用戶上傳文件目錄

WEB-INF

WEB應用安全目錄,經過映射訪問相關文件。

 ├ lib

依賴jar包目錄

├ tags

Tags標籤存放目錄

├ views

視圖文件目錄

│ ├ reportlets

帆軟報表文件存放路徑

│ ├ resources

帆軟報表配置文件存放目錄

 │ ├ error

系統異常映射相關頁面

│ ├ include

視圖相關包含文件

│ ├ layouts

視圖佈局相關文件

│ └ modules

內置核心功能模塊視圖相關文件

│    ├ act

Activiti模塊視圖相關文件

│    ├ cms

內容管理模塊視圖相關文件

│    ├ gen

代碼生成模塊視圖相關文件

│    ├ oa

在線辦公模塊視圖相關文件

│    └ sys

系統管理模塊視圖相關文件

├ ckfinder.xml

CKfinder配置文件

├ decorators.xml

Decorator配置文件

└ web.xml

Web配置文件

1.4. 執行目錄
db

db

數據庫相關腳本、模型及執行文件

├ act

各模塊數據初始化, Oracle建表腳本,數據初始數據腳本文件。

├ cms

├ gen

├ oa

├ sys

└ init-db.bat

初始化數據庫執行腳本(須要Maven支持)

bin

clean.bat

清理項目生成的文件腳本

eclipase.bat

生成eclipse項目執行腳本

package.bat

生成編譯項目文件(war包)

run-jetty.bat

Jetty服務器運行腳本

run-tomcat6.bat

Tomcat6服務器運行腳本

run-tomcat7.bat

Tomcat7服務器運行腳本

2、 jeesite.properties

2.1. 數據源配置
# 數據庫驅動,鏈接設置。
jdbc.driver=oracle.jdbc.driver.OracleDriver
jdbc.url=jdbc:oracle:thin:@127.0.0.1:1521:orcl
jdbc.username=jeesite
jdbc.password=123456

# 鏈接池設置,初始大小,最小,最大鏈接數。
jdbc.pool.init=1
jdbc.pool.minIdle=3
jdbc.pool.maxActive=20

# 測試鏈接sql語句
jdbc.testSql=SELECT 'x' FROM DUAL

2.2. 系統配置

# 配置產品名稱,版權日期和版本號
productName=JeeSite Admin
copyrightYear=2014
version=V1.1.1

# 是不是演示模式,若是是,則以下模塊,沒法進行保存操做
# sys: area/office/user/role/menu/dict, cms: site/category
demoMode=false

# 管理端跟路徑
adminPath=/a

# 前端跟路徑
frontPath=/f

# 信息發佈時的URL後綴,可配置HTML後綴的頁面進行緩存
urlSuffix=.html

# 分頁大小,默認每頁15條
page.pageSize=15

# 碩正組件是否使用Cache(通常開發階段,關閉Cache)
supcan.useCache=false

# 設置通知間隔訪問時間,單位毫秒.
oa.notify.remind.interval=60000

 

2.3. 框架參數配置

# 設置SESSION超時時間,web.xml裏設置無效,單位毫秒.
session.sessionTimeout=120000
session.sessionTimeoutClean=120000

 

# 緩存設置
ehcache.configFile=cache/ehcache-local.xml
#ehcache.configFile=cache/ehcache-rmi.xml

# 首頁地址
web.view.index=/a

# 視圖文件配置,前綴和後綴
web.view.prefix=/WEB-INF/views/
web.view.suffix=.jsp

# 最大上傳字節數 10M=10*1024*1024(B)=10485760
web.maxUploadSize=10485760

# 設置日誌攔截器,攔擊的URI,@RequestMapping 值
web.logInterceptExcludeUri=/, /login, /sys/menu/tree, /sys/menu/treeData, /oa/oaNotify/self/count
web.logInterceptIncludeRequestMapping=save, delete, import, updateSort

 

# 工做流配置
activiti.isSynActivitiIndetity=false
activiti.export.diagram.path=c:/activiti_diagram
#activiti font (windows font: \u5B8B\u4F53  linux font: simsun)
activiti.diagram.activityFontName=\u5B8B\u4F53
activiti.diagram.labelFontName=\u5B8B\u4F53
activiti.form.server.url=http://127.0.0.1:8075/xxxx

3、pom.xml

 
3.1. 修改項目名稱
artifactId:項目名稱   version:版本
修改完成後運行eclipse.bat從新生成項目文件。

 

3.2. 添加jar依賴包


可經過公司maven私服查詢相應jar依賴包。
私服地址:http://192.168.11.36:8888/nexus/
若是公司私服上沒有相應的依賴jar

1) 可聯繫王震添加依賴jar,

2) 將jar文件拷貝項目WEB-INF下的lib目錄,並配置pom,例如:

<dependency>

        <groupId>com.test</groupId>

        <artifactId>test-core</artifactId>

        <version>1.0</version>

        <scope>system</scope>

        <systemPath>

${project.basedir}/src/main/webapp/WEB-INF/lib/test-core-1.0.jar

</systemPath>

    </dependency>

 

3.3. 刪除init-db插件


項目初始化完成後,必定要刪除或重命名pom裏面的init-db插件,防止項目進行中誤操做運行了init-db.bat文件,數據庫被清空。

4、數據庫設計

模型文件:/ jeesite/db/test/jeesite.erm
業務數據表必須包含如下公共字段:

5、重要規範

1. 類註釋:必須包含類功能描述,做者,時間
2. 方法註釋:除很是容易理解的方法如get、form、save、delete等方法外的方法必須加註釋來講明用途,傳遞參數。
3. 按照以上命名結構進行文件分配存放。
4. 視圖文件名要加模塊或功能前綴,例如actTaskTodoList.jsp,表明:工做流任務待辦列表,不要寫成list.jsp或todoList.jsp或taskTodoList.jsp。
5. Sql與定義分離:不在萬不得已的狀況下不要寫在java文件裏,分離。

JeeSite 內置組件的應用

由 ThinkGem 建立, 最後一次修改 2016-10-18

1.   經常使用組件

1.1. 佈局組件

佈局文件配置:

/ jeesite/src/main/webapp/WEB-INF/decorators.xml

默認佈局文件:

/ jeesite/src/main/webapp/WEB-INF/views/layouts/default.jsp

非公共,本身創建的佈局文件:

/ jeesite/src/main/webapp/WEB-INF/views/模塊路徑/layouts/佈局文件.jsp

使用佈局文件:

JSP的head裏添加:<meta name="decorator" content="default"/>

1.2. 用戶工具   UserUtils.java   fns.tld

應用場景:在java文件或jsp頁面上,獲取當前用戶相關信息

1.    獲取當前用戶:

1)  UserUtils.getUser();

2)  entity.currentUser()

3)  ${fns:getUser()}

2.       獲取當前用戶部門:

1)  UserUtils.getOfficeList()

2)  ${fns:getOfficeList()}

3.       獲取當前用戶區域:

1)  UserUtils.getAreaList()

2)  ${fns:getAreaList()}

4.       獲取當前用戶菜單:

1)  UserUtils.getMenuList()

2)  ${fns:getMenuList()}

5.       獲取當前用戶緩存:

1)  UserUtils.getCache(key);

2)  ${fns:getCache(cacheName, defaultValue)}

6.       設置當前用戶緩存:

1)  UserUtils.putCache(key);

1.3. 全局緩存  CacheUtils.java

應用場景:系統字典

1.       設置應用程序緩存:CacheUtils.put(key);

2.       獲取應用程序緩存:CacheUtils.get(key);

1.4. 字典工具  DictUtils.java

應用場景:系統全局固定的字典數據,java或jsp中獲取字典相關數據。

1.     根據類型和值獲取字典標籤(列表取值):

a)       DictUtils.getDictLabel(Stringvalue, String type, String defaultValue) 

b)       ${ fns:getDictLabel (value,type, defaultValue)}

2.     根據類型和標籤獲取字典值(根據標籤取值):

a)       DictUtils.getDictValue(Stringlabel, String type, String defaultLabel)

b)       ${fns:getDictValue(label, type,defaultValue)}

3.     根據類型獲取字典列表(下拉框,複選框,單選框):

a)       DictUtils.getDictList(Stringtype)

b)       ${fns:getDictList(type)}

1.5. 功能權限控制

應用場景:訪問功能受權,查看權限,編輯權限,導入權限,審覈權限。

1.       給方法添加權限標誌

@RequiresPermissions("sys:submodule:user:view")

@RequiresUser

2.       菜單中設置權限標誌。

3.       判斷權限:

SecurityUtils.getSubject().isPermitted("sys:user:edit");

4.       視圖中控制按鈕(shiro.tld): 

<shiro:hasPermissionname="sys:user:edit"> <inputid="btnSubmit" class="btn btn-primary"type="submit" value="保存"/>  </shiro:hasPermission> <!-- 任何一個符合條件的權限 --> <shiro:hasAnyPermissions name="sys:user:view,sys:user:edit,"> <inputid="btnSubmit" class="btn btn-primary"type="submit" value="返回"/>  </shiro: hasAnyPermissions> 

1.6. 數據權限

應用場景:某用戶訪問數據範圍:公司及子公司,本公司,部門及子部門,本部門,當前用戶,明細設置。 

// 生成數據權限過濾條件(dsf爲dataScopeFilter的簡寫,在xml中使用 ${sqlMap.dsf}調用權限SQL)
       user.getSqlMap().put("dsf", dataScopeFilter(user.getCurrentUser(),"o", "u"));
 
    <!-- 分頁查詢用戶信息 --> <select id="findList" parameterType="User"resultMap="userResult"> SELECT <include refid="userColumns"/> FROM sys_user a <include refid="userJoins"/> WHERE a.del_flag = '0' <!-- 數據範圍過濾 --> ${sqlMap.dsf} </select>

/**

     * 數據範圍過濾

     * @param user 當前用戶對象,經過「entity.getCurrentUser()」獲取

     * @param officeAlias 機構表別名,多個用「,」逗號隔開。

     * @param userAlias 用戶表別名,多個用「,」逗號隔開,傳遞空,忽略此參數

     * @return 標準鏈接條件對象

     */

    String dataScopeFilter (User user, StringofficeAlias, String userAlias)

1.7. 智能分頁組件

       // 設置分頁參數,則分頁,若是不設置,則根據條件獲取所有

       user.setPage(page);

       // 執行分頁查詢

       page.setList(userDao.findPage(user));

1.8. 樹選擇組件

標籤文件:/ jeesite/src/main/webapp/WEB-INF/tags/treeselect.tag

1.8.1.    區域選擇組件 

            

<tags:treeselect id="area"name="area.id" value="${area.id}" labelName="area.name"labelValue="${area.name}" title="區域" url="/sys/area/treeData"cssClass="input-small" allowClear="true" notAllowSelectParent="true"/> 

多選須要加 checked="true" 屬性

1.8.2.    公司選擇組件

              

<tags:treeselectid="office" name="office.id"value="${user.office.id}" labelName="office.name"labelValue="${user.office.name}" title="部門" url="/sys/office/treeData?type=1"cssClass="input-small" allowClear="true"notAllowSelectParent="true"/> 

 多選須要加 checked="true" 屬性

1.8.3.    部門選擇組件


 

<tags:treeselectid="office" name="office.id"value="${user.office.id}" labelName="office.name"labelValue="${user.office.name}" title="部門" url="/sys/office/treeData?type=2"cssClass="input-small" allowClear="true"notAllowSelectParent="true"/> 

多選須要加 checked="true" 屬性

1.8.4.    人員選擇組件


<tags:treeselectid="user" name="user.id" value="${user.id}"labelName="user.name" labelValue="${user.name}" title="用戶" url="/sys/office/treeData?type=3"cssClass="input-small" allowClear="true"notAllowSelectParent="true"/> 

多選須要加 checked="true" 屬性

1.9. 文件選擇、文件上傳組件

<form:hidden path="name"htmlEscape="false" maxlength="255"class="input-xlarge"/> <tags:ckfinder input="name"type="files" uploadPath="/test "/>

1.10.    富文本在線編輯器組件

<form:textarea id="name"htmlEscape="true" path="name" rows="4"maxlength="200" class="input-xxlarge"/> <tags:ckeditor replace="name"uploadPath="/test " />

1.11.    其它工具

/src/main/java/com/thinkgem/jeesite/common/utils/...

Excel(Export/Import)、StringUtils、DateUtils、FileUtils、Encodes、CookieUtils、Collections3

2.  封裝及組件

2.1. 工具類組件

1) UserUtils:用戶工具類(獲取當前用戶的相關信息)。

2) CacheUtils:系統級別Cache工具類。

3) CookieUtils:Cookie操做工具類

4) DateUtils:日期時間工具類。

5) FileUtils:文件操做工具類。

6) StringUtils:字符串操做工具類。

7) ExcelExcel導入導出,參考用戶導入導出例子。

8) Reflections:Java對象操做反射工具類。

9) BeanMapper:Bean與Bean,Bean與Conllection的互轉

10)  JaxbMapper:XML與Object互轉。

11)  JsonMapper:JSON與Object互轉。

12)  Cryptos、Digests:密鑰工具類SHA一、MD5。

13)  Collections3:集合對象工具類。

14)  Encodes:各類編碼轉換工具類。

15)  Exceptions:異常工具類。

16)  FreeMarkers:FreeMarkers模板工具類。

17)  Identities:惟一標識生成算法工具類(uuid、random)

18)  PropertiesLoader:屬性文件操做工具類

19)  Threads:線程相關操做工具類。

2.2. 自定義標籤組件

1)ckeditor.tag:HTML在線編輯器。

2)ckfinder.tag:在線文件管理。

3)iconselect.tag:Icon圖標選擇。

4)message.tag:消息彈框。

5)validateCode.tag:驗證碼。

2.3.  EL 函數組件

1)fns.tld:系統相關EL函數。

2.4.  JavaScript 組件

1)  jQuery:強大的js框架,動態特性,AJAX、插件擴展

2)  jQuery Validate:基於jQuery的客戶端校驗插件。

3)  jBox:基於jQuery的多功能對話框插件。

4)  zTree:基於jQuery的樹結構展現查看。

5)  My7DatePicker:日期選擇控件。

6)  treeTable:基於jQuery的表格數顯示插件。

7)  CKEditor:富文本在線HTML編輯器。

8)  CKFinder:在線文件資源管理器。

9)  SuperSlide:基於jQuery的滑動門插件(滑動圖片,Tab,橫幅等)。

3.  界面UI、CSS、JS

  1. 主題CSS框架:http://v2.bootcss.com/base-css.html
  2. 多功能下拉框:http://ivaynberg.github.io/select2/
  3. 界面文檔(查找class,查找css):http://www.bootcss.com/scaffolding.html
  4. 前端驗證: /src/main/webapp/static/jquery-validation/1.11.0/demo/index.html
  5. 彈出對話框: /src/main/webapp/static/jquery-jbox/2.3/docs/jbox-demo.html
top.$.jBox.open('iframe:'+href,'查看評論',$(top.document).width()-220,$(top.document).height()-180,{
        buttons:{"關閉":true},
        loaded:function(h){
            $(".jbox-content",top.document).css("overflow-y","hidden");
            $(".nav,.form-actions,[class=btn]",h.find("iframe").contents()).hide();
            $("body",h.find("iframe").contents()).css("margin","10px");
        }
    });

JeeSite 代碼生成器的應用

由 ThinkGem 建立, 最後一次修改 2016-10-20

1 操做步驟

  • 使用ERMaster創建數據模型(1.1節)
  • 進入代碼生成模塊,添加業務表配置(1.2節)
  • 進入代碼生成模塊,添加生成方案配置並生成代碼(1.3節)
  • 根據生成代碼的Controller,配置菜單和權限(1.4節)
1.1 數據模型
  • 進行數據庫設計,建表。碰見字段須要存儲中文字符的時候要用nvarchar,不要用varchar。
  • 本身創建表模型是請拷貝一份「db/test/jeesite.erm」文件,在此模型基礎上創建本身的業務表便可。
1.1.1	業務表必須包含的字段

   紅框內爲必須有的字段:

1.1.2 一對多必須包含的字段
   紅框內爲必須有的字段:

1.1.3 樹結構必須包含的字段
紅框內爲必須有的字段:

1.1.4 快速添加必須包含的字段
在test/jeesite.erm文件中已內置兩個字段組,分別是common和tree_field,在表編輯界面中可快速選擇並添加相應字段,以下圖:

1.2 業務表配置
1.2.1 第一步,選擇表

1.2.2  第二步,配置表

  • 表名:物理表表名
  • 說明:物理表表描述
  • 類名:生成表關聯的實體類名稱
  • 父表表名:關聯父表的表名,外鍵:當前表關聯父表的主鍵,若是當前表爲子表,需在此指定父表及外鍵。外鍵字段需在字段列表中手動設置屬性名(對象.主鍵,例如:將userId修改成user.id)
  • 列名:數據表定義的字段名稱
  • 說明:數據表定義的字段註釋
  • 物理類型:數據表定義字段類型
  • Java類型:實體對象的屬性字段類型
  • Java屬性名稱:實體對象的屬性字段(對象名.屬性名|屬性名2|屬性名3,例如:用戶user.id|name|loginName,屬性名2和屬性名3爲Join時關聯查詢的字段)
  • 主鍵:是不是主鍵字段
  • 可空:該字段是否可爲空
  • 插入:是不是插入字段,若是是則包含在insert語句裏
  • 編輯:是不是編輯字段,若是是則包含在update語句裏
  • 列表:是不是列表查詢,若是是則包含在列表頁的表格列裏。
  • 查詢:是不是查詢字段,若是是則包含在查詢頁的查詢列表裏。
  • 查詢方式:查詢字段的查詢方式,也就是where後的條件表達式,如:字段1=字段2  AND  字段3>字段4  AND  字段5 !=字段6。
  • 字段生成方案:表單中字段生成的樣式,如:input,select,treeselect,areatext等等
  • 字典類型:若是字段生成方案爲:下拉框、複選框、單選框,則該字段必須指定一個字典類型,字典類型爲字段管理中的字典類型。
  • 排序:字段生成的前後順序,升序。
1.3 生成方案配置
  • 方案名稱:自定的方案名稱,隨意寫便可。
  • 模板分類:生成的模板,目前可生成以下模板:增刪改查(單表)、增刪改查(一對多)、僅持久層(dao/entity/mapper)、樹結構表(一體)。
  • 生成包路徑:生成哪一個包下。
  • 生成模塊名:生成包下的模塊名稱,模塊名稱下進行分層。
  • 生成子模塊名:分層下的文件夾,可爲空。
  • 生成功描述:生成到類註釋裏。
  • 生成功能名:生成功能提示,如TAB上、列表上、提示信息等。
  • 生成功能做者:開發者姓名
  • 生成選項:是否替換現有文件,提供重複生成,覆蓋原有文件。
1.4 菜單權限
  • 根據控制器@RequestMapping及@RequiresPermissions添加菜單和權限標誌
1.5 生成示例
導入「db/gen/example_xx.sql」文件(默認已導入),將導入「業務表配置」、「生成方案配置」、「菜單權限」示例信息,生成代碼後效果以下:
1.5.1 菜單
1.5.2 單表
1.5.3 主子表
1.5.4 樹結構
1.6 主子表(一對多)注意事項
一對多生成須要配置一個主表,和一個或多個子表。
子表配置須要指定父表表名和外鍵,以下:

表配置結果,以下:

生成方案中選擇「增刪改查(一對多)」,業務表表名選擇「主表」,以下:

其它操做與單表生成相同。

JeeSite 碩正WEB組件的應用

由 ThinkGem 建立, 最後一次修改 2016-10-20

1. 簡介

碩正描述格式採用XML,數據格式採用JSON。緣由以下:描述採用XML可表現比較複雜的結構,易於官方文檔查找好對應;數據採用JSON格式緣由有三點,一是JSON官方有很好的支持;二是JSON格式比較簡單並解析速度快,三是JSON相比XML要小,節省流量。
後臺採用註解方式配置,自動返回描述XML字符串和數據JSON字符串。

  • 描述文件XML註解配置請參考本文第2章;
  • 數據格式JSON註解配置請參考Jackson註解,官方網站

2. 樹列表註解

實例代碼見TestController.java,testList.jsp文件,演示頁面以下:

2.1. 調用實例

@SupTreeList(
	properties=@SupProperties(headerFontIndex="2", curSelBgColor="#ccddcc",
		displayMask="backColor=if(name='管理員', '#ff0000', transparent)",
		expresses={
			@SupExpress(text="total=round(price*num, 2)"),
			@SupExpress(text="price=round(total/num, 4)")
	}),
	fonts={
		@SupFont(faceName="宋體", weight="400"),
		@SupFont(faceName="楷體", weight="700", height="-12"),
		@SupFont(faceName="楷體", weight="400", height="-12")}, 
	groups={
		@SupGroup(id="date", name="日期", headerFontIndex="1", sort=50),
		@SupGroup(id="date2", name="日期2", headerFontIndex="2", sort=60, parentId="date"),
		@SupGroup(id="date3", name="日期3", headerFontIndex="2", sort=70, parentId="date")
})

實體配置,參考類: Test.java


2.2. @SupTreeList

  • 碩正整體註解
  • 碩正主要註解,只能夠定義到類之上。

2.3. @ SupProperties
碩正屬性設置註解。


2.4. @ SupFont
碩正字體設置註解。

 

2.5. @SupCol、@SupGroup
碩正表頭列及列表頭組設置註解。

3. JS封裝庫 supcan.js

3.1. 調用實例

<%@include file="/WEB-INF/views/include/supcan.jsp" %> <script type="text/javascript"> $(document).ready(function() { su = supcan(AF, "Test", { ready: function(){ // 加載數據 page(); }, event: function(Event, p1, p2, p3, p4){ if(Event == 'DblClicked'){ edit(); } } }); }); </script> 

解釋:

AF爲:碩正實例化後的對象。

<div id="supcan" class="supcan"> <script>insertTreeList('AF', 'border=none;')</script> </div> 

Test爲,實體類的名稱。
Ready:碩正加載調用方法。
Event:碩正事件調用方法。

3.2. 方法接口

/**
 * 實例化一個碩正控件
 * @param AF 碩正對象
 * @param url 碩正描述文件URL,若是不是一個URL,則填寫實體類名
 * @param options 參數選項
 * @returns {Supcan} 碩正封裝對象實例
 */
function supcan(AF, url, options);

options參數:

su: $this,				// 當前碩正對象
		checked: true,		// 是否插入複選框
		curSelMode: "rows",	// 行選擇模式(row:單選;rows:多選;excel:Excel選擇模式)
		dataType: "json",		// 數據類型,若是數據類型不是json,則This.data不自動轉換爲對象,分頁代碼也不自動賦值
		height: "auto",		// 控件高度,默認自適應。
		body: "body",			// 控件高度自適應,相關對象
		frame: top.mainFrame,// 控件高度自適應,相關對象
		ready: function(){},	// 默認的控件加載調用方法
		event: function(){}	// 默認的控件事件調用方法

對象公共方法:

var $this = this;
	
	/**
	 * 碩正原始對象
	 */
	$this.AF = AF;
	
	/**
	 * 碩正描述文件URL,若是不是一個URL,則填寫實體類名
	 */
	if (url.indexOf('/') == -1){
		$this.url = ctx + '/supcan/treeList/' + url + '.xml';
	}else{
		$this.url = url;
	}
	
	/**
	 * 碩正組件配置選項
	 */
	$this.options
	
	/**
	 * 碩正數據對象,若是dataType爲json,則爲JSON對象,不然爲數據字符串
	 */
	$this.data = "";

	/**
	 * 調用碩正內置函數
	 */
	$this.func = function(name, param)
	
	/**
	 * 碩正控件自動高度
	 */
	$this.autoHeight = function()
	
	/**
	 * 初始化方法
	 * @param url 描述文件URL
	 */
	$this.init = function(url)
	
	/**
	 * 加載數據
	 * @param dataUrl 數據調用URL
	 * @param paramString 參數字符串
	 * @param pareDiv 分頁DIV的ID,若是數據格式爲JSON,則自動設置分頁器代碼。
	 */
	$this.load = function(dataUrl, paramString, callback)
	
	/**
	 * 加載數據
	 * @param form 參數表單,自動序列化表單字段,加入數據URL中
	 * @param page 分頁DIV,若是數據格式爲JSON,則自動設置分頁器代碼。
	 */
	$this.loadByForm = function(form, page)

	/**
	 * 獲取單元格數據
	 * @param columnName 列表列名
	 * @param isMany 是否支持多選,獲取多個值
	 */
	$this.getCellText = function(columnName, isMany)
	
	/**
	 * 切換到以樹顯示,並讓勾選列和第一列(樹的排序列)合併顯示
	 */
	$this.setTree = function(flag)

JeeSite 工做流的應用實例

由 ThinkGem 建立, 最後一次修改 2016-10-20

1 新建流程模型

在線辦公-流程管理-模型管理-新建模型

點擊「提交」後會當即跳轉到「流程在線設計器」頁面,請看下一章節

2 在線流程設計器

在線辦公流程管理模型管理模型管理編輯
注意:此功能不支持IE,請用谷歌或火狐瀏覽器編輯。

2.1 設置流程屬性

  • 名稱:流程定義名稱
  • 描述:流程定義描述
  • 流程標識:流程定義KEY,對應procDefKey,用來標識一個流程
2.2	拖拽形狀元素
  • Start event:開始事件
  • End entit:結束事件
  • User task:用戶任務活動
  • Service task:服務任務活動
  • Exclusive gateway:排它網關通道,只能有一條分支執行,如if else
  • Parallel gateway:並行網關通道,全部分支一塊執行
  • Enclusive gateway:包含網關通道,執行符合條件的分支

參考:http://www.mossle.com/docs/activiti/#bpmnConstructs


2.3 流程發起人流程變量
在開始節點的屬性中設置「流程發起人」變量名:如:apply

這時,任務的參與者可設置${apply},來指定誰發起誰執行 

 
如發起人發起流程,被駁回是,駁回到發起人,可以使用方法。

 

2.4 掛接表單地址

  • 全局表單:新建流程時或活動元素上未設置表單標識時調用的表單,位於開始事件屬性中「表單標識」字段,指定表單訪問地址。
  • 活動表單:當前步驟使用的表單,使用活動節點屬性「表單標識」字段。
 
2.5	設置參與者
在活動節點屬性中找到「參與者」屬性,點擊「…」彈出以下窗口

  • assignee:任務執行人,設置系統中的「登陸名」(loginName)。
  • candidateUsers:任務執行人,多個用逗號「,」隔開。
  • candidateGroups:任務執行組,多個用逗號「,」隔開,設置系統中的「角色英文名(enname)」。
assignee和candidateUsers的區別是:assignee不須要簽收任務,直接可執行任務;candidateUsers爲競爭方式分配任務,被指定人待辦中都有一條任務,誰先簽收誰就得到任務的執行權。
參與者可指定流程變量(EL表達式),動態指定參與者,如:${processer}

JeeSite 手機端基礎接口文檔

由 ThinkGem 建立, 最後一次修改 2016-10-20

1 傳輸格式

傳輸格式均爲JSON字符串,使用spring mvc返回對象,並自動經過fasterxml jackson工具類(JsonMapper.java)進行對象到JSON轉換。
輸出格式符合JSON標準,UTF-8編碼。

2 帳號登陸

http://127.0.0.1:8080/ jeesite/a/login?__ajax=true
提交參數:
用戶名: username
密  碼: password
驗證碼: validatjeesite(isValidatjeesiteLogin爲true時須要提交驗證碼)
手機登陸:mobileLogin=true
提交方式:POST
獲取驗證碼圖片:

http://127.0.0.1:8080/jeesite/servlet/validatjeesiteServlet

3 登陸成功

http://127.0.0.1:8080/jeesite/a
{
    "id": "1",(ID生成策略爲UUID,字符串格式,系統自帶用戶爲數值序列)
    "loginName": "system",(登陸名)
    "name": "系統管理員",(用戶姓名)
    "mobileLogin": true,(是不是手機登陸)
    "sessionid": "b6b486a8919e4fc196358e10b6a82a2b"(當前用戶SESSIONID)
}

4 登陸失敗

{
    "username": "system",(登陸用戶名)
    "rememberMe": false,(是否選擇了記住我)
    "mobileLogin": true,(是不是手機登陸)
    "isValidatjeesiteLogin": true,(登陸三次失敗爲驗證碼登陸,顯示驗證碼圖片)
    "message": "用戶或密碼錯誤, 請重試."(登陸失敗信息,驗證碼錯誤提示驗證碼錯誤信息)
}

5 帳號退出

http://127.0.0.1:8080/jeesite/a/logout

6 請求頁面

6.1	格式
在請求路徑後包含會話ID(JSESSIONID必定要大寫)便可,格式以下:
URL  = 「請求URL」 + 「;JSESSIONID=」+ 「會話ID」
6.2 示例
http://127.0.0.1:8080/jeesite/a/test/test/listData;JSESSIONID=b6b486a8919e4fc196358e10b6a82a2b?__ajax=true

7 獲取基礎信息

7.1	當前用戶信息
http://127.0.0.1:8080/jeesite/a/sys/user/info
7.2 獲取區域列表
http://127.0.0.1:8080/jeesite/a/sys/area/treeData
7.3 獲取部門列表
http://127.0.0.1:8080/jeesite/a/sys/office/treeData
7.4 獲取用戶列表
http://127.0.0.1:8080/jeesite/a/sys/user/treeData?officeId=2
返回用戶ID須要替換 「u_」,返回原始ID字符串


2.6 設置流轉條件
在流轉線的屬性中找到「流轉條件」,這裏,寫EL表達式,返回true或false,如:${flag == ‘1’}

2.7 保存流程設計圖
工具欄上點擊「保存」按鈕 

這時,任務的參與者可設置${apply},來指定誰發起誰執行

如發起人發起流程,被駁回是,駁回到發起人,可以使用方法。

 

2.8	注意事項
  • 全部編號,如:模型編號、流程編號、活動節點編號,都不容許以數字開頭。

3 部署流程

  • 上步我們學習了流程設計,產生流程設計圖,如何將咱們的圖部署到系統中並使用呢,請看以下操做:
  • 在線辦公流程管理模型管理模型管理部署
  • 接着系統會提示「部署成功」信息,若是提示錯誤,說明你流程設計圖有問題,請檢查錯誤,從新執行部署操做。
  • 另外兩種部署方法,經過eclipse插件設計好的流程:
在線辦公-流程管理-流程管理-部署流程-選擇流程.bpmn.xml
編寫並執行ant腳本,啓動系統將自動部署
/ jeesite/src/main/resources/act/build.xml。
  • 設置流程分類:在流程管理中直接點擊流程分類進行設置。
  • 同一標識流程,部署屢次,版本號自動加1
  • 正在運行的流程,再次部署新流程後,正在運行的流程還按照原來流程設置走,再次新建的流程使用新流程走。

4 流程表單流轉

4.1 數據庫設計
使用erm進行數據庫建模,而後使用代碼生成工具生成增刪改查代碼。
流程業務表中必須包含,以下字段:
生成ddl導入數據庫
 
4.2 代碼生成代碼
功能訪問路徑與第2章掛接表單對應(/oa/testAudit/form);
請參考:「在線辦公->我的辦公->審批測試」模塊
源碼:com.thinkgem.jeesite.modules.oa.*. TestAudit*.java,testAudit*.jsp

4.3 啓動流程接口
TestAuditService.java第62行,傳遞參數以下:
/**
	 * 啓動流程
	 * @param procDefKey 流程定義KEY
	 * @param businessTable 業務表表名
	 * @param businessId	業務表編號
	 */
	@Transactional(readOnly = false)
	public void startProcess(String procDefKey, String businessTable, String businessId)
4.4 提交任務接口
TestAuditService.java第123行,傳遞參數以下:
/**
	 * 提交任務, 並保存意見
	 * @param taskId 任務ID
	 * @param procInsId 流程實例ID,若是爲空,則不保存任務提交意見
	 * @param comment 任務提交意見的內容
	 * @param vars 任務變量
	 */
	@Transactional(readOnly = false)
	public void complete(String taskId, String procInsId, String comment, Map<String, Object> vars) 
4.5 視圖流轉信息調用組件
傳遞流程實例ID,以下:
<tags:actHistoicFlow procInsId="${testAudit.act.procInsId}" /> 

5 測試執行

在線辦公我的辦公新建任務test_audit啓動流程
系統自動調用流程設計時設置的開始節點中的「表單標識」地址
這事待辦人的待辦中出現一條待辦項
點擊進入辦理,下方顯示流轉信息:

流程跟蹤圖:

在待辦中點擊「環節名稱」,進入流程跟蹤圖界面

辦理任務,最下方顯示流轉信息:

/**
	 * 使碩正控件變爲灰色
	 */
	$this.setGrayWindow

4. 應用實例

展現頁面:
WEB-INF/views/modules/test/testList.jsp
數據獲取方法:
src/main/java/cn/net/modules/test/web/TestController.java 裏的 listData 方法
數據實體類配置:
com.thinkgem.jeesite.test.entity.Test.java

第七個本身在項目中沒有看見用過

 

這是一個很不錯的框架  很智能的  使用過的道友們能夠交流一下啦

相關文章
相關標籤/搜索