JeeWeb是一款基于SpringBoot 2+Spring+Mybatis+Hibernate的敏捷开拓系统;它是一款具有代码生成功能的智能快速开拓平台;因此Spring Framework为核心容器,Spring MVC为模型视图掌握器,Hibernate为数据访问层, Apache Shiro为权限授权层,Ehcahe对常用数据进行缓存,Disruptor作为并发框架,Bootstrap作为前端框架的精良 开源 系统。
JeeWeb是一款 全开源开拓平台 ,特殊 代码天生器模块也采取开源模式 ,各位开拓者可以根据自己的须要改造出更加适宜自己的代码天生器,不管是做项目、学习、接私活它都将是你的最佳拍档;
JeeWeb紧张定位于企业快速开拓平台培植,已内置很多精良的根本功能和高效的 代码天生 工具,包括:系统权限组件、数据权限组件、数据字典组件、核心工具组件、视图操作组件、代码天生、 UI模版标签 库等。前端界面风格采取了却构大略、性能优秀、页面都雅大气的Twitter Bootstrap页面展示框架。采取分层设计、提交数据安全编码、密码加密、访问验证、数据权限验证。利用Maven做项目管理,提高项目的易开拓性、扩展性。
目前功能模块代码天生器、权限框架、数据字典、数据缓存、并发框架、数据监控、操持任务、多数据源管理、附件管理、类似mybatis动态SQL、UI模板标签、短信发送、邮件发送、统计功能等功能。
JeeWeb的开拓办法采取( 代码天生器快速设计天生代码->手工完善逻辑->丰富模板标签快速前端开拓 ),可以快速帮忙java开拓职员办理60%的重复事情,让开发职员更多关注业务逻辑的实现,框架利用前端模板标签,解放JAVA开拓职员的开拓压力,提高开拓效率,为企业节省项目研发本钱,减少开拓周期。
后台框架演示(支持两种前端样式自由切换)
论坛演示
前后端分离演示
JeeWeb 技能特点
JeeWeb利用目前流程的WEB开拓架构技能,如 SpringBoot,Mybatis, Hibernate,Apache Shiro, Disruptor , ehcache, Jquery ,BootStrap等等,支持多种数据库MySQL, Oracle, sqlserver等。 分层设计:利用分层设计,分为dao,service,Controller,view层,层次清楚,低耦合,高内聚。
安全考虑:严格遵照了web安全的规范,前后台双重验证,参数编码传输,密码md5加密存储,shiro权限验证,从根本上避免了SQL注入,XSS攻击,CSRF攻击等常见的web攻击手段。
JeeWeb 功能特点
SpringBoot+Spring+Mybatis+Hibernate+Shiro+ Ehcache+Disruptor+Jquery + Boostrap + Ztree等根本前后端架构架构采取面向声明的开拓模式, 基于泛型编写极少代码即可实现繁芜的数据展示、数据编辑、表单处理等功能,在不该用代码天生器的情形下,也只须要很少的代码就能实现根本的CURD操作,再合营在线开拓与代码天生器的利用,更加加快了开拓的进度,将J2EE的开拓效率本钱提高,可以将代码减少60%以上。在线开拓(通过在线配置实现一个表模型的增编削查功能,无需一行代码,支持用户自定义表单布局)代码天生器,支持多种数据模型,根据表天生对应的Entity,Service,Dao,Controller,JSP等,增编削查功能天生直策应用UI标签开拓库,针对前端UI进行标准封装表,页面统一采取UI标签实现功能:数据datagrid,treegrid,FileInput,Editor,GridSelect等,实现JSP页面零JS,开拓掩护简洁高效查询过滤器:只需前端配置,后台动态拼SQL追加查询条件;支持多种匹配办法(全匹配/模糊查询/包含查询/不匹配查询)移动平台支持,对Bootstrap(兼容Html5)进行标准封装灵巧的权限掌握,可掌握到页面或按钮,知足绝大部分的权限需求,优化权限表明方便权限配置完善的XSS戒备及脚本过滤,彻底杜绝XSS攻击支持分布式支配,session存储在redis中友好的代码构造及注释,便于阅读及二次开拓引入quartz定时任务,可动态完成任务的添加、修正、删除、停息、规复及日志查看等功能引入swagger文档支持,方便编写API接口文档国际化(支持多措辞,国际化的封装为多措辞做了便捷支持)多数据源(在线配置数据源,数据源事情类封装)数据权限:整合Shiro权限操持任务掌握(在线配置操持任务、方便操持任务的韶光调度方案)邮件发送(配置邮件模版、邮件帐号的在线配置、邮件异步发送、邮件发送日志功能统计)短信发送(配置短信模版、短信帐号的在线配置、短信异步发送、短信发送日志功能统计、支持短信发送平台动态切换)多种首页风格切换,支持自定义首页风格。(Inspinia风格|ACE风格)数据统计报表:丰富的报表统计功能支持多种浏览器: Google, 火狐, IE,360 等支持数据库: Mysql,Oracle10g,SqlServer等根本权限: 用户,角色,菜单权限Web容器测试通过的有Jetty和Tomcat,Weblogic哀求JDK1.8+技能选型1、后端
核心框架:Spring boot2.0、Spring Framework安全框架:Apache Shiro做事端验证:Hibernate Validator模板标签:Beetl任务调度:Quartz持久层框架:Hibernate数据库连接池:Alibaba Druid缓存框架:Redis、Ehcache并发框架:Disruptor日志管理:SLF4J、Log4j工具类:Apache Commons、Jackson、Xstream、2、前端
JS框架:jQuery。CSS框架:Twitter Bootstrap客户端验证:Validform。富文本在线编辑:markdown、simditor、Summernote、CodeMirror自由切换文件上传工具:Bootstrap fileinput数据表格:jqGrid对话框:layer树构造控件:jQuery zTree日期控件: datepicker代码高亮: syntaxhighlighter大略利用解释
导入jeeweb目录下的,详细模块sql/mysql.sql文件到mysql数据库导入项目到Idea,(项目目前利用分模块开拓,我们建议是用IDEA开拓).修正数据库配置文件application.yml中的账号密码.启动项目,管理员账号admin/密码123456平台目录构造解释
jeeweb├─jeeweb-common 公共模块│ ├─jeeweb-common-base 公用根本模块│ │ │ ├─jeeweb-common-email 邮件根本模块│ │ │ ├─jeeweb-common-hibernatemvc hibernate公用模块│ │ │ ├─jeeweb-common-mybatismvc mybatis公用模块│ │ │ ├─jeeweb-common-oss 数据存储公用模块│ │ │ ├─jeeweb-common-quartz quartz公用模块│ │ │ ├─jeeweb-common-query 查询封装模块│ │ │ ├─jeeweb-common-security 安全公用模块│ │ │ ├─jeeweb-common-sms 短信公用模块│ │ │ └─jeeweb-common-utils 公用工具模块│ ├─jeeweb-ui UI模块│ ├─jeeweb-beetl-tag 基于beetl的类似spring form的模板标签│ │ │ ├─jeeweb-ui-static 公用静态资源模块│ │ │ └─jeeweb-ui-tag 基于静态资源模块的标签│ ├─jeeweb-web 业务模块│ ├─jeeweb-admin 后台案例模块│ │ │ ├─jeeweb-bbs Jeeweb官方论坛代码模块│ │ │ ├─jeeweb-vue 前后端分离后端模块│ │ │ └─jeeweb-generator 代码天生器模块│
代码示例
[1].GRID列表
<#grid:grid id=\"大众onlineGrid\公众 datatype=\"大众local\公众 datas=\公众${onlineSessionList}\"大众 sortname=\公众startTimestamp\"大众 sortorder=\"大众desc\"大众> <#grid:column label=\公众sys.common.key\公众 hidden=\"大众true\"大众 name=\"大众id\公众 width=\"大众100\公众/> <#grid:column label=\"大众用户\"大众 name=\"大众username\"大众 /> <#grid:column label=\"大众用户主机IP\"大众 name=\"大众host\公众 /> <#grid:column label=\"大众系统主机IP\"大众 name=\"大众systemHost\"大众 /> <#grid:column label=\"大众登录韶光\公众 name=\公众startTimestamp\"大众 width=\"大众140\"大众 queryMode=\公众date\公众 condition=\"大众between\公众 /> <#grid:column label=\"大众末了访问韶光\"大众 name=\"大众lastAccessTime\公众 width=\"大众140\"大众/> <#grid:column label=\"大众状态\"大众 name=\公众status\"大众 dict=\公众onlinestatus\公众 /> <#grid:column label=\公众User-Agent\"大众 name=\"大众userAgent\公众 /> <#grid:column label=\"大众用户会话ID\"大众 name=\"大众id\公众 /> <#grid:toolbar title=\公众逼迫退出\公众 btnclass=\"大众btn-danger\公众 icon=\"大众fa-trash-o\公众 function=\"大众toolbarSelectConfirm\公众 url=\"大众${adminPath}/sys/online/forceLogout\"大众 tipMsg=\"大众您确定要逼迫退出这些信息么,请谨慎操作!
\"大众/></#grid:grid>
[2].TREEGRID列表
<#grid:grid id=\"大众organizationGrid\"大众 async=\"大众true\公众 treeGrid=\"大众true\公众 expandColumn=\"大众name\公众 url=\"大众${adminPath}/sys/organization/ajaxTreeList\公众><#grid:column label=\公众sys.common.key\公众 hidden=\公众true\"大众 name=\"大众id\"大众 width=\"大众100\公众/><#grid:column label=\"大众sys.organization.name\"大众 name=\"大众name\"大众 query=\公众true\公众 condition=\"大众like\公众 /><#grid:column label=\公众sys.organization.remarks\公众 name=\"大众remarks\"大众 /><#grid:column label=\"大众sys.common.opt\公众 name=\公众opt\"大众 formatter=\公众button\"大众 width=\"大众100\公众/><#grid:button groupname=\"大众opt\"大众 function=\"大众delete\"大众 /><#grid:toolbar function=\公众add\"大众/><#grid:toolbar function=\"大众update\"大众/><#grid:toolbar function=\"大众delete\"大众/><#grid:toolbar function=\公众search\"大众/><#grid:toolbar function=\公众reset\公众/></#grid:grid>
[3].表单代码
<% layout('/layouts/form.html', {title: @MessageUtils.getMessage('sys.user.updateuser',''), formId: 'userForm', bodyClass: 'white-bg', libs: 'bootstrap-fileinput'}){ %><#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>用户名:</label></td> <td class=\"大众width-35\"大众>${data.username}</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=\"大众请输入姓名!
\公众 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\"大众 datatype=\"大众e\"大众 nullmsg=\"大众请输入姓名!
\"大众 htmlEscape=\公众false\"大众 /> <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=\"大众phone\公众 class=\"大众form-control\"大众 htmlEscape=\公众false\公众 datatype=\公众m\"大众 nullmsg=\"大众请输入用户名!
\"大众 /> <label class=\公众Validform_checktip\公众></label> </td> </tr> <tr> <td class=\"大众active\"大众> <label class=\"大众pull-right\"大众> <font color=\"大众red\"大众></font>用户角色:</label></td> <td colspan=\"大众3\"大众> <#form:checkboxes path=\公众roleIdList\"大众 nested=\"大众false\公众 items=\"大众${allRoles}\公众 defaultValue=\"大众${roleIdList}\"大众 itemLabel=\"大众name\"大众 itemValue=\"大众id\"大众 htmlEscape=\公众false\"大众 cssClass=\"大众i-checks required\公众 /></td> </tr> <tr> <td class=\"大众width-15 active\"大众> <label class=\"大众pull-right\公众>组织机构:</label></td> <td colspan=\公众3\"大众> <#form:treeselect title=\"大众请选择组织机构\"大众 path=\公众organizationIds\"大众 nested=\"大众false\公众 dataUrl=\"大众${adminPath}/sys/organization/treeData\"大众 chkboxType=\公众\"大众 labelName=\"大众parentname\公众 labelValue=\公众${organizationNames}\"大众 multiselect=\"大众true\公众 /></td> </tr> </tbody> </table></#form:form><% } %>
git地址:https://gitee.com/dataact/jeeweb