基于javaweb的校园物品租赁管理系统(java+ssm+jsp+layui+mysql)
运行环境
Java≥8、MySQL≥5.7、Tomcat≥8
开发工具
eclipse/idea/myeclipse/sts等均可配置运行
适用
课程设计,大作业,毕业设计,项目练习,学习演示等
功能说明
基于javaweb+SSM的校园物品租赁管理系统(java+SSM+JSP+layui+Maven+mysql)
一、项目简述 环境配置:
Jdk1.8 + Tomcat8.5 + mysql + Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)
项目技术:
JSP +Spring + SpringMVC + MyBatis + html+ css + JavaScript + JQuery + Ajax + layui+ maven等等。
用户管理控制器:
/**
- 用户管理控制器
*/
@RestController
@RequestMapping(“user”)
public class UserController {
@Autowired
private UserService userService;
/*
- 加载用户列表返回DataGridView
*/
@RequestMapping(“loadAllUser”)
public DataGridView loadAllmeenu(UserVo userVo) {
return this.userService.queryAllUser(userVo);
/*
- 注册用户–查询用户名是否存在
*/
@RequestMapping(“queryLoginName”)
public ResultObj queryLoginName(UserVo userVo) {
Integer count = this.userService.queryLoginName(userVo.getLoginname());
if (count != 0) {
return ResultObj.USER_EXIST;
return null;
/*
- 注册用户
*/
@RequestMapping(“signup”)
public ResultObj signup(UserVo userVo) {
try {
String code = WebUtils.getHttpSession().getAttribute(“code”).toString();
if (userVo.getCode().toLowerCase().equals(code)) {
this.userService.signUpUser(userVo);
return ResultObj.SIGNUP_SUCCESS;
} else {
return ResultObj.USER_SIGNUP_CODE_ERROR_MSG;
} catch (Exception e) {
e.printStackTrace();
return ResultObj.SIGNUP_ERROR;
/*
- 添加用户
*/
@RequestMapping(“addUser”)
public ResultObj addUser(UserVo userVo) {
try {
this.userService.addUser(userVo);
return ResultObj.ADD_SUCCESS;
} catch (Exception e) {
e.printStackTrace();
return ResultObj.ADD_ERROR;
/*
- 修改用户
*/
@RequestMapping(“updateUser”)
public ResultObj updateUser(UserVo userVo) {
try {
this.userService.updateUser(userVo);
return ResultObj.UPDATE_SUCCESS;
} catch (Exception e) {
e.printStackTrace();
return ResultObj.UPDATE_ERROR;
/*
- 删除用户
*/
@RequestMapping(“deleteUser”)
public ResultObj deleteUser(UserVo userVo) {
System.out.println(userVo);
System.out.println(userVo.getUserid());
try {
this.userService.deleteUser(userVo.getUserid());
return ResultObj.DELETE_SUCCESS;
} catch (Exception e) {
e.printStackTrace();
return ResultObj.DELETE_ERROR;
/*
- 批量删除用户
*/
@RequestMapping(“deleteBatchUser”)
public ResultObj deleteBatchUser(UserVo userVo) {
try {
this.userService.deleteBatchUser(userVo.getIds());
return ResultObj.DELETE_SUCCESS;
} catch (Exception e) {
e.printStackTrace();
return ResultObj.DELETE_ERROR;
/*
- 重置用户密码
*/
@RequestMapping(“resetUserPwd”)
public ResultObj resetUserPwd(UserVo userVo) {
try {
this.userService.resetUserPwd(userVo.getUserid());
return ResultObj.RESET_SUCCESS;
} catch (Exception e) {
e.printStackTrace();
return ResultObj.RESET_ERROR;
/*
- 加载用户管理分配的分配角色的数据
*/
@RequestMapping(“initUserRole”)
public DataGridView initUserRole(UserVo userVo) {
return this.userService.queryUserRole(userVo.getUserid());
/*
- 保存用户和角色的关系
*/
@RequestMapping(“saveUserRole”)
public ResultObj saveUserRole(UserVo userVo) {
try {
this.userService.saveUserRole(userVo);
return ResultObj.DISPATCH_SUCCESS;
} catch (Exception e) {
e.printStackTrace();
return ResultObj.DISPATCH_ERROR;
/*
- 修改个人信息
*/
@RequestMapping(“updateUserInfo”)
public ResultObj updateUserInfo(UserVo userVo) {
try {
String headimg = userVo.getHeadimg();
if (headimg.endsWith(SysConstast.FILE_UPLOAD_TEMP)) {
String filePath = AppFileUtils.updateFileName(headimg, SysConstast.FILE_UPLOAD_TEMP);
userVo.setHeadimg(filePath);
// 把原来的删除
User user = this.userService.queryUserInfo(userVo.getUserid());
AppFileUtils.removeFileByPath(user.getHeadimg());
this.userService.updateUserInfo(userVo);
return ResultObj.UPDATE_SUCCESS;
} catch (Exception e) {
e.printStackTrace();
return ResultObj.UPDATE_ERROR;
/*
- 查询个人信息
*/
@RequestMapping(“queryUserInfo”)
public User queryUserInfo() {
User user = (User) WebUtils.getHttpSession().getAttribute(“user”);
user = this.userService.queryUserInfo(user.getUserid());
return user;
/*
- 查询密码
*/
@RequestMapping(“queryPwd”)
public ResultObj queryPwd(UserVo userVo) {
User user = (User) WebUtils.getHttpSession().getAttribute(“user”);
user = this.userService.queryUserInfo(user.getUserid());
// 生成密文
String pwd = DigestUtils.md5DigestAsHex(userVo.getPwd().getBytes());
userVo.setPwd(pwd);
if (userVo.getPwd().equals(user.getPwd())) {
return ResultObj.PWD_SUCCESS;
} else {
return ResultObj.PWD_ERROR;
/*
- 更改密码之查询密码
*/
@RequestMapping(“updatePwd”)
public ResultObj updatePwd(UserVo userVo) {
try {
User user = (User) WebUtils.getHttpSession().getAttribute(“user”);
// 生成密文
String pwd = DigestUtils.md5DigestAsHex(userVo.getPwd().getBytes());
userVo.setUserid(user.getUserid());
userVo.setPwd(pwd);
// 修改密码
this.userService.updateUser(userVo);
return ResultObj.UPDATE_SUCCESS;
} catch (Exception e) {
return ResultObj.UPDATE_ERROR;
系统控制层:
@Controller
@RequestMapping(“sys”)
public class SysController {
/*
- 跳转到用户注册
*/
@RequestMapping(“toSignup”)
public String toSignup() {
return “system/main/signup”;
/*
- 跳转到用户管理
*/
@RequestMapping(“toMenuManager”)
public String toMenuManager() {
return “system/menu/menuManager”;
/*
- 跳转菜单管理左边的菜单树
*/
@RequestMapping(“toMenuLeft”)
public String toMenuLeft() {
return “system/menu/menuLeft”;
/*
- 跳转菜单管理右边的菜单
*/
@RequestMapping(“toMenuRight”)
public String toMenuRight() {
return “system/menu/menuRight”;
/*
- 跳转菜单管理右边的菜单
*/
@RequestMapping(“toRoleManager”)
public String toRoleManager() {
return “system/role/roleManager”;
/*
- 跳转到角色管理
*/
@RequestMapping(“toUserManager”)
public String toUserManager() {
return “system/user/userManager”;
/*
- 跳转到日志管理
*/
@RequestMapping(“toLogInfoManager”)
public String toLogInfoManager() {
return “system/logInfo/logInfoManager”;
/*
- 跳转到公告管理页面
*/
@RequestMapping(“toNewsManager”)
public String toNewsManager() {
return “system/news/newsManager”;
/*
- 跳转到个人资料
*/
@RequestMapping(“toUserInfo”)
public String toUserInfo() {
return “system/user/userInfo”;
/*
- 跳转到修改密码
*/
@RequestMapping(“toChangePwd”)
public String toChangePwd() {
return “system/user/changePwd”;
/*
- 跳转到翻译接口测试
*/
@RequestMapping(“toBaidu”)
public String toBaidu() {
return “demo/baidu”;
/*
- 跳转到文件上传
*/
@RequestMapping(“toFilesupLoad”)
public String toFilesupLoad() {
return “demo/filesUpLoad”;
用户登录控制器:
/*
- 用户登录控制器
*/
@Controller
@RequestMapping(“login”)
public class LoginController {
@Autowired
private UserService userService;
@Autowired
private LogInfoService logInfoService;
/*
- 跳转到登录页面
*/
@RequestMapping(“toLogin”)
public String tologin() {
return “system/main/login”;
/*
- 登录方法
*/
@RequestMapping(“login”)
public String login(UserVo userVo, Model model) {
// 最外层的if是判断session是否为空 为空就跳转到登录界面
// uservo不可能为空的,只是里面的属性可能为空 所以要判断session是否为空 就要判断里面的属性 而不是判断userVo本身 (坑!)
if (null != userVo.getLoginname()) {
// String code = WebUtils.getHttpSession().getAttribute(“code”).toString();
// if (userVo.getCode().toLowerCase().equals(code)) {
User user = this.userService.login(userVo);
if (null != user) {
// 放入session
WebUtils.getHttpSession().setAttribute(“user”, user);
WebUtils.getHttpSession().setMaxInactiveInterval(240 * 60);
// 记录登录日志 向sys_login_log插入数据
LogInfoVo logInfoVo = new LogInfoVo();
logInfoVo.setLoginname(user.getRealname() + “-” + user.getLoginname());
logInfoVo.setLogintime(new Date());
// 外网Ip:WebUtils.getHttpServletRequest().getRemoteAddr()
// 内网ip:
InetAddress addr;
try {
addr = (InetAddress) InetAddress.getLocalHost();
logInfoVo.setLoginip(addr.getHostAddress().toString());// 获取Id地址
} catch (UnknownHostException e) {
e.printStackTrace();
// 添加
logInfoService.addLogInfo(logInfoVo);
return “system/main/index”;
} else {
model.addAttribute(“error”, SysConstast.USER_LOGIN_ERROR_MSG);
return “system/main/login”;
// } else {
// model.addAttribute(“error”, SysConstast.USER_LOGIN_CODE_ERROR_MSG);
// return “system/main/login”;
// }
} else {
return “system/main/login”;
};
/**
-
得到登录验证码
-
@throws IOException
*/
@RequestMapping(“getCode”)
public void getCode(HttpServletResponse response, HttpSession session) throws IOException {
// 定义图形验证码的长和宽
LineCaptcha lineCaptcha = CaptchaUtil.createLineCaptcha(116, 36, 4, 50);
Console.log(lineCaptcha.getCode());
session.setAttribute(“code”, lineCaptcha.getCode());
ServletOutputStream outputStream = response.getOutputStream();
ImageIO.write(lineCaptcha.getImage(), “JPEG”, outputStream);