13.1 项目简介及系统结构
人事管理系统是办公信息自动化
建设中最常见的项目,几乎每个OA
系统中都需要人事管理系统。
该项目包含了用户管理
、部门管理
、职位管理
、员工管理
、公告管理
、下载中心
等多个模块,页面使用jQuery
框架完成动态功能(关于jQuery
的知识请参考”疯狂Java
系列”之《疯狂前端开发讲义》).
用户管理、部门管理等模块包含了实际项目开发中常用的增删改查
动作,下载中心包含了Spring MVC
的文件上传
、文件下载
等功能。
13.1.1系统功能介绍
- 用户管理的功能包括:
- 添加用户,用户可以为管理员或者普通用户;
- 查询用户,可以查询所有用户或根据用户名和用户状态进行模糊查询;
- 删除用户;
- 修改用户.
- 部门管理的功能包括:
- 添加部门;
- 査询部门,可以査询所有部门或根据部门名称进行模糊査询;
- 删除部门;
- 修改部门。
- 职位管理的功能包括:
- 添加职位;
- 査询职位,可以査询所有职位或根据职位名称进行模糊査询:
- 删除职位;
- 修改职位。
- 员工管理的功能包括:
- 添加员工;
- 查询员工,可以査询所有员工或根据员工姓名、身份证号、手机号、性别、职位、部门进行模糊查询;
- 删除员工;
- 修改员工。
- 公告管理的功能包括:
- 添加公告;
- 查询公告,可以查询所有公告或根据公告名称、公告内容进行模糊查询;
- 删除公告;
- 修改公告。
- 下载中心的功能包括:
- 上传文件;
- 查询文件,可以查询所有文件或根据文件标题进行模糊査询;预览文件内容;
- 删除文件;
- 下载文件。
所有查询页面统一使用分页处理。
13.1.2 相关技术介绍
本系统主要涉及三个开源框架:MyBatis3
、Spring5
和表现层框架jQuery1.11
。同时还使用了JSP
作为表现层技术。本系统将这4种技术有机地结合在一起,从而构建出一个健壮的Java EE
应用。
1.传统表现层技术:JSP
本系统使用JSP
作为表现层,负责收集用户请求数据以及业务数据的表示。JSP
是最传统也最有效的表现层技术。本系统的JSP
页面是单纯的表现层,所有的JSP
页面不再使用Java
脚本。结合EL
表达式和JSTL
标签库,JSP
可完成全部的表现层功能,如数据收集、数据展现。
2.MVC框架
本系统使用Spring MVC
作为MVC
框架。Spring MVC
是一个设计优良的MVC
框架,大有取代Struts2
之势。本应用的所有用户请求,包括系统的超链接和表单提交等,都不再直接发送到表现层JSP
页面,而是必须发送给Spring MVC
的Controller
,Spring MVC
控制所有请求的处理和转发。
通过Controller
拦截所有请求有个好处:将所有的JSP
页面放入WEB-INF/
路径下,可以避免用户直接访问JSP
页面,从而提高系统的安全性.
本应用使用基于Spring MVC
拦截器的权限控制,应用中控制器没有进行权限检査,但每个控制器都需要检査调用者是否有足够的访问权限,这种通用操作正是Spring MVC
拦截器的优势所在。
3. Spring框架的作用
Spring
框架是系统的核心部分,Spring
提供的IoC
容器是业务逻辑组件和DAO
组件的工,它负责生成并管理这些实例.
借助于Spring
的依赖注入,各组件以松耦合的方式组合在一起,组件与组件之间的依赖正是通过Spring
的依赖注入管理的。其Service
组件和DAO
对象都采用面向接口编程的方式,从而降低了系统重构的成本,极好地提高了系统的可维护性、可扩展性。
应用事务采用Spring
的声明式事务框架。通过声明式事务,无须将事务策略以硬编码的方式与代码耦合在一起,而是放在配置文件中声明,使业务逻辑组件可以更加专注于业务的实现,从而简化开发。同时,声明式事务降低了不同事务策略的切换代价.
4. My Batis的作用
MyBatis
的SQL Mapping
功能简化了数据库的访问,并在JDBC
层提供了更好的封装.MyBatis
可以优雅及灵活的方式操作数据库,由此开发者可以更灵活地编写SQL
语句,满足更好的性能需求,为底层DAO
对象的实现提供支持。
13.1.3 系统结构
本系统采用严格的Java EE
应用结构,主要有如下几个分层:
- 表现层。由
JSP
页面组成。 MVC
层。使用Spring MVC
技术。- 业务逻辑层。主要由
Spring Ioc
容器管理的业务逻辑组件组成。 DAO
层。由6个DAO
组件组成。- 领域对象层。由6个
Domain Object
对象组成. - 数据库服务层。使用
MySQL
数据库存储持久化数据
本应用中的领域对象实际上只是一些简单的Java Bean
类,并未提供任何业务逻辑方法,所有的业务逻辑方法都由系统的业务逻辑组件来提供。这种模式简单、直接,系统分层清晰,比较适用于实际项目开发。
13.1.4 系统的功能模块
本系统可以大致分为6个模块:用户管理
、部门管理
、职位管理
、员工管理
、公告管理
和文件下载
,其主要业务逻辑通过HrmService
业务逻辑组件实现,因此可以使用这个业务逻辑组件来封装DAO
组件。
提示
通常建议按细粒度的模块来设计Service
组件,让业务逻辑组件作为DAO
组件的门面,这符合门面模式
的设计。同时让DAO
组件负责系统持久化逻辑,可以将系统在持久化技术这个维度上的变化独立出去,而业务逻辑组件负责业务逻辑这个维度的改变.
系统以业务逻辑组件作为DAO
组件的门面,封装这些DAO
组件,业务逻辑组件底层依赖于这些DAO
组件,向上实现系统的业务逻辑功能.
本系统主要有如下6个DAO
对象:
UserDao
。提供对user_inf
表的基本操作。DeptDao
。提供对dept_inf
表的基本操作JobDao
。提供对job_inf
表的基本操作。EmployeeDao
。提供对employee_inf
表的基本操作。NoticeDao
。提供对notice_inf
表的基本操作。DocumentDao
。提供对document_inf
表的基本操作。
本系统还提供一个业务逻辑组件:
HrmService
。提供所有的业务逻辑功能的实现。
原文链接: 13.1 项目简介及系统结构