Skip to content

Latest commit

 

History

History
218 lines (207 loc) · 9.44 KB

README.md

File metadata and controls

218 lines (207 loc) · 9.44 KB

pwssm

项目介绍

本项目是一个通过maven工具管理,基于 spring mvc框架,前后台完全分离的SSM典型实现,特点如下:

  • 实现了基本的权限管理、日志管理和smartbi报表结合
  • 基于 spring mvc 搭建整个平台,通过json传输前后台数据
  • 通过独立的接口设计,实现前后端完全分离
  • 通过nodejs,提供前端server,结合mock工具实现ajax拦截和数据模拟,得以实现前端完全脱离后台,实现完整展示功能,以适应快速迭代的敏捷开发和频繁的前端需求变化
  • 通过maven工具管理项目,实现开发自测发布一体化管理
  • ORM使用mybatis实现,灵活的实现持久化处理
  • 自动生成代码功能,便于快速实现功能
  • 使用Druid连接池,进行运行监控
  • 统一的异常处理管理,实现异常处理代码解耦
  • 完备的文档说明和问题帮助说明

使用说明

本项目通过maven管理项目,提供必备的maven命令如下:

  • 下载依赖
$ mvn install
  • 打包
$ mvn package
  • 清理target目录
$ mvn clean

本项目提供mysql版本数据库脚本,详见doc目录,运行项目前请配置数据库

如果使用eclipse开发,通过tomcat部署应用后,手动打开url地址 http://localhost:8080/view/login.html 用户名admin 密码admin 这里需要去除server部署的项目名

目录结构说明

├─doc
│  └─pw.sql
├─src
│  ├─main
│  │   ├─java # java源码
│  │   ├─resources # 配置文件目录
│  │   │      ├─mybatis
│  │   │      │    ├─mapper # mapper映射
│  │   │      │    └─mybatis-config.xml # mybatis配置
│  │   │      ├─spring
│  │   │      │    ├─spring-config.xml # spring配置
│  │   │      │    ├─spring-mybatis.xml # spring mybatis配置
│  │   │      │    └─springmvc-servlet.xml # springmvc配置
│  │   │      ├─templates.generater # 自动生成代码velocity模板目录
│  │   │      ├─database.properties # 数据库配置
│  │   │      ├─generator.properties # 自动生成代码属性配置
│  │   │      ├─log4j.properties # log4j配置
│  │   │      └─public_system.properties # 公共系统属性配置
│  │   └─webapp
│  │         ├─frontframe
│  │         │    ├─css # 样式
│  │         │    ├─fonts # 字体
│  │         │    ├─img # 图片
│  │         │    ├─js # 非npm管理的第三方js和部分公共js
│  │         │    ├─mock # 公共模块mock
│  │         │    ├─modules # 业务逻辑代码模块
│  │         │    ├─node_modules # 利用npm管理的所有包及其依赖
│  │         │    ├─app.js # server入口
│  │         │    ├─examples.js
│  │         │    ├─favicon.ico
│  │         │    ├─index.html # 主页面
│  │         │    ├─login.html # 登录页面
│  │         │    ├─package.json # 项目包
│  │         │    └─README.md # 文档说明
│  │         └─WEB-INF
│  │              ├─lib # jar包
│  │              └─web.xml # web项目入口
│  └─test
│      └─java # 自测源码
├─target # 输出目录
├─pom.xml # maven配置文件
└─README.md # 文档说明
  • 其中modules 业务逻辑代码模块中每一个模块由可以分为mock、page.js文件和html展示页面

界面

登录

主页

用户管理

运行监控

生成代码

问答

工具

  • 如何去除在eclipse部署项目时,去除部署路径中的项目名
    配置server属性-Modules-Web Module 中的path为/
  • 本地包如何添加?
    以下是一个范例:
<dependency>
    <groupId>ojdbc</groupId>
    <artifactId>ojdbc</artifactId>
    <version>14</version>
    <scope>system</scope>
    <systemPath>${project.basedir}/src/main/webapp/WEB-INF/lib/ojdbc14.jar</systemPath>
</dependency>
  • oracle如何引入
    由于Oracle授权问题,Maven3不提供Oracle JDBC driver,为了在Maven项目中应用Oracle JDBC driver,必须手动添加,可以考虑把oralce驱动包当成本地包引入,也可以考虑手动添加到本地仓库,方法参考 http://www.cnblogs.com/leiOOlei/p/3380568.html
  • 本地包如何正确打入war包
    引入的本地包放在 WEB-INF/lib下
  • nodejs需要安装嘛?
    除了frontcode目录下的纯前端代码,单独运行时需要nodejs以外,其他项目在不单独运行前端代码时是不需要nodejs环境的,不安装nodejs也是可以运行的
  • smartbi报表部署注意事项
    阅读doc目录下的 《报表服务器部署文档.html》

