源码获取:俺的博客首页 "资源" 里下载!
项目介绍
管理员角色包含以下功能:
管理员登录,修改管理员资料,用户管理,公告管理,报销类型管理,系别信息管理,报销审核管理等功能。
用户角色包含以下功能:
用户登录,修改个人资料,查看公告,报销类型查看,系别信息查看,报销审批查看等功能。
环境需要
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版本;
技术栈
1. 后端:Spring+SpringMVC+Mybatis
2. 前端:HTML+CSS+JavaScript+jsp
使用说明
1. 使用Navicat或者其它工具,在mysql中创建对应名称的数据库,并导入项目的sql文件;
2. 使用IDEA/Eclipse/MyEclipse导入项目,Eclipse/MyEclipse导入时,若为maven项目请选择maven;
若为maven项目,导入成功后请执行maven clean;maven install命令,然后运行;
3. 将项目中application.yml配置文件中的数据库配置改为自己的配置;
4. 运行项目,输入localhost:8080/ 登录
用户管理控制层:
@Controller
public class UserController {
@Autowired
@Qualifier("RainService")
private RainService rainservice;
// 如果在目录下输入为空,则跳转到指定链接
@RequestMapping(value="/user/")
public ModelAndView index2(ModelAndView mv){
mv.setViewName("/user/list");
return mv;
}
// 退出功能
@RequestMapping(value="/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="/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="/user/{formName}")
public String index2(@PathVariable String formName){
String blank = "/user/list";
return blank;
}
@RequestMapping(value="/user/list",method=RequestMethod.GET)
public String index(Model model,String content){
List<User> job_list = rainservice.get_UserList();
if (content!=null){
job_list = rainservice.get_UserLikeList(content);
}
model.addAttribute("list",job_list);
return "user/list";
}
@RequestMapping(value="/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="/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="/user/delete",method=RequestMethod.GET)
public void delete(Integer id){
System.out.println(id);
if(id!=null){
rainservice.delete_UserInfo(id);
}
}
// 管理员自己修改密码时跳转的页面
@RequestMapping(value="/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="/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 NoticeController {
@Autowired
@Qualifier("RainService")
private RainService rainservice;
// 如果在目录下输入为空,则跳转到指定链接
@RequestMapping(value="/notice/")
public ModelAndView index2(ModelAndView mv){
mv.setViewName("notice/list");
return mv;
}
// 如果在目录下输入任何不存在的参数,则跳转到list
@RequestMapping(value="/notice/{formName}")
public String index2(@PathVariable String formName){
String blank = "/notice/list";
return blank;
}
@RequestMapping(value="/notice/list",method=RequestMethod.GET)
public String index(Model model,String content){
List<Notice> job_list = rainservice.get_NoticeList();
if (content!=null){
job_list = rainservice.get_NoticeLikeList(content);
}
model.addAttribute("list",job_list);
return "notice/list";
}
@RequestMapping(value="/notice/add",method=RequestMethod.GET)
public String add(Model model,Integer id){
if(id!=null){
Notice job = rainservice.get_NoticeInfo(id);
model.addAttribute("job",job);
}
return "/notice/add";
}
@RequestMapping(value="/notice/add",method=RequestMethod.POST)
public ModelAndView add(ModelAndView mv,@ModelAttribute Notice notice ,Integer id){
System.out.println(id);
if(id!=null){
rainservice.update_NoticeInfo(notice);
}else{
rainservice.insert_NoticeInfo(notice);
}
mv.setViewName("redirect:/notice/list");
return mv;
}
@RequestMapping(value="/notice/delete",method=RequestMethod.GET)
public void delete(Integer id){
System.out.println(id);
if(id!=null){
rainservice.delete_NoticeInfo(id);
}
}
}
系统管理控制层:
@Controller
public class CommonController {
@RequestMapping(value="/{formName}")
public String loginForm(@PathVariable String formName){
// 作为一个空方法,可以匹配任何无效输入,再跳转到404
return formName;
// String blank = "blank";
// return blank;
}
@RequestMapping(value="/")
public String index(){
String blank = "index";
return blank;
}
@RequestMapping(value="/welcome")
public String welcome(){
String blank = "welcome";
return blank;
}
}
源码获取:俺的博客首页 "资源" 里下载!