作者主页:源码空间站2022
简介:Java领域优质创作者、Java项目、学习资料、技术互助
文末获取源码
项目介绍
OA办公管理系统,这是一款由JSP+SSM(spring+springmvc+mybatis)+MySQL实现的简单的OA办公管理系统,主要实现的功能有员工注册登录,自动计算当前月迟到、早退、加班、缺勤天数并根据图表展示,任务管理(任务发布、更新、删除、进度条展示完成度),通知管理(通知发布、更新、删除),站内信发布、回复、删除等,发布公告和任务及站内信时可上传图片等。
环境需要
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.数据库:MySql 5.7版本;
6.是否Maven项目:否;
技术栈
1. 后端:Spring+SpringMVC+Mybatis
2. 前端:JSP+CSS+JavaScript
使用说明
1. 使用Navicat或者其它工具,在mysql中创建对应名称的数据库,并导入项目的sql文件;
2. 使用IDEA/Eclipse/MyEclipse导入项目;
3. 将项目中db.properties配置文件中的数据库配置改为自己的配置;
4. 运行项目,输入localhost:8080/OAManagerSys 登录 注意:路径必须为/OAManagerSys,否则会有图片加载不出来
管理员账号/密码:admin/admin
账号/密码:zhangtao/123
运行截图
相关代码
账户控制器
package com.noa.controller;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authc.IncorrectCredentialsException;
import org.apache.shiro.authc.UnknownAccountException;
import org.apache.shiro.authc.UsernamePasswordToken;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.multipart.MultipartFile;
import com.noa.exception.CustomException;
import com.noa.po.Employee;
import com.noa.po.EmployeeCustom;
import com.noa.service.EmployeeService;
import com.noa.service.SysService;
@Controller
public class AccountController {
@Autowired
private EmployeeService employeeService;
@Autowired
private SysService sysService;
EmployeeCustom activeEmp;
@RequestMapping("/login")
public String login(Model model, HttpServletRequest request) throws Exception {
String exceptionClassName = (String) request.getAttribute("shiroLoginFailure");
if (exceptionClassName != null) {
if (UnknownAccountException.class.getName().equals(exceptionClassName)) {
// 最终会抛给异常处理器
model.addAttribute("message", "账号不存在");
} else if (IncorrectCredentialsException.class.getName().equals(exceptionClassName)) {
model.addAttribute("message", "用户名/密码错误");
// throw new CustomException("用户名/密码错误");
} else {
model.addAttribute("message", "未知错误");
// throw new Exception();// 最终在异常处理器生成未知错误
}
}
// 访问/login时, 自动进行认证,认证成功后直接跳转出去
// 初次访问时exceptionClassName== null直接到这里
// 认证失败时exceptionClassName!= null , 传递信息后又回到这里
return "misc/login";
}
@RequestMapping(value = "/signup", method = RequestMethod.GET)
public String showSignupPage(Model model) throws Exception {
return "misc/signup";
}
@RequestMapping(value = "/signup", method = RequestMethod.POST)
public String checkUsername(Model model, Employee employee) throws Exception {
try {
employeeService.checkUsername(employee);
model.addAttribute("employee", employee);
model.addAttribute("positionList", sysService.getAbleToRegPos());
return "misc/signup_detail";
} catch (CustomException e) {
model.addAttribute("message", e.getMessage());
}
return "misc/signup";
}
@RequestMapping(value = "/signup2", method = RequestMethod.POST)
public String confirmPosition(Model model, Employee employee, MultipartFile employee_pic) throws Exception {
// 上传图片
String originalFilename = employee_pic.getOriginalFilename();
if (employee_pic != null && originalFilename != null && originalFilename.trim() != "") {
employee.setPic(sysService.uploadPic("employee", employee_pic));
}
model.addAttribute("employee", employee);
model.addAttribute("departmentList", sysService.getAbleToRegDep(employee.getPositionId()));
return "misc/signup_dep";
}
@RequestMapping(value = "/formal_signup", method = RequestMethod.POST)
public String register(Model model, Employee employee) throws Exception {
try {
employeeService.register(employee);
UsernamePasswordToken token = new UsernamePasswordToken(employee.getUsername(), employee.getPassword());
SecurityUtils.getSubject().login(token);
return "redirect:home";
} catch (CustomException e) {
model.addAttribute("message", e.getMessage());
}
// 注册失败
return "misc/signup_detail";
}
@RequestMapping("/logout")
public String logout(HttpSession session) throws Exception {
activeEmp = (EmployeeCustom) session.getAttribute("activeEmp");
employeeService.logout(activeEmp);
session.removeAttribute("activeEmp");
session.invalidate();
return "redirect:/login";
}
@RequestMapping("/refuse")
public String refuse() throws Exception {
return "misc/refuse";
}
}
如果也想学习本系统,下面领取。关注并回复:172ssm