• ssm垃圾分类管理系统


    作者主页:夜未央5788

     简介:Java领域优质创作者、Java项目、学习资料、技术互助

    文末获取源码

    项目介绍

    垃圾分类管理系统采用的是B/S的结构。系统管理员具有小区管理、垃圾分类信息、垃圾站信息、垃圾运输信息、垃圾信息、报修管理,投诉管理等功能。本系统界面简单直观,易于操作和使用,交互性强。

    环境需要

    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.是否Maven项目: 是;查看源码目录中是否包含pom.xml;若包含,则为maven项目,否则为非maven项目 

    6.数据库:MySql 5.7版本;

    技术栈

    1. 后端:Spring SpringMVC MyBatis

    2. 前端:HTML+CSS+Javascript+jQuery+bootstrap

    使用说明

    1. 使用Navicat或者其它工具,在mysql中创建对应名称的数据库,并导入项目的sql文件;

    2. 将项目中yml配置文件中的数据库配置改为自己的配置

    3. 使用IDEA/Eclipse/MyEclipse导入项目,Eclipse/MyEclipse导入时,若为maven项目请选择maven;

    若为maven项目,导入成功后请执行maven clean;maven install命令,配置tomcat,然后运行;

    4. 运行项目,输入localhost:8080/ 登录

    5. 账户admin  密码123123

    运行截图

     

     

     

     

     

     

    相关代码

    登录控制器

    1. /**
    2. *
    3. * 登录相关
    4. */
    5. @Controller
    6. public class SysLoginController {
    7. @Autowired
    8. private Producer producer;
    9. @Autowired
    10. private SysUserService sysUserService;
    11. @RequestMapping("captcha.jpg")
    12. public void captcha(HttpServletResponse response) throws ServletException, IOException {
    13. response.setHeader("Cache-Control", "no-store, no-cache");
    14. response.setContentType("image/jpeg");
    15. //生成文字验证码
    16. String text = producer.createText();
    17. //生成图片验证码
    18. BufferedImage image = producer.createImage(text);
    19. //保存到shiro session
    20. ShiroUtils.setSessionAttribute(Constants.KAPTCHA_SESSION_KEY, text);
    21. ServletOutputStream out = response.getOutputStream();
    22. ImageIO.write(image, "jpg", out);
    23. }
    24. /**
    25. * 登录
    26. */
    27. @ResponseBody
    28. @RequestMapping(value = "/sys/login", method = RequestMethod.POST)
    29. public R login(String username, String password, String captcha) throws IOException {
    30. String kaptcha = ShiroUtils.getKaptcha(Constants.KAPTCHA_SESSION_KEY);
    31. System.out.println("==验证码=="+kaptcha);
    32. System.out.println("==password=="+password);
    33. System.out.println("==username=="+username);
    34. if(!captcha.equalsIgnoreCase(kaptcha)){
    35. return R.error("验证码不正确");
    36. }
    37. if(password==null){
    38. return R.error("密码不能为空");
    39. }
    40. try {
    41. Subject subject = ShiroUtils.getSubject();
    42. //sha256加密
    43. password = new Sha256Hash(password).toHex();
    44. System.out.println("==sha256加密==="+password);
    45. UsernamePasswordToken token = new UsernamePasswordToken(username, password);
    46. subject.login(token);
    47. } catch (UnknownAccountException e) {
    48. return R.error(e.getMessage());
    49. } catch (IncorrectCredentialsException e) {
    50. return R.error(e.getMessage());
    51. } catch (LockedAccountException e) {
    52. return R.error(e.getMessage());
    53. } catch (AuthenticationException e) {
    54. return R.error("账户验证失败");
    55. }
    56. return R.ok();
    57. }
    58. /**
    59. */
    60. @ResponseBody
    61. @RequestMapping(value = "/sys/reg", method = RequestMethod.POST)
    62. public R reg(String username, String password, String captcha) throws IOException {
    63. // String kaptcha = ShiroUtils.getKaptcha(Constants.KAPTCHA_SESSION_KEY);
    64. // if(!captcha.equalsIgnoreCase(kaptcha)){
    65. // return R.error("验证码不正确");
    66. // }
    67. //sha256加密
    68. SysUserEntity user = new SysUserEntity();
    69. user.setUsername(username);
    70. user.setPassword(password);
    71. user.setStatus(1);
    72. List<Long> roles = new ArrayList<>();
    73. roles.add(1L);
    74. user.setRoleIdList(roles);
    75. this.sysUserService.save(user);
    76. return R.ok();
    77. }
    78. /**
    79. * 退出
    80. */
    81. @RequestMapping(value = "logout", method = RequestMethod.GET)
    82. public String logout() {
    83. ShiroUtils.logout();
    84. return "redirect:login.html";
    85. }
    86. }

    用户控制器

    1. /**
    2. *
    3. * 系统用户
    4. *
    5. */
    6. @RestController
    7. @RequestMapping("/sys/user")
    8. public class SysUserController extends AbstractController {
    9. @Autowired
    10. private SysUserService sysUserService;
    11. @Autowired
    12. private SysUserRoleService sysUserRoleService;
    13. /**
    14. * 所有用户列表
    15. */
    16. @RequestMapping("/list")
    17. public R list(@RequestParam Map<String, Object> params) {
    18. //查询列表数据
    19. Query query = new Query(params);
    20. List<SysUserEntity> userList = sysUserService.queryList(query);
    21. int total = sysUserService.queryTotal(query);
    22. PageUtils pageUtil = new PageUtils(userList, total, query.getLimit(), query.getPage());
    23. return R.ok().put("page", pageUtil);
    24. }
    25. @RequestMapping("/list2")
    26. public R list2(@RequestParam Map<String, Object> params) {
    27. //查询列表数据
    28. Query query = new Query(params);
    29. List<SysUserEntity> userList = sysUserService.queryList(query);
    30. return R.ok().put("list", userList);
    31. }
    32. /**
    33. * 获取登录的用户信息
    34. */
    35. @RequestMapping("/info")
    36. public R info() {
    37. return R.ok().put("user", this.sysUserService.queryObject(getUser().getUserId()));
    38. }
    39. /**
    40. * 修改登录用户密码
    41. */
    42. @SysLog("修改密码")
    43. @RequestMapping("/password")
    44. public R password(String password, String newPassword) {
    45. Assert.isBlank(newPassword, "新密码不为能空");
    46. //sha256加密
    47. password = new Sha256Hash(password).toHex();
    48. //sha256加密
    49. newPassword = new Sha256Hash(newPassword).toHex();
    50. //更新密码
    51. int count = sysUserService.updatePassword(getUserId(), password, newPassword);
    52. if (count == 0) {
    53. return R.error("原密码不正确");
    54. }
    55. //退出
    56. ShiroUtils.logout();
    57. return R.ok();
    58. }
    59. @SysLog("修改个人信息")
    60. @RequestMapping("/updateInfo")
    61. public R updateInfo(@RequestBody SysUserEntity user) {
    62. this.sysUserService.update(user);
    63. return R.ok();
    64. }
    65. /**
    66. * 用户信息
    67. */
    68. @RequestMapping("/info/{userId}")
    69. public R info(@PathVariable("userId") Long userId) {
    70. SysUserEntity user = sysUserService.queryObject(userId);
    71. //获取用户所属的角色列表
    72. List<Long> roleIdList = sysUserRoleService.queryRoleIdList(userId);
    73. user.setRoleIdList(roleIdList);
    74. return R.ok().put("user", user);
    75. }
    76. /**
    77. * 保存用户
    78. */
    79. @SysLog("保存用户")
    80. @RequestMapping("/save")
    81. public R save(@RequestBody SysUserEntity user) {
    82. ValidatorUtils.validateEntity(user, AddGroup.class);
    83. user.setCreateUserId(getUserId());
    84. sysUserService.save(user);
    85. return R.ok();
    86. }
    87. /**
    88. * 修改用户
    89. */
    90. @SysLog("修改用户")
    91. @RequestMapping("/update")
    92. public R update(@RequestBody SysUserEntity user) {
    93. ValidatorUtils.validateEntity(user, UpdateGroup.class);
    94. user.setCreateUserId(getUserId());
    95. sysUserService.update(user);
    96. return R.ok();
    97. }
    98. /**
    99. * 删除用户
    100. */
    101. @SysLog("删除用户")
    102. @RequestMapping("/delete")
    103. public R delete(@RequestBody Long[] userIds) {
    104. if (ArrayUtils.contains(userIds, 1L) || ArrayUtils.contains(userIds, -1L)) {
    105. return R.error("系统管理员不能删除");
    106. }
    107. if (ArrayUtils.contains(userIds, getUserId())) {
    108. return R.error("当前用户不能删除");
    109. }
    110. sysUserService.deleteBatch(userIds);
    111. return R.ok();
    112. }
    113. }

    如果也想学习本系统,下面领取。回复:030ssm  

  • 相关阅读:
    Leetcode 剑指 Offer II 043. 完全二叉树插入器
    php倒叙
    JWT 实现登录认证 + Token 自动续期方案
    【问题总结】级数的括号可以拆吗?
    【C++】-- 红黑树详解
    Spring整合RabbitMQ-注解方式
    《网络协议》08. 概念补充
    1.6 计算机网络的性能
    Prompt Engineering
    封装MyBatis输出结果-简单类型,对象类型,map,resulemap,模糊查询
  • 原文地址:https://blog.csdn.net/hanyunlong1989/article/details/125513547