SSM公司企业OA管理系统

作者主页:源码空间站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 

 

OA办公系统的九大设计原则: 1.整体性 系统整体设计能有效的实现后台一体化管理,前端满足用户个性化需求,系统标准化程度高。 2.先进性 软件采用的技术,将在相当长的时间内保证技术的发展能力,应具有良好便捷的升级能力,选用的硬件设备及操作系统、数据库产品、应用软件均具有先进性及成熟的技术与产品。 3.规范性 遵循统一的国家规范公文格式和交换接口标准。 4.高效性 系统提供对各类事务处理的高效性。使对大容量数据的查询和更新等操作也在较短的时间内迅速完成。对于大数据量的处理,也能高效地完成。 5.安全可靠性 采用最成熟和应用最广泛的技术平台,支持身份认证技术、安全加密技术;数据在传输过程和数据库中采用高加密技术,保证数据的安全性。分不同的角色控制信息数据,采用横向和纵向结合的矩阵权限控制模式,保证企业的各种信息安全。 6.扩展性 由于计算机和网络等领域技术发展十分迅速,应用环境,系统硬件及系统软件都会不可避免将被更新,系统的可扩充性及版本的兼容性,直接影响着应用系统和用户需求的发展和功能的提升。因此,OA系统十分重视扩展性,能很容易地适应调整,扩充和删减;另一方面,它还具有与其它系统的接口能力,利用各系统功能之长,进行优势互补。 7.适应性和灵活性 在日常工作中,不可避免地需要进行机构及人员的调整,OA系统能提供充分的变更与扩展能力,适用机构及人员的调整。OA系统还具有图形化工作流定义工具,系统管理员可在浏览器环境下任意调整或定义工作流程。系统具有灵活的信息发布系统,用户可根据需要定制发布需要的新闻、通知。 8.易用性 系统的设计尤其重视用户界面的友好性。简洁大方、功能齐备、美观实用、提示准确。 9.健壮性 OA办公系统的开发设计应该支持应用和数据库等多重负载均衡能力,支持附件服务器和数据库服务器分离技术,从而支持数万用户同时在线和同时操作的能力,不会因为用户数的增长或者信息量的增长,而导致系统响应能力下降。 如何分辨OA办公系统的优劣?设计原则是一个重要的评判标准。优秀的设计原则能让OA办公系统脱颖而出,实现系统整体的高性能、高可用、可扩展,发挥出更强的协同办公能力。而OA办公系统设计的九大原则,基本上包括了OA办公系统的性能指标,给项目开发和用户选型提供了有益的借鉴,对于中国OA办公系统的整体水平也能起到提升作用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值