來源:小屁孩大帥-楊一凡 發(fā)布時間:2018-12-05 14:49:12 閱讀量:1120
簡介
JeeWeb是一款基于SpringMVC+Spring+Hibernate的敏捷開發(fā)系統(tǒng);它是一款具有代碼生成功能的智能快速開發(fā)平臺;是以Spring Framework為核心容器,Spring MVC為模型視圖控制器,Hibernate為數(shù)據(jù)訪問層, Apache Shiro為權(quán)限授權(quán)層,Ehcahe對常用數(shù)據(jù)進(jìn)行緩存,Disruptor作為并發(fā)框架,Bootstrap作為前端框架的優(yōu)秀 開源 系統(tǒng)。
JeeWeb是一款 全開源開發(fā)平臺 ,特別 代碼生成器模塊也采用開源模式 ,各位開發(fā)者可以根據(jù)自己的需要改造出更加適合自己的代碼生成器,不管是做項目、學(xué)習(xí)、接私活它都將是你的最佳拍檔;
JeeWeb主要定位于企業(yè)快速開發(fā)平臺建設(shè),已內(nèi)置很多優(yōu)秀的基礎(chǔ)功能和高效的 代碼生成 工具,包括:系統(tǒng)權(quán)限組件、數(shù)據(jù)權(quán)限組件、數(shù)據(jù)字典組件、核心工具組件、視圖操作組件、代碼生成、 UI模版標(biāo)簽 庫等。前端界面風(fēng)格采用了結(jié)構(gòu)簡單、性能優(yōu)良、頁面美觀大氣的Twitter Bootstrap頁面展示框架。采用分層設(shè)計、提交數(shù)據(jù)安全編碼、密碼加密、訪問驗證、數(shù)據(jù)權(quán)限驗證。使用Maven做項目管理,提高項目的易開發(fā)性、擴(kuò)展性。
目前功能模塊代碼生成器、權(quán)限框架、數(shù)據(jù)字典、數(shù)據(jù)緩存、并發(fā)框架、數(shù)據(jù)監(jiān)控、計劃任務(wù)、多數(shù)據(jù)源管理、附件管理、類似mybatis動態(tài)SQL、UI模板標(biāo)簽、短信發(fā)送、郵件發(fā)送、統(tǒng)計功能等功能。
JeeWeb的開發(fā)方式采用( 代碼生成器快速設(shè)計生成代碼->手工完善邏輯->豐富模板標(biāo)簽快速前端開發(fā) ),可以快速協(xié)助java開發(fā)人員解決60%的重復(fù)工作,讓開發(fā)人員更多關(guān)注業(yè)務(wù)邏輯的實現(xiàn),框架使用前端模板標(biāo)簽,解放JAVA開發(fā)人員的開發(fā)壓力,提高開發(fā)效率,為企業(yè)節(jié)省項目研發(fā)成本,減少開發(fā)周期。
JeeWeb 技術(shù)特點
JeeWeb使用目前流程的WEB開發(fā)架構(gòu)技術(shù),如 SpringMVC, Hibernate,Apache Shiro, Disruptor , ehcache, Jquery ,BootStrap 等等,支持多種數(shù)據(jù)庫MySQL, Oracle, sqlserver等。 分層設(shè)計:使用分層設(shè)計,分為dao,service,Controller,view層,層次清楚,低耦合,高內(nèi)聚。
安全考慮:嚴(yán)格遵循了web安全的規(guī)范,前后臺雙重驗證,參數(shù)編碼傳輸,密碼md5加密存儲,shiro權(quán)限驗證,從根本上避免了SQL注入,XSS攻擊,CSRF攻擊等常見的web攻擊手段。
JeeWeb 功能特點
采用SpringMVC+Spring+Hibernate+Shiro+ Ehcache+Disruptor+Jquery + Boostrap + Ztree等基礎(chǔ)前后端架構(gòu)架構(gòu)
采用面向聲明的開發(fā)模式, 基于泛型編寫極少代碼即可實現(xiàn)復(fù)雜的數(shù)據(jù)展示、數(shù)據(jù)編輯、表單處理等功能,在不使用代碼生成器的情況下,也只需要很少的代碼就能實現(xiàn)基礎(chǔ)的CURD操作,再配合在線開發(fā)與代碼生成器的使用,更加加快了開發(fā)的進(jìn)度,將J2EE的開發(fā)效率成本提高,可以將代碼減少60%以上。
在線開發(fā)(通過在線配置實現(xiàn)一個表模型的增刪改查功能,無需一行代碼,支持用戶自定義表單布局)
代碼生成器,支持多種數(shù)據(jù)模型,根據(jù)表生成對應(yīng)的Entity,Service,Dao,Controller,JSP等,增刪改查功能生成直接使用
UI標(biāo)簽開發(fā)庫,針對前端UI進(jìn)行標(biāo)準(zhǔn)封裝表,頁面統(tǒng)一采用UI標(biāo)簽實現(xiàn)功能:數(shù)據(jù)datagrid,treegrid,FileInput,Editor,GridSelect等,實現(xiàn)JSP頁面零JS,開發(fā)維護(hù)簡潔高效
查詢過濾器:只需前端配置,后臺動態(tài)拼SQL追加查詢條件;支持多種匹配方式(全匹配/模糊查詢/包含查詢/不匹配查詢)
移動平臺支持,對Bootstrap(兼容Html5)進(jìn)行標(biāo)準(zhǔn)封裝
國際化(支持多語言,國際化的封裝為多語言做了便捷支持)
多數(shù)據(jù)源(在線配置數(shù)據(jù)源,數(shù)據(jù)源工作類封裝)
數(shù)據(jù)權(quán)限:整合Shiro權(quán)限
計劃任務(wù)控制(在線配置計劃任務(wù)、方便計劃任務(wù)的時間調(diào)整規(guī)劃)
郵件發(fā)送(配置郵件模版、郵件帳號的在線配置、郵件異步發(fā)送、郵件發(fā)送日志功能統(tǒng)計)
短信發(fā)送(配置短信模版、短信帳號的在線配置、短信異步發(fā)送、短信發(fā)送日志功能統(tǒng)計、支持短信發(fā)送平臺動態(tài)切換)
多種首頁風(fēng)格切換,支持自定義首頁風(fēng)格。(Inspinia風(fēng)格|ACE風(fēng)格)
數(shù)據(jù)統(tǒng)計報表:豐富的報表統(tǒng)計功能
支持多種瀏覽器: Google, 火狐, IE,360 等
支持?jǐn)?shù)據(jù)庫: Mysql,Oracle10g,SqlServer等
基礎(chǔ)權(quán)限: 用戶,角色,菜單權(quán)限
Web容器測試通過的有Jetty和Tomcat,Weblogic
要求JDK1.7+
技術(shù)選型
1、后端
核心框架:Spring Framework
安全框架:Apache Shiro
視圖框架:Spring MVC
服務(wù)端驗證:Hibernate Validator
布局框架:SiteMesh
任務(wù)調(diào)度:Quartz
持久層框架:Hibernate
數(shù)據(jù)庫連接池:Alibaba Druid
緩存框架:Ehcache
并發(fā)框架:Disruptor
日志管理:SLF4J、Log4j
工具類:Apache Commons、Jackson、Xstream、
2、前端
JS框架:jQuery。
CSS框架:Twitter Bootstrap
客戶端驗證:Validform。
富文本在線編輯:markdown、simditor、Summernote、CodeMirror自由切換
文件上傳工具:Bootstrap fileinput
數(shù)據(jù)表格:jqGrid
對話框:layer
樹結(jié)構(gòu)控件:jQuery zTree
日期控件: datepicker
代碼高亮: syntaxhighlighter
簡單使用說明
導(dǎo)入sql/jeeweb-mysql-v1.0.sql文件到mysql數(shù)據(jù)庫
導(dǎo)入項目到Eclipse.
修改數(shù)據(jù)庫配置文件dbconfig.properties中的賬號密碼.
啟動項目,管理員賬號admin/密碼123456
技術(shù)文檔
[JeeWeb 開發(fā)環(huán)境搭建入門(完善中...)]
[JeeWeb 開發(fā)手冊(完善中...)]
[JeeWeb 常見問題貼(完善中...)]
[JeeWeb 視頻教程(完善中...)]
JeeWeb 官方百度網(wǎng)盤
平臺目錄結(jié)構(gòu)說明
├─main
│ │
│ ├─java
│ │ │
│ │ └─cn.jeeweb----------------平臺主代碼
│ │ │
│ │ ├─core----------------平臺核心模塊存放目錄
│ │ │ ├─common----------------項目公用的部分(例如基礎(chǔ)controller、dao、service、以及動態(tài)SQL/HQL實現(xiàn))
│ │ │ │
│ │ │ ├─disruptor-------------并發(fā)框架的實現(xiàn)(短信發(fā)送模塊、郵件發(fā)送模塊)
│ │ │ │
│ │ │ ├─filter、interceptor---安全過濾器、其他一些公用攔截器
│ │ │ │
│ │ │ ├─mapper----------------各種Object到Xml、Object到Json的映射轉(zhuǎn)換類
│ │ │ │
│ │ │ ├─model-----------------前段暫時的各種JSON實體
│ │ │ │
│ │ │ ├─quartz----------------quartz定時任務(wù)實現(xiàn)
│ │ │ │
│ │ │ ├─query-----------------前端請求,后端自動組裝、以及分頁的查詢模塊
│ │ │ │
│ │ │ ├─repository------------持久層相關(guān)類
│ │ │ │
│ │ │ ├─security--------------安全相關(guān)類
│ │ │ │
│ │ │ ├─tag-------------------GRID標(biāo)簽、form標(biāo)簽、html組件加載標(biāo)簽等
│ │ │ │
│ │ │ └─utils-----------------一些工具類
│ │ │
│ │ └─modules----------------內(nèi)置功能模塊(按照業(yè)務(wù)模塊分類)
│ │ ├─charts----------------圖表模塊
│ │ │
│ │ └─sys-------------------權(quán)限模塊
│ │ │
│ │ ├─controller---控制層
│ │ │
│ │ ├─entity-------實體層
│ │ │
│ │ ├─service------服務(wù)層
│ │ │
│ │ ├─security-----安全相關(guān)
│ │ │
│ │ ├─tags----------------標(biāo)簽
│ │ │
│ │ └─utils-----------------一些工具類
│ │
│ │
│ ├─resources----------------平臺資源文件
│ │ │
│ │ ├─ehcache----------------緩存配置目錄(ehcache.xml緩存配置文件)
│ │ │
│ │ ├─i18n-------------------國際化信息所在的文件名文件目錄(messages.properties項目國際化、ValidationMessages.propertieshibernate validator驗證)
│ │ │
│ │ ├─mapper----------------一些映射(特別tag/html/中的文件,為html組件加載包)
│ │ │
│ │ ├─statement-------------動態(tài)SQL/HQL(是更靈活的操作SQL/HQL)
│ │ │
│ │ ├─codegen.properties-----代碼生成配置
│ │ │
│ │ ├─dbconfig.properties----數(shù)據(jù)庫配置
│ │ │
│ │ ├─jeeweb.properties------項目的一些配置
│ │ │
│ │ ├─shiro.properties-------shiro配置
│ │ │
│ │ ├─shiro.properties-------代碼生成器的模板文件,以及其他模板存放目錄
│ │ │
│ │ ├─*.properties----------(其他配置,可以查看配置的前綴,對應(yīng)具體業(yè)務(wù)的配置,如何:sms.properties短信、email.properties郵件配置)
│ │ │
│ │ └─spring-*.xml-----------Spring相關(guān)文件
│ │
│ └─webapp----------------web頁面和靜態(tài)資源存放的目錄
│ │
│ └─WEB-INF
│ │
│ ├─static----------------靜態(tài)資源目錄
│ │ │
│ │ ├─ace----------------ace樣式JS,CSS文件
│ │ ├─vendors----------------第三方的JS,css,按照第三方包名單獨保存
│ │ ├─common-----------------系統(tǒng)的公用JS.CSS文件
│ │ └─modules----------------功能模塊CSS,以及JS,按照模板名單獨存放
│ └─webpage----------------視圖文件目錄
│ ├─decorators-------------視圖裝飾目錄
│ ├─error------------------系統(tǒng)異常映射相關(guān)頁面
│ └─modules----------------內(nèi)置核心功能模塊視圖相關(guān)文件(按照模板名單獨存放)
系統(tǒng)演示
[1].多套首頁風(fēng)格,支持自定義(Inspinia風(fēng)格|ACE風(fēng)格)
[2].強(qiáng)大的代碼生成功能
代碼示例
[1].GRID列表
<grid:grid id="codegenGrid" url="${adminPath}/codegen/table/ajaxList">
<grid:column label="sys.common.key" hidden="true" name="id"/>
<grid:column label="codegen.table.tabletype" width="60" name="tableType" dict="tabletype" query="true" queryMode="select" />
<grid:column label="codegen.table.table.name" width="120" name="tableName" query="true" />
<grid:column label="codegen.table.remarks" name="remarks" />
<grid:column label="codegen.table.sync.database" width="80" dict="sf" formatterClass="0:label label-danger;1:label label-success" name="syncDatabase" />
<grid:column label="sys.common.opt" name="opt" formatter="button" width="300"/>
<grid:button title="sys.common.remove" groupname="opt" function="rowConfirm" tipMsg="確認(rèn)要移除該條記錄嗎?" outclass="btn-warning" innerclass="fa-remove" url="${adminPath}/codegen/table/{id}/remove" />
<grid:button groupname="opt" function="delete" tipMsg="確認(rèn)要刪除該條記錄,刪除會刪除對應(yīng)的表結(jié)構(gòu),請謹(jǐn)慎操作!" />
<grid:button title="codegen.table.sync.database" groupname="opt" function="rowConfirm" tipMsg="確認(rèn)要強(qiáng)制同步數(shù)據(jù)庫嗎?同步數(shù)據(jù)庫將刪除所有數(shù)據(jù)重新建表!" outclass="btn-info" innerclass="fa-database" url="${adminPath}/codegen/table/{id}/syncDatabase" />
<grid:toolbar function="create" winwidth = "1000px"/>
<grid:toolbar function="update" winwidth = "1000px"/>
<grid:toolbar title="codegen.table.import" icon="fa-database" function="createDialog" url="${adminPath}/codegen/table/importDatabase" />
<grid:toolbar title="codegen.table.gen" icon="fa-file-code-o" function="updateDialog" url="${adminPath}/codegen/table/{id}/generateCode" />
<grid:toolbar title="codegen.table.createmenu" icon="fa-anchor" function="updateDialog" url="${adminPath}/codegen/table/{id}/createMenu" />
<grid:toolbar function="search"/>
<grid:toolbar function="reset"/>
</grid:grid>
[2].TREEGRID列表
<grid:grid id="menuGridId" async="true" treeGrid="true" expandColumn="name" sortname="sort" url="${adminPath}/sys/menu/ajaxTreeList">
<grid:column label="sys.common.key" hidden="true" name="id" />
<grid:column label="sys.menu.name" name="name" query="true" condition="like"/>
<grid:column label="sys.menu.url" name="url" />
<grid:column label="sys.menu.permission" name="permission" />
<grid:column label="sys.menu.isshow" name="isshow" dict="sf"/>
<grid:column label="sys.common.opt" name="opt" formatter="button" width="100"/>
<grid:button groupname="opt" function="delete" />
<grid:toolbar function="create"/>
<grid:toolbar function="update"/>
<grid:toolbar function="delete"/>
<grid:toolbar function="search"/>
<grid:toolbar function="reset"/>
</grid:grid>
[3].表單代碼
<form:form id="userForm" modelAttribute="data" method="post" class="form-horizontal">
<form:hidden path="id"/>
<table class="table table-bordered table-condensed dataTables-example dataTable no-footer">
<tbody>
<tr>
<td class="width-15 active text-right"> <label><font color="red">*</font>用戶名:</label></td>
<td class="width-35" >
<form:input path="username" class="form-control" ajaxurl="${adminPath}/sys/user/validate" validErrorMsg="用戶名重復(fù)" htmlEscape="false" datatype="*" nullmsg="請輸入用戶名!"/>
<label class="Validform_checktip"></label>
</td>
<td class="width-15 active text-right">
<label><font color="red">*</font>姓名:</label>
</td>
<td class="width-35" >
<form:input path="realname" class="form-control " datatype="*" nullmsg="請輸入姓名!" validErrorMsg="用戶名重復(fù)" htmlEscape="false" />
<label class="Validform_checktip"></label>
</td>
</tr>
<tr>
<td class="width-15 active text-right">
<label><font color="red">*</font>郵箱:</label>
</td>
<td class="width-35" >
<form:input path="email" class="form-control" ajaxurl="${adminPath}/sys/user/validate" datatype="e" nullmsg="請輸入郵箱!" htmlEscape="false" />
<label class="Validform_checktip"></label>
</td>
<td class="width-15 active text-right">
<label><font color="red">*</font>聯(lián)系電話:</label>
</td>
<td class="width-35" >
<form:input path="phone" class="form-control" ajaxurl="${adminPath}/sys/user/validate" htmlEscape="false" datatype="m" nullmsg="請輸入用戶名!"/>
<label class="Validform_checktip"></label>
</td>
</tr>
<tr>
<td class="width-15 active text-right">
<label><font color="red">*</font>密碼:</label>
</td>
<td class="width-35" >
<input type="password" value="" name="password" class="form-control" datatype="*6-16" nullmsg="請設(shè)置密碼!" errormsg="密碼范圍在6~16位之間!" />
<label class="Validform_checktip"></label>
</td>
<td class="width-15 active text-right"> <label><font color="red">*</font>確認(rèn)密碼:</label></td>
<td class="width-35" >
<input type="password" value="" name="userpassword2" class="form-control" datatype="*" recheck="password" nullmsg="請再輸入一次密碼!" errormsg="您兩次輸入的賬號密碼不一致!" />
<label class="Validform_checktip"></label>
</td>
</tr>
<tr>
<td class="active"><label class="pull-right"><font color="red">*</font>用戶角色:</label></td>
<td>
<form:checkboxes path="roleIdList" nested="false" items="${allRoles}" itemLabel="name" itemValue="id" htmlEscape="false" cssClass="i-checks required"/>
</td>
</tr>
<tr>
<td class="width-15 active"><label class="pull-right">組織機(jī)構(gòu):</label></td>
<td colspan="3">
<form:treeselect title="請選擇組織機(jī)構(gòu)" path="organizationIds" nested="false" dataUrl="${adminPath}/sys/organization/treeData" labelName="parentname" labelValue="${organizationNames}" multiselect="true" />
</td>
</tr>
</tbody>
</table>
</form:form>