基于javaweb的网上商城系统设计和实现(java+springboot+ssm+mysql+jsp)

基于javaweb的网上商城系统设计和实现(java+springboot+ssm+mysql+jsp)

运行环境

Java≥8、MySQL≥5.7

开发工具

eclipse/idea/myeclipse/sts等均可配置运行

适用

课程设计,大作业,毕业设计,项目练习,学习演示等

功能说明

20220519001803

20220519001804

20220519001806

20220519001807

20220519001808

基于javaweb+springboot的网上商城系统设计和实现(java+Springboot+ssm+mysql+jsp+maven)

一、项目简述

本系统主要实现的功能有: OnlineMall项目是一套电商系统,包括OnlineMall商城系 统及OnlineMall商城后台管理^统,基于Spring Boot 2.X 及相关技术栈开发。前台商城系统包含首页门户、商品分 类、新品上线、首页轮播、商品推荐、商品搜索、商品展 示、购物车、订单结算、订单流程、个人订单管理、会员 中心、帮助中心等模块。后台管理系统包含数据面板、轮 播图管理、商品管理、订单管理、会员管理、分类管理、 设置等模块。

二、项目运行

环境配置: Jdk1.8 + Tomcat8.5 + mysql + Eclispe (IntelliJ IDEA,Eclispe,MyEclispe,Sts 都支持)

项目技术: Springboot+ SpringMVC + MyBatis + ThymeLeaf + JavaScript + JQuery + Ajax + maven等等

管理员业务控制层:

/**

  • 管理员控制层

*/

@Controller

@RequestMapping(“/admin”)

