OA办公系统(一)
- 一、项目介绍
- 项目功能:
- 数据表:
- 二、 环境搭建
- 第一步:创建项目添加依赖
- 第二步 :添加相关配置
- 1. MyBatis
- 2. Spring
- 3. SpringMVC
- 4. 其他资源
- 第三步: 添加页面
- 第四步:划分项目模块
- 第五步:测试运行
- 三、 功能开发
- 第一步:DAO开发
- 第二步:Service层代码
- 第三步:Controller层代码
- 1. 注销登录
- 2. 客户信息管理(单表的增删改查)
- 1)添加客户信息
- 2)首页显示全部客户信息(分页)
- 3)Ajax请求详解
- 4)查看详情功能
- 5)编辑功能实现 编辑功能的实现
- 6)搜索功能实现 Dao层
- 7)批量删除
一、项目介绍
OA,全称Office Automation,指的是办公自动化
企业:泛微、金蝶软件、浪潮…
ERP,Enterprise Resource Planning,企业资源计划
MIS:企业的信息管理系统
浪潮云ERP
项目功能:
数据表:
Analysis:需求表,项目管理----需求管理
Archives:档案表,档案信息
Attachment:附件表,项目管理----附件管理----需求文档、开发文档…
Baoxiao:报销表
Baoxiaoreply:报销审批
Customer:客户信息表
Datacollect:对标
Dept:部门
Email:邮件
emp_role:中间表
employee:员工表
evaluate:评论
expendituretype:报销支出类型
forumpost:帖子
function:项目功能表
indexvalue:对标信息
level:员工等级
module:项目模块
msg:消息表
notice:通知
position:职级
project:项目表
role:角色表
role_sources:角色资源
sources:资源表
task:任务
二、 环境搭建
第一步:创建项目添加依赖
<dependencies>
<!--引入pageHelper分页插件 PageInfo -->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>5.0.0</version>
</dependency>
<!-- springwebmvc -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>4.3.7.RELEASE</version>
</dependency>
<!-- 返回json字符串的支持 -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.8.8</version>
</dependency>
<!-- Spring 整合Jdbc -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>4.3.7.RELEASE</version>
</dependency>
<!--Spring-test spring测试包 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>4.3.7.RELEASE</version>
</dependency>
<!-- Spring面向切面编程 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
<version>4.3.7.RELEASE</version>
</dependency>
<!--MyBatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.2</version>
</dependency>
<!-- MyBatis整合Spring的适配包 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.3.1</version>
</dependency>
<!-- 阿里巴巴 数据源 druid -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.10</version>
</dependency>
<!-- mysql驱动包 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.11</version>
</dependency>
<!-- jstl jsp标签库包 -->
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<!-- servlet api包 -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.0.1</version>
<scope>provided</scope>
</dependency>
<!-- junit 测试包 -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
<!-- 日志包 -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.16</version>
</dependency>
<!-- excel 批量的导入导出 -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.9</version>
</dependency>
<!-- 处理文件上传 -->
<!-- https://mvnrepository.com/artifact/commons-fileupload/commons-fileupload -->
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/commons-io/commons-io -->
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.4</version>
</dependency>
<!-- https://mvnrepository.com/artifact/javax.mail/mail -->
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.4.6</version>
</dependency>
<!-- 定时任务 -->
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.2.1</version>
</dependency>
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz-jobs</artifactId>
<version>2.2.1</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>4.3.7.RELEASE</version>
</dependency>
<!-- redis 的工具包 -->
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.9.0</version>
</dependency>
<!-- 阿里巴巴的fastjson json和java 快速转换工具包-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.47</version>
</dependency>
</dependencies>
第二步 :添加相关配置
1. MyBatis
核心配置文件
映射文件:位置在resources目录下,编译时可以直接加载
2. Spring
Spring核心容器拆分:
beans_core.xml:整合Mybaitis等基础配置
beans_redis.xml:整合Redis配置
beans_transaction.xml:事务管理配置
3. SpringMVC
springmvc.xml:核心配置文件
web.xml:项目的启动配置
4. 其他资源
第三步: 添加页面
注意:使用Idea添加大量资源时,不建议直接在工具窗口下添加,避免界面卡顿的情况发生,建议在工作空间添加
第四步:划分项目模块
第五步:测试运行
错误:类型没有找到
错误原因:
web模块手动添加的,打包过程中,只打包了web模块下的资源,并没有添加依赖,
项目运行时,web.xml在读取当前类型时找不到相关jar包,需要手动添加相关Jar包解决方案:添加项目jar包
三、 功能开发
第一步:DAO开发
接口:定义数据库操作方法
注意:多参数处理问题
映射文件:数据操作方法的具体实现
第二步:Service层代码
接口:定义service层方法
实现类:方法的具体实现
注意:实现类上需要添加注解,涉及到的Mpper接口对象也需要使用注解初始化
第三步:Controller层代码
定义Controller类,类中添加登陆方法
注意: @Controller注解不要忘记添加
类上使用@RequestMapping注解,目的是过滤请求
方法上不要忘记使用@RequestMapping指定处理请求的名称
请求处理的请求名称需要参考前端页面
接收参数时接收的是表单中name属性值
1. 注销登录
Controller添加退出主页面方法:
注意: 退出登录页面,主页面中
主页面分成了三部分:top.jsp、menu.jsp、main.jsp 退出请求top.jsp中产生的
2. 客户信息管理(单表的增删改查)
1)添加客户信息
涉及到的表
准备实体类
DAO层代码
接口:
映射文件:
Service层代码
接口:
实现类:
注意:注解不要忘记
Controller层代码
请求地址确定: 、
确定请求产生的页面
在…add.jsp页面中点击保存,调用了js方法
查看saveinfo方法,在此方法中,将addcus表单提交
表单提交产生请求
注意:表单中的name属性值要与Controller接收对象属性名称保持一致
2)首页显示全部客户信息(分页)
DAO层代码
接口:
映射文件:
Service层代码
接口:
实现类:
Controller层代码(分页功能开启)
3)Ajax请求详解
ajax
Type:请求类型
url:请求地址(请求名称)
data:请求参数
dataType:返回数据类型
success:请求成功后的回调(执行的方法)
rs:请求成功后返回的结果(PageInfo)
4)查看详情功能
Controller层:
Service层: 接口:
实现类:
Dao层: 接口:
映射文件:
5)编辑功能实现 编辑功能的实现
,首先要实现查看详情的功能,编辑功能需要预览数据
Controller层代码:Service层代码:
接口:实现类:
Dao层代码:
\接口:映射文件:
6)搜索功能实现 Dao层
接口:
Vo对象携带了额外传入的查询条件 映射文件:
Service层 接口:
实现类:
Controller层代码:
注意:分页+排序需要单独在Java代码中处理,处理的方式为开启分页时单独指定排序 的字段,导入Jar包也有自己的规范分页插件的版本要求5.1以上
7)批量删除
Controller层(直接与前端页面交互) 交互逻辑: 前端页面产生请求过程,请求名称
Controller处理请求时,需不需要前端传递参数 前端页面出递过来的参数如何接收,需不需要处理
请求处理后的结果是什么,需不需要返回数据,需不需要跳转页面 处理请求的过程中调用业务层的方法是什么
Service层代码(复杂业务逻辑建议放在Service中处理) 接口
实现类
Dao层代码(纯数据操作,接口代理模式开发) 接口
映射文件:foreach标签的使用,回顾动态SQL