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

项目功能:

大型oa项目架构图 oa办公系统项目_大型oa项目架构图

数据表:

大型oa项目架构图 oa办公系统项目_java_02


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>

第二步 :添加相关配置

大型oa项目架构图 oa办公系统项目_spring_03

1. MyBatis

核心配置文件
映射文件:位置在resources目录下,编译时可以直接加载

2. Spring

Spring核心容器拆分:
beans_core.xml:整合Mybaitis等基础配置
beans_redis.xml:整合Redis配置
beans_transaction.xml:事务管理配置

3. SpringMVC

springmvc.xml:核心配置文件
web.xml:项目的启动配置

4. 其他资源

大型oa项目架构图 oa办公系统项目_映射文件_04

第三步: 添加页面

注意:使用Idea添加大量资源时,不建议直接在工具窗口下添加,避免界面卡顿的情况发生,建议在工作空间添加

第四步:划分项目模块

大型oa项目架构图 oa办公系统项目_大型oa项目架构图_05

第五步:测试运行

错误:类型没有找到

大型oa项目架构图 oa办公系统项目_java_06


大型oa项目架构图 oa办公系统项目_映射文件_07

错误原因:
web模块手动添加的,打包过程中,只打包了web模块下的资源,并没有添加依赖,
项目运行时,web.xml在读取当前类型时找不到相关jar包,需要手动添加相关Jar包

解决方案:添加项目jar包

大型oa项目架构图 oa办公系统项目_映射文件_08


大型oa项目架构图 oa办公系统项目_mybatis_09

三、 功能开发

第一步:DAO开发

接口:定义数据库操作方法

注意:多参数处理问题

大型oa项目架构图 oa办公系统项目_大型oa项目架构图_10

映射文件:数据操作方法的具体实现

大型oa项目架构图 oa办公系统项目_大型oa项目架构图_11

第二步:Service层代码

接口:定义service层方法

大型oa项目架构图 oa办公系统项目_spring_12

实现类:方法的具体实现

大型oa项目架构图 oa办公系统项目_大型oa项目架构图_13


注意:实现类上需要添加注解,涉及到的Mpper接口对象也需要使用注解初始化

第三步:Controller层代码

定义Controller类,类中添加登陆方法

大型oa项目架构图 oa办公系统项目_java_14


注意: @Controller注解不要忘记添加


类上使用@RequestMapping注解,目的是过滤请求


方法上不要忘记使用@RequestMapping指定处理请求的名称

请求处理的请求名称需要参考前端页面

大型oa项目架构图 oa办公系统项目_大型oa项目架构图_15


接收参数时接收的是表单中name属性值

1. 注销登录

Controller添加退出主页面方法:

大型oa项目架构图 oa办公系统项目_java_16


注意: 退出登录页面,主页面中


主页面分成了三部分:top.jsp、menu.jsp、main.jsp 退出请求top.jsp中产生的

2. 客户信息管理(单表的增删改查)

1)添加客户信息

涉及到的表

大型oa项目架构图 oa办公系统项目_mybatis_17

准备实体类

大型oa项目架构图 oa办公系统项目_映射文件_18

DAO层代码
接口:

大型oa项目架构图 oa办公系统项目_spring_19


映射文件:


大型oa项目架构图 oa办公系统项目_大型oa项目架构图_20

Service层代码
接口:

大型oa项目架构图 oa办公系统项目_spring_21


实现类:


大型oa项目架构图 oa办公系统项目_映射文件_22


注意:注解不要忘记

Controller层代码

大型oa项目架构图 oa办公系统项目_java_23


请求地址确定: 、


确定请求产生的页面


大型oa项目架构图 oa办公系统项目_mybatis_24


在…add.jsp页面中点击保存,调用了js方法


大型oa项目架构图 oa办公系统项目_mybatis_25


查看saveinfo方法,在此方法中,将addcus表单提交


大型oa项目架构图 oa办公系统项目_spring_26


表单提交产生请求


大型oa项目架构图 oa办公系统项目_spring_27

注意:表单中的name属性值要与Controller接收对象属性名称保持一致

大型oa项目架构图 oa办公系统项目_映射文件_28

2)首页显示全部客户信息(分页)

DAO层代码
接口:

大型oa项目架构图 oa办公系统项目_java_29


映射文件:


大型oa项目架构图 oa办公系统项目_映射文件_30

Service层代码
接口:

大型oa项目架构图 oa办公系统项目_大型oa项目架构图_31


实现类:


大型oa项目架构图 oa办公系统项目_映射文件_32

Controller层代码(分页功能开启)

大型oa项目架构图 oa办公系统项目_大型oa项目架构图_33

3)Ajax请求详解

ajax

大型oa项目架构图 oa办公系统项目_mybatis_34


Type:请求类型


url:请求地址(请求名称)


data:请求参数


dataType:返回数据类型


success:请求成功后的回调(执行的方法)


rs:请求成功后返回的结果(PageInfo)

4)查看详情功能

Controller层:

大型oa项目架构图 oa办公系统项目_java_35

Service层: 接口:

大型oa项目架构图 oa办公系统项目_大型oa项目架构图_36

实现类:

大型oa项目架构图 oa办公系统项目_java_37

Dao层: 接口:

大型oa项目架构图 oa办公系统项目_大型oa项目架构图_38


映射文件:


大型oa项目架构图 oa办公系统项目_mybatis_39

5)编辑功能实现 编辑功能的实现

,首先要实现查看详情的功能,编辑功能需要预览数据
Controller层代码:

大型oa项目架构图 oa办公系统项目_java_40

Service层代码:
接口:

大型oa项目架构图 oa办公系统项目_mybatis_41

实现类:

大型oa项目架构图 oa办公系统项目_mybatis_42

Dao层代码:
\接口:

大型oa项目架构图 oa办公系统项目_spring_43

映射文件:

大型oa项目架构图 oa办公系统项目_java_44

6)搜索功能实现 Dao层

接口:

大型oa项目架构图 oa办公系统项目_java_45

Vo对象携带了额外传入的查询条件 映射文件:

大型oa项目架构图 oa办公系统项目_mybatis_46

Service层 接口:

大型oa项目架构图 oa办公系统项目_mybatis_47

实现类:

大型oa项目架构图 oa办公系统项目_大型oa项目架构图_48

Controller层代码:
注意:分页+排序需要单独在Java代码中处理,处理的方式为开启分页时单独指定排序 的字段,导入Jar包也有自己的规范

大型oa项目架构图 oa办公系统项目_mybatis_49

分页插件的版本要求5.1以上

大型oa项目架构图 oa办公系统项目_大型oa项目架构图_50

7)批量删除

Controller层(直接与前端页面交互) 交互逻辑: 前端页面产生请求过程,请求名称
Controller处理请求时,需不需要前端传递参数 前端页面出递过来的参数如何接收,需不需要处理
请求处理后的结果是什么,需不需要返回数据,需不需要跳转页面 处理请求的过程中调用业务层的方法是什么

大型oa项目架构图 oa办公系统项目_映射文件_51

Service层代码(复杂业务逻辑建议放在Service中处理) 接口

大型oa项目架构图 oa办公系统项目_大型oa项目架构图_52

实现类

大型oa项目架构图 oa办公系统项目_spring_53

Dao层代码(纯数据操作,接口代理模式开发) 接口

大型oa项目架构图 oa办公系统项目_大型oa项目架构图_54

映射文件:foreach标签的使用,回顾动态SQL

大型oa项目架构图 oa办公系统项目_java_55