Java毕业设计项目实战篇|Java项目:企业人事系统(java+SpringBoot+Vue+ElementUI+maven+mysql)
源码获取:博客首页 "资源" 里下载!项目介绍
人事管理系统功能包括人事通讯,员工信息,人事考评,奖惩,培训管理,薪资管理,统计分析,和系统管理六大模块,对应人事工作基本流程:新员工入职档案建立,调动,辞职,员工信息的查询及工资管理等方面.系统管理可以根据不同的角色分配菜单权限设置,不同的用户授予不同角色,对人事结构,单位结构进行整体调配设置.在线聊天可以实现操作员之间讯息的及时通讯.
项目基于MVVM的前后端分离开发模式进行开发.MVVM即模型(Model)-视图(View)-视图模型(View Model),实现了数据视图的双向绑定.相对于MVC模式和MVP来说,MVVM是一个比较新的开发架构,它是一种将MVP模式与WPF相结合应用方式发展演变而成的新型开发架.
前后端分离是指将前端和后端从之前的全部由后端负责中分离开来,不再共用一个Server,前端作为一个独立Serve存在.前后端通过接口使用HTTP协议交互,本项目使用vu实体属性outer做前端路由处理.页面跳转不在由后端处理,前后端只是数据的交互.前后端分离的好处在于降低了前后端的耦合性.当面对不同的硬件场景时,需要构建不同的界面,前后端分离之后,只需要扩展前端项目即可,不需要修改后端服务.
在动态权限处理方面,使用安全框架Spring Security,基于RBAC(Role-Based Access Control )角色的访问控制模型,由该模型主要由鉴权和授权构成,鉴权基于Servlet中Filter原理处理,授权由系统管理员操作.RBAC 的主要思想是:权限是和角色相关的,而用户则被分配相应的角色作为其成员,这样就大大简化了权限的管理 .
环境需要
1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。
2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA;
3.tomcat环境:Tomcat 7.x,8.x,9.x版本均可
4.硬件环境:windows 7/8/10 1G内存以上;或者 Mac OS;
5.是否Maven项目: 是;查看源码目录中是否包含pom.xml;若包含,则为maven项目,否则为非maven项目
6.数据库:MySql 5.7版本;
技术栈
1. 后端:Spring Boot,Spring Security, MyBatis
2. 前端:Vue, ElementUI, axios,Web Socket
使用说明
1. 使用Navicat或者其它工具,在mysql中创建对应名称的数据库,并导入项目的sql文件;
2. 将项目中applicationContext.xml配置文件中的数据库配置改为自己的配置;
3. 使用IDEA/Eclipse/MyEclipse导入项目,Eclipse/MyEclipse导入时,若为maven项目请选择maven; 若为maven项目,导入成功后请执行maven clean; maven install命令,配置tomcat,然后运行;
4. 运行项目,输入localhost:8080/indext.html 登录
5. 管理员用户名:admin 密码:123
【Java毕业设计项目实战篇|Java项目:企业人事系统(java+SpringBoot+Vue+ElementUI+maven+mysql)】
文章图片
文章图片
文章图片
文章图片
文章图片
文章图片
文章图片
文章图片
用户管理控制层:
@Controller
public class UserController {
@Autowired
@Qualifier("RainService")
private RainService rainservice;
// 如果在目录下输入为空,则跳转到指定链接
@RequestMapping(value="https://www.it610.com/user/")
public ModelAndView index2(ModelAndView mv){
mv.setViewName("/user/list");
return mv;
}
//退出功能
@RequestMapping(value="https://www.it610.com/user/logout")
public ModelAndView logout(ModelAndView mv, HttpSession session){
session.setAttribute(Constants.USER_SESSION, null);
session.setAttribute("tip", null);
mv.setViewName("redirect:/index");
return mv;
}
@RequestMapping(value="https://www.it610.com/login")
public ModelAndView login(@RequestParam("loginname") String loginname,
@RequestParam("password") String password,@RequestParam("tip") String tip,
HttpSession session,
ModelAndView mv){
// 调用业务逻辑组件判断用户是否可以登录
boolean flag = false;
if("1".equals(tip)) {
User user = rainservice.login(loginname, password);
if(user!=null){
// 将用户保存到HttpSession当中
System.out.println("HttpSession");
session.setAttribute(Constants.USER_SESSION, user);
session.setAttribute("tip", "1");
// 客户端跳转到main页面
mv.setViewName("redirect:/index");
}else{
// 设置登录失败提示信息
System.out.println("设置登录失败提示信息");
mv.addObject("message", "登录名或密码错误!请重新输入");
// 服务器内部跳转到登录页面
mv.setViewName("forward:/loginForm");
}
}else {
Employee user = rainservice.login2(loginname, password);
if(user!=null){
// 将用户保存到HttpSession当中
System.out.println("HttpSession");
session.setAttribute(Constants.USER_SESSION, user);
session.setAttribute("tip", "2");
// 客户端跳转到main页面
mv.setViewName("redirect:/indexcustomer/");
}else{
// 设置登录失败提示信息
System.out.println("设置登录失败提示信息");
mv.addObject("message", "登录名或密码错误!请重新输入");
// 服务器内部跳转到登录页面
mv.setViewName("forward:/loginForm");
}}
return mv;
}
// 如果在目录下输入任何不存在的参数,则跳转到list
@RequestMapping(value="https://www.it610.com/user/{formName}")
public String index2(@PathVariable String formName){
String blank = "/user/list";
return blank;
}
@RequestMapping(value="https://www.it610.com/user/list",method=RequestMethod.GET)
public String index(Model model,String content){
List job_list = rainservice.get_UserList();
if (content!=null){
job_list = rainservice.get_UserLikeList(content);
}
model.addAttribute("list",job_list);
return "user/list";
}
@RequestMapping(value="https://www.it610.com/user/add",method=RequestMethod.GET)
public String add(Model model,Integer id){
if(id!=null){
User job = rainservice.get_UserInfo(id);
model.addAttribute("job",job);
}
return "/user/add";
}
@RequestMapping(value="https://www.it610.com/user/add",method=RequestMethod.POST)
public ModelAndView add(ModelAndView mv,@ModelAttribute User notice ,Integer id){
System.out.println(id);
if(id!=null){
rainservice.update_UserInfo(notice);
}else{
rainservice.insert_UserInfo(notice);
}
mv.setViewName("redirect:/user/list");
return mv;
}
@RequestMapping(value="https://www.it610.com/user/delete",method=RequestMethod.GET)
public void delete(Integer id){
System.out.println(id);
if(id!=null){
rainservice.delete_UserInfo(id);
}
}
//管理员自己修改密码时跳转的页面
@RequestMapping(value="https://www.it610.com/user/myupdate",method=RequestMethod.GET)
public String update(Model model,HttpSession session){
User user = (User) session.getAttribute(Constants.USER_SESSION);
model.addAttribute("job",user);
return "/user/myupdate";
}
@RequestMapping(value="https://www.it610.com/user/myupdate",method=RequestMethod.POST)
public ModelAndView update(ModelAndView mv,Model model,HttpSession session,User notice){
User user = (User) session.getAttribute(Constants.USER_SESSION);
//如果是自己修改自己的密码,则更新session
user.setLoginname(notice.getLoginname());
user.setPassword(notice.getPassword());
user.setUsername(notice.getUsername());
rainservice.update_UserInfo(user);
session.setAttribute(Constants.USER_SESSION, user);
mv.setViewName("redirect:/user/myupdate");
return mv;
}
}
部门管理控制层:
@Controller
public class DeptController {
@Autowired
@Qualifier("RainService")
private RainService rainservice;
// 如果在目录下输入为空,则跳转到指定链接
@RequestMapping(value="https://www.it610.com/dept/")
public ModelAndView index2(ModelAndView mv){
mv.setViewName("dept/list");
return mv;
}
// 如果在目录下输入任何不存在的参数,则跳转到list
@RequestMapping(value="https://www.it610.com/dept/{formName}")
public String index2(@PathVariable String formName){
//return formName;
String blank = "/dept/list";
return blank;
}
@RequestMapping(value="https://www.it610.com/dept/list",method=RequestMethod.GET)
public String index(Model model,String content){
//System.out.println("4234");
List dept_list = rainservice.findAllDept();
if (content!=null){
dept_list = rainservice.findAllDept(content);
}model.addAttribute("list",dept_list);
//for(Dept attribute : dept_list) {
//System.out.println(attribute.getName());
//}
return "dept/list";
}
@RequestMapping(value="https://www.it610.com/dept/add",method=RequestMethod.GET)
public String add(Model model,Integer id){
//System.out.println(id);
if(id!=null){
Dept dept = rainservice.get_Info(id);
model.addAttribute("dept",dept);
//System.out.println(dept.getName());
}
return "/dept/add";
}
@RequestMapping(value="https://www.it610.com/dept/add",method=RequestMethod.POST)
public ModelAndView add(ModelAndView mv,@ModelAttribute Dept dept ,Integer id){
System.out.println(id);
//System.out.println(dept.getId());
if(id!=null){
rainservice.update_Info(dept);
System.out.println(dept.getId());
}else{
rainservice.addDept(dept);
}
//System.out.println(dept.getName());
mv.setViewName("redirect:/dept/list");
return mv;
}
@RequestMapping(value="https://www.it610.com/dept/delete",method=RequestMethod.GET)
public void delete(Integer id){
System.out.println(id);
if(id!=null){
rainservice.delete_Info(id);
}
}
}
角色管理控制层:
@Controller
public class EmployeeController {
@Autowired
@Qualifier("RainService")
private RainService rainservice;
// 如果在目录下输入为空,则跳转到指定链接
@RequestMapping(value="https://www.it610.com/employee/")
public ModelAndView index2(ModelAndView mv){
mv.setViewName("employee/list");
return mv;
}
// 如果在目录下输入任何不存在的参数,则跳转到list
@RequestMapping(value="https://www.it610.com/employee/{formName}")
public String index2(@PathVariable String formName){
String blank = "/employee/list";
return blank;
}
@RequestMapping(value="https://www.it610.com/employee/list",method=RequestMethod.GET)
public String index(Model model,String content){
List job_list = rainservice.get_EmployeeList();
if (content!=null){
job_list = rainservice.get_EmployeeLikeList(content);
}
model.addAttribute("list",job_list);
return "employee/list";
}
@RequestMapping(value="https://www.it610.com/employee/add",method=RequestMethod.GET)
public String add(Model model,Integer id){
if(id!=null){
Employee employee = rainservice.get_EmployeeInfo(id);
model.addAttribute("job",employee);
}
List dept_list = rainservice.findAllDept();
List job_list = rainservice.findAllJob();
model.addAttribute("job_list", job_list);
model.addAttribute("dept_list",dept_list);
return "/employee/add";
}
@RequestMapping(value="https://www.it610.com/employee/add",method=RequestMethod.POST)
public ModelAndView add(ModelAndView mv,@ModelAttribute Employee job ,Integer id){
//System.out.println(id);
if(id!=null){
rainservice.update_EmployeeInfo(job);
}else{
rainservice.insert_EmployeeInfo(job);
}
mv.setViewName("redirect:/employee/list");
return mv;
}
@RequestMapping(value="https://www.it610.com/employee/delete",method=RequestMethod.GET)
public void delete(Integer id){
//System.out.println(id);
if(id!=null){
rainservice.delete_EmployeeInfo(id);
}
}
}
源码获取:博客首页 "资源" 里下载!
推荐阅读
- Java毕业设计项目实战篇|Java项目:宿舍管理系统(java+SpringBoot+Thymeleaf+html+layui+mysql)
- Java毕业设计项目实战篇|Java项目:图书管理系统(java+SpringBoot+jpa+html+swagger+maven+mysql)
- Java毕业设计项目实战篇|Java项目:中小医院信息管理系统(java+Springboot+ssm+mysql+maven+jsp)
- Java毕业设计项目实战篇|Java项目:医院管理系统(java+Springboot+ssm+mysql+maven)
- Java|Java 执行shell命令 “空格参数“ 方法笔记
- springboot 整合通用mapper , 热加载 遇到ClassCastException
- java学习开始|java中的类和对象(3)
- #|√ JavaSE - 12.怎么使用抽象类和抽象方法(卷1 P155)
- Spring中多线程的使用及问题