public class AdminController {

@Resource

private AdminUserService adminUserService;

@GetMapping({“/login”})

public String login() {

return “admin/login”;

@GetMapping({“/test”})

public String test() {

return “admin/test”;

@GetMapping({“”, “/”, “/index”, “/index.html”})

public String index(HttpServletRequest request) {

request.setAttribute(“path”, “index”);

request.setAttribute(“categoryCount”, 0);

request.setAttribute(“blogCount”, 0);

request.setAttribute(“linkCount”, 0);

request.setAttribute(“tagCount”, 0);

request.setAttribute(“commentCount”, 0);

request.setAttribute(“path”, “index”);

return “admin/index”;

@PostMapping(value = “/login”)

public String login(@RequestParam(“userName”) String userName,

@RequestParam(“password”) String password,

@RequestParam(“verifyCode”) String verifyCode,

HttpSession session) {

if (StringUtils.isEmpty(verifyCode)) {

session.setAttribute(“errorMsg”, “验证码不能为空”);

return “admin/login”;

if (StringUtils.isEmpty(userName) || StringUtils.isEmpty(password)) {

session.setAttribute(“errorMsg”, “用户名或密码不能为空”);

return “admin/login”;

String kaptchaCode = session.getAttribute(“verifyCode”) + “”;

if (StringUtils.isEmpty(kaptchaCode) || !verifyCode.equals(kaptchaCode)) {

session.setAttribute(“errorMsg”, “验证码错误”);

return “admin/login”;

AdminUser adminUser = adminUserService.login(userName, password);

if (adminUser != null) {

session.setAttribute(“loginUser”, adminUser.getNickName());

session.setAttribute(“loginUserId”, adminUser.getAdminUserId());

//session过期时间设置为7200秒 即两小时

//session.setMaxInactiveInterval(60 * 60 * 2);

return “redirect:/admin/index”;

} else {

session.setAttribute(“errorMsg”, “登陆失败,请联系作者获得测试账号”);

return “admin/login”;

@GetMapping(“/profile”)

public String profile(HttpServletRequest request) {

Integer loginUserId = (int) request.getSession().getAttribute(“loginUserId”);

AdminUser adminUser = adminUserService.getUserDetailById(loginUserId);

if (adminUser == null) {

return “admin/login”;

request.setAttribute(“path”, “profile”);

request.setAttribute(“loginUserName”, adminUser.getLoginUserName());

request.setAttribute(“nickName”, adminUser.getNickName());

return “admin/profile”;

@PostMapping(“/profile/password”)

@ResponseBody

public String passwordUpdate(HttpServletRequest request, @RequestParam(“originalPassword”) String originalPassword,

@RequestParam(“newPassword”) String newPassword) {

if (StringUtils.isEmpty(originalPassword) || StringUtils.isEmpty(newPassword)) {

return “参数不能为空”;

Integer loginUserId = (int) request.getSession().getAttribute(“loginUserId”);

if (adminUserService.updatePassword(loginUserId, originalPassword, newPassword)) {

//修改成功后清空session中的数据,前端控制跳转至登录页

request.getSession().removeAttribute(“loginUserId”);

request.getSession().removeAttribute(“loginUser”);

request.getSession().removeAttribute(“errorMsg”);

return ServiceResultEnum.SUCCESS.getResult();

} else {

return “修改失败”;

@PostMapping(“/profile/name”)

@ResponseBody

public String nameUpdate(HttpServletRequest request, @RequestParam(“loginUserName”) String loginUserName,

@RequestParam(“nickName”) String nickName) {

if (StringUtils.isEmpty(loginUserName) || StringUtils.isEmpty(nickName)) {

return “参数不能为空”;

Integer loginUserId = (int) request.getSession().getAttribute(“loginUserId”);

if (adminUserService.updateName(loginUserId, loginUserName, nickName)) {

return ServiceResultEnum.SUCCESS.getResult();

} else {

return “修改失败”;

@GetMapping(“/logout”)

public String logout(HttpServletRequest request) {

request.getSession().removeAttribute(“loginUserId”);

request.getSession().removeAttribute(“loginUser”);

request.getSession().removeAttribute(“errorMsg”);

return “admin/login”;

验证码校验控制层:

/**

  • 验证码校验控制层

*/

@Controller

public class CommonController {

@Autowired

private DefaultKaptcha captchaProducer;

@GetMapping(“/common/kaptcha”)

public void defaultKaptcha(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception {

byte[] captchaOutputStream = null;

ByteArrayOutputStream imgOutputStream = new ByteArrayOutputStream();

try {

//生产验证码字符串并保存到session中

String verifyCode = captchaProducer.createText();

httpServletRequest.getSession().setAttribute(“verifyCode”, verifyCode);

BufferedImage challenge = captchaProducer.createImage(verifyCode);

ImageIO.write(challenge, “jpg”, imgOutputStream);

} catch (IllegalArgumentException e) {

httpServletResponse.sendError(HttpServletResponse.SC_NOT_FOUND);

return;

captchaOutputStream = imgOutputStream.toByteArray();

httpServletResponse.setHeader(“Cache-Control”, “no-store”);

httpServletResponse.setHeader(“Pragma”, “no-cache”);

httpServletResponse.setDateHeader(“Expires”, 0);

httpServletResponse.setContentType(“image/jpeg”);

ServletOutputStream responseOutputStream = httpServletResponse.getOutputStream();

responseOutputStream.write(captchaOutputStream);

responseOutputStream.flush();

responseOutputStream.close();

@GetMapping(“/common/mall/kaptcha”)

public void mallKaptcha(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception {

com.google.code.kaptcha.impl.DefaultKaptcha newBeeMallLoginKaptcha = new com.google.code.kaptcha.impl.DefaultKaptcha();

Properties properties = new Properties();

properties.put(“kaptcha.border”, “no”);

properties.put(“kaptcha.textproducer.font.color”, “27,174,171”);

properties.put(“kaptcha.noise.color”, “20,33,42”);

properties.put(“kaptcha.textproducer.font.size”, “30”);

properties.put(“kaptcha.image.width”, “110”);

properties.put(“kaptcha.image.height”, “40”);

properties.put(“kaptcha.session.key”, Constants.MALL_VERIFY_CODE_KEY);

properties.put(“kaptcha.textproducer.char.space”, “2”);

properties.put(“kaptcha.textproducer.char.length”, “6”);

Config config = new Config(properties);

newBeeMallLoginKaptcha.setConfig(config);

byte[] captchaOutputStream = null;

ByteArrayOutputStream imgOutputStream = new ByteArrayOutputStream();

try {

//生产验证码字符串并保存到session中

String verifyCode = newBeeMallLoginKaptcha.createText();

httpServletRequest.getSession().setAttribute(Constants.MALL_VERIFY_CODE_KEY, verifyCode);

BufferedImage challenge = newBeeMallLoginKaptcha.createImage(verifyCode);

ImageIO.write(challenge, “jpg”, imgOutputStream);

} catch (IllegalArgumentException e) {

httpServletResponse.sendError(HttpServletResponse.SC_NOT_FOUND);

return;

captchaOutputStream = imgOutputStream.toByteArray();

httpServletResponse.setHeader(“Cache-Control”, “no-store”);

httpServletResponse.setHeader(“Pragma”, “no-cache”);

httpServletResponse.setDateHeader(“Expires”, 0);

httpServletResponse.setContentType(“image/jpeg”);

ServletOutputStream responseOutputStream = httpServletResponse.getOutputStream();

responseOutputStream.write(captchaOutputStream);

responseOutputStream.flush();

responseOutputStream.close();

全局异常处理控制层:

/**

  • 全局异常处理

*/

@RestControllerAdvice

public class NewBeeMallExceptionHandler {

@ExceptionHandler(Exception.class)

public Object handleException(Exception e, HttpServletRequest req) {

Result result = new Result();

result.setResultCode(500);

//区分是否为自定义异常

if (e instanceof NewBeeMallException) {

result.setMessage(e.getMessage());

} else {

e.printStackTrace();

result.setMessage(“未知异常,请联系管理员”);

//检查请求是否为ajax, 如果是 ajax 请求则返回 Result json串, 如果不是 ajax 请求则返回 error 视图

String contentTypeHeader = req.getHeader(“Content-Type”);

String acceptHeader = req.getHeader(“Accept”);

String xRequestedWith = req.getHeader(“X-Requested-With”);

if ((contentTypeHeader != null && contentTypeHeader.contains(“application/json”))

|| (acceptHeader != null && acceptHeader.contains(“application/json”))

|| “XMLHttpRequest”.equalsIgnoreCase(xRequestedWith)) {

return result;

} else {

ModelAndView modelAndView = new ModelAndView();

modelAndView.addObject(“message”, e.getMessage());

modelAndView.addObject(“url”, req.getRequestURL());

modelAndView.addObject(“stackTrace”, e.getStackTrace());

modelAndView.addObject(“author”, “十三”);

modelAndView.addObject(“ltd”, “新峰商城”);

modelAndView.setViewName(“error/error”);

return modelAndView;


  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
网选课系统是一个非常实用的系统,可以方便学生进行选课操作,也可以方便教师进行课程管理。下面是一个基于JavaWeb的网上选课系统设计思路: 1. 系统架构 该系统采用 B/S 架构,即浏览器/服务器架构。前端使用 HTML、CSS、JavaScript 和 JQuery,后端使用 Java+SSM 框架和 MySQL 数据库。 2. 系统功能 (1)学生模块:学生可以登录系统后进行选课操作,查看已选课程,并对已选课程进行退选操作。 (2)教师模块:教师可以登录系统后进行课程管理操作,包括添加课程、修改课程、删除课程等操作。 (3)管理员模块:管理员可以登录系统后对学生和教师进行管理,包括添加学生、添加教师、修改学生信息、修改教师信息等操作。 (4)公告管理:管理员可以发布公告,学生和教师可以浏览公告。 (5)选课规则管理:管理员可以设置选课规则,例如每个学生最多选择多少门课程,每门课程最多选多少人等。 3. 数据库设计系统需要设计以下数据库表: (1)学生表:包括学生编号、学生姓名、学生性别、学生年龄、所在班级等字段。 (2)教师表:包括教师编号、教师姓名、教师性别、所教课程、教龄等字段。 (3)课程表:包括课程编号、课程名称、授课教师、上课时间、选课人数等字段。 (4)选课记录表:包括学生编号、课程编号等字段。 (5)公告表:包括公告编号、公告内容、发布时间等字段。 4. 技术实现系统采用 Java+SSM 框架进行实现,其中: (1)后端技术:采用 SpringMVC 框架进行控制器的开发,采用 MyBatis 框架进行数据库操作。 (2)前端技术:采用 HTML、CSS、JavaScript 和 JQuery 进行页面布局和交互效果的实现。 (3)数据库技术:采用 MySQL 数据库进行数据存储和管理。 5. 总结 网上选课系统是一个非常实用的系统,它可以方便学生进行选课操作,也可以方便教师进行课程管理。该系统采用 B/S 架构,采用 Java+SSM 框架进行开发,实现了学生模块、教师模块、管理员模块、公告管理和选课规则管理等功能。在实现时需要注意数据库表的设计和技术实现

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值