sql_1">👉文末查看项目功能视频演示+获取源码+sql脚本+视频导入教程视频
1 、功能描述
基于SSM的垃圾分类管理系统拥有两种角色:用户和管理员。具体功能如下:
1.1 背景描述
基于SSM的垃圾分类管理系统采用Spring、SpringMVC和MyBatis框架,实现了垃圾分类、回收、统计等核心功能。该系统可便捷地添加、查询和分类垃圾信息,提高垃圾分类效率,促进环保事业。界面简洁,操作方便,可广泛应用于小区、学校等场所。通过该系统,用户可轻松掌握垃圾分类知识,养成良好的垃圾分类习惯,共同构建美好的生活环境。
2、项目技术
后端框架:SSM(Spring、SpringMVC、Mybatis)
前端框架:Bootstrap、html、css、JavaScript、JQuery
2.1 SSM
SSM(Spring+SpringMVC+MyBatis)是目前比较主流的Java EE企业级框架,适用于搭建各种大型的企业级应用系统。其中,Spring就像是整个项目中的粘合剂,负责装配bean并管理其生命周期,实现控制反转(IoC)的功能。SpringMVC负责拦截用户请求,通过DispatcherServlet将请求匹配到相应的Controller并执行。而MyBatis则是对JDBC的封装,让数据库底层操作变得透明,通过配置文件关联到各实体类的Mapper文件,实现了SQL语句映射。
sql_14">2.2 mysql
MySQL是一款Relational Database Management System,直译过来的意思就是关系型数据库管理系统,MySQL有着它独特的特点,这些特点使他成为目前最流行的RDBMS之一,MySQL想比与其他数据库如ORACLE、DB2等,它属于一款体积小、速度快的数据库,重点是它符合本次毕业设计的真实租赁环境,拥有成本低,开发源码这些特点,这也是选择它的主要原因。
3、开发环境
- JAVA版本:JDK1.8,其它版本理论上可以
- IDE类型:IDEA、Eclipse、Myeclipse都可以。推荐IDEA与Eclipse
- tomcat版本:Tomcat 7.x、8.x、9.x、10.x版本均可
- 数据库版本:MySql 5.5-8.0
- maven版本:无限制
- 硬件环境:Windows 或者 Mac OS
4、功能截图+视频演示+文档目录
4.1 登录
4.2用户 模块
- 垃圾分类信息:用户可以根据垃圾分类名字,查询分类信息
- 垃圾运输信息:用户可以查看自己小区对应的垃圾运输信息
- 报修信息:用户可以根据关键词搜索自己报修过的信息,并能够增、删、改
- 留言信息:用户可以根据关键词搜索自己留言过的信息,并能够增、删、改
- 垃圾站信息:用户可以根据垃圾站名搜索垃圾站信息
4.3 管理员模块
- 小区管理:管理员可以根据小区名搜索小区信息,并能增删改查,还能禁止或开启小区账户
- 垃圾运输信息管理:管理员可以增删改垃圾运输信息
- 垃圾分类管理:管理员可以根据垃圾分类名搜索,,并能增删改查
- 垃圾站管理:管理员可以根据垃圾站名搜索,并能增删改查
- 报修管理:管理员可以根据关键字和小区名(即业主)搜索报修信息,并能修改信息的状态(状态分为“待处理”和“已完成”)
- 投诉管理:管理员可以根据关键字和小区名(即业主)搜索投诉信息,并能修改信息的状态
4.4 设计文档目录
5 、核心代码实现
5.1 配置代码
jdbc.url=jdbc:mysql://localhost:3306/database?characterEncoding=utf8&useSSL=false&serverTimezone=UTC&rewriteBatchedStatements=true&allowPublicKeyRetrieval=true
jdbc.username=root
jdbc.password=200212jdbc.initialSize=5
jdbc.maxActive=30jdbc.minPoolSize=2
jdbc.maxIdleTime=30000
jdbc.idleConnectionTestPeriod=100
5.2 其它核心代码
package com.learn.controller;import com.learn.entity.SysUserEntity;
import com.learn.service.SysUserService;
import com.learn.utils.R;
import com.learn.utils.ShiroUtils;import java.awt.image.BufferedImage;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;import javax.imageio.ImageIO;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;import org.apache.shiro.authc.AuthenticationException;
import org.apache.shiro.authc.IncorrectCredentialsException;
import org.apache.shiro.authc.LockedAccountException;
import org.apache.shiro.authc.UnknownAccountException;
import org.apache.shiro.authc.UsernamePasswordToken;
import org.apache.shiro.crypto.hash.Sha256Hash;
import org.apache.shiro.subject.Subject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;import com.google.code.kaptcha.Constants;
import com.google.code.kaptcha.Producer;/**** 登录相关*/
@Controller
public class SysLoginController {@Autowiredprivate Producer producer;@Autowiredprivate SysUserService sysUserService;@RequestMapping("captcha.jpg")public void captcha(HttpServletResponse response) throws ServletException, IOException {response.setHeader("Cache-Control", "no-store, no-cache");response.setContentType("image/jpeg");//生成文字验证码String text = producer.createText();//生成图片验证码BufferedImage image = producer.createImage(text);//保存到shiro sessionShiroUtils.setSessionAttribute(Constants.KAPTCHA_SESSION_KEY, text);ServletOutputStream out = response.getOutputStream();ImageIO.write(image, "jpg", out);}/*** 登录*/@ResponseBody@RequestMapping(value = "/sys/login", method = RequestMethod.POST)public R login(String username, String password, String captcha) throws IOException {String kaptcha = ShiroUtils.getKaptcha(Constants.KAPTCHA_SESSION_KEY);System.out.println("==验证码=="+kaptcha);System.out.println("==password=="+password);System.out.println("==username=="+username);if(!captcha.equalsIgnoreCase(kaptcha)){return R.error("验证码不正确");}if(password==null){return R.error("密码不能为空");}try {Subject subject = ShiroUtils.getSubject();//sha256加密password = new Sha256Hash(password).toHex();System.out.println("==sha256加密==="+password);UsernamePasswordToken token = new UsernamePasswordToken(username, password);subject.login(token);} catch (UnknownAccountException e) {return R.error(e.getMessage());} catch (IncorrectCredentialsException e) {return R.error(e.getMessage());} catch (LockedAccountException e) {return R.error(e.getMessage());} catch (AuthenticationException e) {return R.error("账户验证失败");}return R.ok();}/***/@ResponseBody@RequestMapping(value = "/sys/reg", method = RequestMethod.POST)public R reg(String username, String password, String captcha) throws IOException {
// String kaptcha = ShiroUtils.getKaptcha(Constants.KAPTCHA_SESSION_KEY);
// if(!captcha.equalsIgnoreCase(kaptcha)){
// return R.error("验证码不正确");
// }//sha256加密SysUserEntity user = new SysUserEntity();user.setUsername(username);user.setPassword(password);user.setStatus(1);List<Long> roles = new ArrayList<>();roles.add(1L);user.setRoleIdList(roles);this.sysUserService.save(user);return R.ok();}/*** 退出*/@RequestMapping(value = "logout", method = RequestMethod.GET)public String logout() {ShiroUtils.logout();return "redirect:login.html";}}
6 、功能视频演示
基于SSM的垃圾分类管理系统