458 Star 1.4K Fork 666

JeeWeb敏捷开发平台 / jeeweb

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
Apache-2.0

JeeWeb敏捷开发平台

简介

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>

JSP列表图片

[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>

TREEGRID

[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>
<% } %>

表单

升级说明

  • 更改项目为分模块依赖开发。
  • 剥离代码生成器,代码生成器作为单独项目启动、并升级了一些功能。
  • 更改前端模板引擎为Beetl。使前段渲染更快、更友好的前端设计体验
  • 项目更改为Spring boot2.0,降低开发门槛。
  • 引入swagger用于接口管理。
  • 引入redis SESSION管理,方便集群部署。
  • 升级日志功能、分离为登陆日志以及操作日志。
  • 引入quartz定时任务,可动态完成任务的添加、修改、删除、暂停、恢复及日志查看等功能
  • 更好的开发体验。
Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: You must give any other recipients of the Work or Derivative Works a copy of this License; and You must cause any modified files to carry prominent notices stating that You changed the files; and You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS APPENDIX: How to apply the Apache License to your work To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "{}" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. Copyright 2018 Skyogo Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

简介

JEEWEB是一款基于SpringBoot2.0、MyBatis、Shiro框架等,采用分模块方式开发的,极低门槛,拿来即用的开发平台,支持前后端分离开发、Auth2.0、短信、邮件、OSS、SSO。【QQ群: 570062301(满)、522959928】 展开 收起
Apache-2.0
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
Java
1
https://gitee.com/dataact/jeeweb.git
git@gitee.com:dataact/jeeweb.git
dataact
jeeweb
jeeweb
master

搜索帮助

14c37bed 8189591 565d56ea 8189591