前端

  • 前端代码如何单独启动server并展示 ?
    执行命令后,如果未打开浏览器页面,则手动打开url地址 http://localhost:3000/login.html
$ npm run dev
  • 单独运行前端,业务数据从哪里来?
    mockData.js用来拦截ajax请求,业务数据写在本地json文件中
  • 每一个页面的css和js,如何管理?
    css和js都遵循一个标准,先基础的再第三方的后自定义的
  • 登录页面有什么特殊逻辑处理?
    登录页面使用sessionStorage缓存了用户信息
  • 菜单树如何加载?
    main.js菜单实现,菜单数据只需要是固定格式的json对象即可
  • 每个页面都引入mock进行拦截,如果跟后台进行结合时,如何避免混淆?
    在URL.js中定义了一个全局变量mockFlag,如果mockFLag为false,则前台mock不会拦截使用后台springmvc拦截
  • 前后台分离如何实现的?
    在URL.js中有唯一的api接口,前后台都遵照交互的接口,将前后台完全解耦,实现分离
  • form表单常用控件有哪些?
    codedemo/form/form.html 有常用控件demo
  • table数据页面如何实现的?
    主要使用bootstrap table,在codedemo/datatables中有另一种dataTables表单实现,支持动态列
  • 前台树结构如何展示?
    使用jsTree控件
  • 前台的日期如何处理?
    使用laydate控件
  • form表单校验如何处理?
    使用jquery.validate控件
  • 弹出框有没有统一控件?
    使用bootstrap-dialog
  • 如何把一个表单数据从前台传给后台?
    通过ajax请求,其中jquery.values.js是用来从一个form表单中获取json,用于传输的
  • 如何解决前端的代码冗余?
    前端的公共代码位于common.js中,通过提取公共代码减少冗余
  • datagrid显示列如何隐藏?
    $("#pw_table").bootstrapTable('hideColumn', 'id');
  • datagrid单元格如何格式化?
 <th data-field="ifValid" data-formatter="ifValidFormatter">是否有效</th>

ifValidFormatter方法位于common.js中

  • 如果嵌入一个页面如何处理?
    通过iframe实现,report/demo/report.html中实现了嵌入一个报表页面
  • 报表工具smartbi在前端如何进行传参?
var params = [];
var param = new Object();
param.name = 'station_id';
param.value = temp.station_id;
param.displayValue = temp.station_id;
params.push(param);
var paramsInfo = toJSONString(params);

name用来绑定报表组件id,value是真实值,displayValue用来页面中获取显示值 后台

  • 整体主要框架是什么?
    spring3+springmvc+mybatis  - 数据库连接池使用的是哪个?   druid  - web.xml配置哪些内容?  
  • spring-config配置哪些内容?
  • smartbi后台如何嵌入?
    主要是通过smartbiSessionMonitorServlet,还需要使用一个代理程序
  • spring mvc 如何实现json数据交互?
    参考springmvc-servet.xml配置
  • 权限如何拦截?
<mvc:interceptors>
    <mvc:interceptor>
        <mvc:mapping path="/**"/>
        <mvc:exclude-mapping path="/view/**"/>
        <bean class="com.springapp.mvc.AuthorizationInterceptor"/>
    </mvc:interceptor>
</mvc:interceptors>
  • sprng mvc resources 如何配置?
<mvc:resources mapping="/view/**" location="/frontframe/"/>

url以/view开始的话,会读取资源目录frontframe下的代码

  • 拦截器方式配置事务?
    参考spring-datasource.xml配置
  • database property配置
  • DataSource配置
  • sessionfactory配置
  • 日志的配置
  • 常量管理
    ApplicationGlobalNames.java和common/constansts目录
  • 表设计和表关系
    用户,角色,机构,权限(菜单)
  • smartbi linux如何实现部署?
    阅读doc目录下的 《报表服务器部署文档.html》
  • 如何输出日志,如何记录日志到到日志表?
    SyncLogService.java提供统一方法
  • 添加一个菜单或则按钮注意什么?
    首先注意权限之间的上下级关系,其次注意按钮位置会影响按钮显隐控制,按钮位置一般格式为
表单formid.按钮id