基于javaweb的大学生创新项目管理系统(java+ssm+bootstrap+jsp+mysql)
运行环境
Java≥8、MySQL≥5.7、Tomcat≥8
开发工具
eclipse/idea/myeclipse/sts等均可配置运行
适用
课程设计,大作业,毕业设计,项目练习,学习演示等
功能说明
基于javaweb+mysql的大学生创新项目管理系统(java+SSM+Bootstrap+JSP+mysql)
项目介绍
本项目包含管理员、学生、专家三种角色; 管理员角色包含以下功能: 管理员登录,学院管理,专业管理,班级管理,用户管理,创新计划查看,查看项目申请,项目申请审核等功能。
学生角色包含以下功能: 学生登录,查看创新计划,申请和查看我的项目,创新创业计划书填写等功能。
专家角色包含以下功能: 专家登录,查看创新计划,申请项目,学生项目列表,管理预算记录等功能。
环境需要
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项目:是;
技术栈
- 后端:Spring+SpringMVC+Mybatis 2. 前端:JSP+CSS+JavaScript+jQuery+bootstrap
使用说明
- 使用Navicat或者其它工具,在mysql中创建对应名称的数据库,并导入项目的sql文件; 2. 使用IDEA/Eclipse/MyEclipse导入项目,Eclipse/MyEclipse导入时,若为maven项目请选择maven; 若为maven项目,导入成功后请执行maven clean;maven install命令,然后运行; 3. 将项目中jdbc.properties配置文件中的数据库配置改为自己的配置; 4. 运行项目,在浏览器中输入http://localhost:8080/ssm_schoolproject_sys 登录
用户信息管理控制层:
/**
- 用户信息
*/
@Controller
@RequestMapping(“/system/user”)
public class SysUserController extends BaseController
private String prefix = “system/user”;
@Autowired
private ISysUserService userService;
@Autowired
private ISysRoleService roleService;
@Autowired
private ISysPostService postService;
@Autowired
private SysPasswordService passwordService;
@RequiresPermissions(“system:user:view”)
@GetMapping()
public String user()
return prefix + “/user”;
@RequiresPermissions(“system:user:list”)
@PostMapping(“/list”)
@ResponseBody
public TableDataInfo list(SysUser user)
startPage();
List list = userService.selectUserList(user);
return getDataTable(list);
@Log(title = “用户管理”, businessType = BusinessType.EXPORT)
@RequiresPermissions(“system:user:export”)
@PostMapping(“/export”)
@ResponseBody
public AjaxResult export(SysUser user)
List list = userService.selectUserList(user);
ExcelUtil util = new ExcelUtil(SysUser.class);
return util.exportExcel(list, “用户数据”);
@Log(title = “用户管理”, businessType = BusinessType.IMPORT)
@RequiresPermissions(“system:user:import”)
@PostMapping(“/importData”)
@ResponseBody
public AjaxResult importData(MultipartFile file, boolean updateSupport) throws Exception
ExcelUtil util = new ExcelUtil(SysUser.class);
List userList = util.importExcel(file.getInputStream());
String operName = ShiroUtils.getSysUser().getLoginName();
String message = userService.importUser(userList, updateSupport, operName);
return AjaxResult.success(message);
@RequiresPermissions(“system:user:view”)
@GetMapping(“/importTemplate”)
@ResponseBody
public AjaxResult importTemplate()
ExcelUtil util = new ExcelUtil(SysUser.class);
return util.importTemplateExcel(“用户数据”);
/**
- 新增用户
*/
@GetMapping(“/add”)
public String add(ModelMap mmap)
mmap.put(“roles”, roleService.selectRoleAll());
mmap.put(“posts”, postService.selectPostAll());
return prefix + “/add”;
/**
- 新增保存用户
*/
@RequiresPermissions(“system:user:add”)
@Log(title = “用户管理”, businessType = BusinessType.INSERT)
@PostMapping(“/add”)
@ResponseBody
public AjaxResult addSave(@Validated SysUser user)
if (UserConstants.USER_NAME_NOT_UNIQUE.equals(userService.checkLoginNameUnique(user.getLoginName())))
return error(“新增用户’” + user.getLoginName() + “'失败,登录账号已存在”);
else if (UserConstants.USER_PHONE_NOT_UNIQUE.equals(userService.checkPhoneUnique(user)))
return error(“新增用户’” + user.getLoginName() + “'失败,手机号码已存在”);
else if (UserConstants.USER_EMAIL_NOT_UNIQUE.equals(userService.checkEmailUnique(user)))
return error(“新增用户’” + user.getLoginName() + “'失败,邮箱账号已存在”);
user.setSalt(ShiroUtils.randomSalt());
user.setPassword(passwordService.encryptPassword(user.getLoginName(), user.getPassword(), user.getSalt()));
user.setCreateBy(ShiroUtils.getLoginName());
return toAjax(userService.insertUser(user));
/**
- 修改用户
*/
@GetMapping(“/edit/{userId}”)
public String edit(@PathVariable(“userId”) Long userId, ModelMap mmap)
mmap.put(“user”, userService.selectUserById(userId));
mmap.put(“roles”, roleService.selectRolesByUserId(userId));
mmap.put(“posts”, postService.selectPostsByUserId(userId));
return prefix + “/edit”;
/**
- 修改保存用户
*/
@RequiresPermissions(“system:user:edit”)
@Log(title = “用户管理”, businessType = BusinessType.UPDATE)
@PostMapping(“/edit”)
@ResponseBody
public AjaxResult editSave(@Validated SysUser user)
userService.checkUserAllowed(user);
if (UserConstants.USER_PHONE_NOT_UNIQUE.equals(userService.checkPhoneUnique(user)))
return error(“修改用户’” + user.getLoginName() + “'失败,手机号码已存在”);
else if (UserConstants.USER_EMAIL_NOT_UNIQUE.equals(userService.checkEmailUnique(user)))
return error(“修改用户’” + user.getLoginName() + “'失败,邮箱账号已存在”);
user.setUpdateBy(ShiroUtils.getLoginName());
return toAjax(userService.updateUser(user));
@RequiresPermissions(“system:user:resetPwd”)
@Log(title = “重置密码”, businessType = BusinessType.UPDATE)
@GetMapping(“/resetPwd/{userId}”)
public String resetPwd(@PathVariable(“userId”) Long userId, ModelMap mmap)
mmap.put(“user”, userService.selectUserById(userId));
return prefix + “/resetPwd”;
@RequiresPermissions(“system:user:resetPwd”)
@Log(title = “重置密码”, businessType = BusinessType.UPDATE)
@PostMapping(“/resetPwd”)
@ResponseBody
public AjaxResult resetPwdSave(SysUser user)
userService.checkUserAllowed(user);
user.setSalt(ShiroUtils.randomSalt());
user.setPassword(passwordService.encryptPassword(user.getLoginName(), user.getPassword(), user.getSalt()));
if (userService.resetUserPwd(user) > 0)
if (ShiroUtils.getUserId() == user.getUserId())
ShiroUtils.setSysUser(userService.selectUserById(user.getUserId()));
return success();
return error();
@RequiresPermissions(“system:user:remove”)
@Log(title = “用户管理”, businessType = BusinessType.DELETE)
@PostMapping(“/remove”)
@ResponseBody
public AjaxResult remove(String ids)
try
return toAjax(userService.deleteUserByIds(ids));
catch (Exception e)
return error(e.getMessage());
/**
- 校验用户名
*/
@PostMapping(“/checkLoginNameUnique”)
@ResponseBody
public String checkLoginNameUnique(SysUser user)
return userService.checkLoginNameUnique(user.getLoginName());
/**
- 校验手机号码
*/
@PostMapping(“/checkPhoneUnique”)
@ResponseBody
public String checkPhoneUnique(SysUser user)
return userService.checkPhoneUnique(user);
/**
- 校验email邮箱
*/
@PostMapping(“/checkEmailUnique”)
@ResponseBody
public String checkEmailUnique(SysUser user)
return userService.checkEmailUnique(user);
/**
- 用户状态修改
*/
@Log(title = “用户管理”, businessType = BusinessType.UPDATE)
@RequiresPermissions(“system:user:edit”)
@PostMapping(“/changeStatus”)
@ResponseBody
public AjaxResult changeStatus(SysUser user)
userService.checkUserAllowed(user);
return toAjax(userService.changeStatus(user));
角色信息管理控制层:
/**
- 角色信息
*/
@Controller
@RequestMapping(“/system/role”)
public class SysRoleController extends BaseController
private String prefix = “system/role”;
@Autowired
private ISysRoleService roleService;
@Autowired
private ISysUserService userService;
@RequiresPermissions(“system:role:view”)
@GetMapping()
public String role()
return prefix + “/role”;
@RequiresPermissions(“system:role:list”)
@PostMapping(“/list”)
@ResponseBody
public TableDataInfo list(SysRole role)
startPage();
List list = roleService.selectRoleList(role);
return getDataTable(list);
@Log(title = “角色管理”, businessType = BusinessType.EXPORT)
@RequiresPermissions(“system:role:export”)
@PostMapping(“/export”)
@ResponseBody
public AjaxResult export(SysRole role)
List list = roleService.selectRoleList(role);
ExcelUtil util = new ExcelUtil(SysRole.class);
return util.exportExcel(list, “角色数据”);
/**
- 新增角色
*/
@GetMapping(“/add”)
public String add()
return prefix + “/add”;
/**
- 新增保存角色
*/
@RequiresPermissions(“system:role:add”)
@Log(title = “角色管理”, businessType = BusinessType.INSERT)
@PostMapping(“/add”)
@ResponseBody
public AjaxResult addSave(@Validated SysRole role)
if (UserConstants.ROLE_NAME_NOT_UNIQUE.equals(roleService.checkRoleNameUnique(role)))
return error(“新增角色’” + role.getRoleName() + “'失败,角色名称已存在”);
else if (UserConstants.ROLE_KEY_NOT_UNIQUE.equals(roleService.checkRoleKeyUnique(role)))
return error(“新增角色’” + role.getRoleName() + “'失败,角色权限已存在”);
role.setCreateBy(ShiroUtils.getLoginName());
ShiroUtils.clearCachedAuthorizationInfo();
return toAjax(roleService.insertRole(role));
/**
- 修改角色
*/
@GetMapping(“/edit/{roleId}”)
public String edit(@PathVariable(“roleId”) Long roleId, ModelMap mmap)
mmap.put(“role”, roleService.selectRoleById(roleId));
return prefix + “/edit”;
/**
- 修改保存角色
*/
@RequiresPermissions(“system:role:edit”)
@Log(title = “角色管理”, businessType = BusinessType.UPDATE)
@PostMapping(“/edit”)
@ResponseBody
public AjaxResult editSave(@Validated SysRole role)
roleService.checkRoleAllowed(role);
if (UserConstants.ROLE_NAME_NOT_UNIQUE.equals(roleService.checkRoleNameUnique(role)))
return error(“修改角色’” + role.getRoleName() + “'失败,角色名称已存在”);
else if (UserConstants.ROLE_KEY_NOT_UNIQUE.equals(roleService.checkRoleKeyUnique(role)))
return error(“修改角色’” + role.getRoleName() + “'失败,角色权限已存在”);
role.setUpdateBy(ShiroUtils.getLoginName());
ShiroUtils.clearCachedAuthorizationInfo();
return toAjax(roleService.updateRole(role));
/**
- 角色分配数据权限
*/
@GetMapping(“/authDataScope/{roleId}”)
public String authDataScope(@PathVariable(“roleId”) Long roleId, ModelMap mmap)
mmap.put(“role”, roleService.selectRoleById(roleId));
return prefix + “/dataScope”;
/**
- 保存角色分配数据权限
*/
@RequiresPermissions(“system:role:edit”)
@Log(title = “角色管理”, businessType = BusinessType.UPDATE)
@PostMapping(“/authDataScope”)
@ResponseBody
public AjaxResult authDataScopeSave(SysRole role)
roleService.checkRoleAllowed(role);
role.setUpdateBy(ShiroUtils.getLoginName());
if (roleService.authDataScope(role) > 0)
ShiroUtils.setSysUser(userService.selectUserById(ShiroUtils.getSysUser().getUserId()));
return success();
return error();
@RequiresPermissions(“system:role:remove”)
@Log(title = “角色管理”, businessType = BusinessType.DELETE)
@PostMapping(“/remove”)
@ResponseBody
public AjaxResult remove(String ids)
try
return toAjax(roleService.deleteRoleByIds(ids));
catch (Exception e)
return error(e.getMessage());
/**
- 校验角色名称
*/
@PostMapping(“/checkRoleNameUnique”)
@ResponseBody
public String checkRoleNameUnique(SysRole role)
return roleService.checkRoleNameUnique(role);
/**
- 校验角色权限
*/
@PostMapping(“/checkRoleKeyUnique”)
@ResponseBody
public String checkRoleKeyUnique(SysRole role)
return roleService.checkRoleKeyUnique(role);
/**
- 选择菜单树
*/
@GetMapping(“/selectMenuTree”)
public String selectMenuTree()
return prefix + “/tree”;
/**
- 角色状态修改
*/
@Log(title = “角色管理”, businessType = BusinessType.UPDATE)
@RequiresPermissions(“system:role:edit”)
@PostMapping(“/changeStatus”)
@ResponseBody
public AjaxResult changeStatus(SysRole role)
roleService.checkRoleAllowed(role);
return toAjax(roleService.changeStatus(role));
/**
- 分配用户
*/
@RequiresPermissions(“system:role:edit”)
@GetMapping(“/authUser/{roleId}”)
public String authUser(@PathVariable(“roleId”) Long roleId, ModelMap mmap)
mmap.put(“role”, roleService.selectRoleById(roleId));
return prefix + “/authUser”;
/**
- 查询已分配用户角色列表
*/
@RequiresPermissions(“system:role:list”)
@PostMapping(“/authUser/allocatedList”)
@ResponseBody
public TableDataInfo allocatedList(SysUser user)
startPage();
List list = userService.selectAllocatedList(user);
return getDataTable(list);
/**
- 取消授权
*/
@Log(title = “角色管理”, businessType = BusinessType.GRANT)
@PostMapping(“/authUser/cancel”)
@ResponseBody
public AjaxResult cancelAuthUser(SysUserRole userRole)
return toAjax(roleService.deleteAuthUser(userRole));
/**
- 批量取消授权
*/
@Log(title = “角色管理”, businessType = BusinessType.GRANT)
@PostMapping(“/authUser/cancelAll”)
@ResponseBody
public AjaxResult cancelAuthUserAll(Long roleId, String userIds)
return toAjax(roleService.deleteAuthUsers(roleId, userIds));
/**
- 选择用户
*/
@GetMapping(“/authUser/selectUser/{roleId}”)
public String selectUser(@PathVariable(“roleId”) Long roleId, ModelMap mmap)
mmap.put(“role”, roleService.selectRoleById(roleId));
return prefix + “/selectUser”;
/**
- 查询未分配用户角色列表
*/
@RequiresPermissions(“system:role:list”)
@PostMapping(“/authUser/unallocatedList”)
@ResponseBody
public TableDataInfo unallocatedList(SysUser user)
startPage();
List list = userService.selectUnallocatedList(user);
return getDataTable(list);
/**
- 批量选择用户授权
*/
@Log(title = “角色管理”, businessType = BusinessType.GRANT)
@PostMapping(“/authUser/selectAll”)
@ResponseBody
public AjaxResult selectAuthUserAll(Long roleId, String userIds)
return toAjax(roleService.insertAuthUsers(roleId, userIds));
登录验证管理控制层:
/**
- 登录验证
*/
@Controller
public class SysLoginController extends BaseController
@GetMapping(“/login”)
public String login(HttpServletRequest request, HttpServletResponse response)
// 如果是Ajax请求,返回Json字符串。
if (ServletUtils.isAjaxRequest(request))
return ServletUtils.renderString(response, “{“code”:“1”,“msg”:“未登录或登录超时。请重新登录”}”);
return “login”;
@PostMapping(“/login”)
@ResponseBody
public AjaxResult ajaxLogin(String username, String password, Boolean rememberMe)
UsernamePasswordToken token = new UsernamePasswordToken(username, password, rememberMe);
Subject subject = SecurityUtils.getSubject();
try
subject.login(token);
return success();
catch (AuthenticationException e)
String msg = “用户或密码错误”;
if (StringUtils.isNotEmpty(e.getMessage()))
msg = e.getMessage();
return error(msg);
@GetMapping(“/unauth”)
public String unauth()
return “error/unauth”;