基于javaweb+mysql的ssm工艺品商城系统(java+ssm+jsp+bootstrap+mysql)

基于javaweb+mysql的ssm工艺品商城系统(java+ssm+jsp+bootstrap+mysql)

运行环境

Java≥8、MySQL≥5.7、Tomcat≥8

开发工具

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

适用

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

功能说明

基于javaweb+mysql的SSM工艺品商城系统(java+ssm+jsp+bootstrap+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项目:是;

技术栈

  1. 后端:Spring+SpringMVC+Mybatis 2. 前端:JSP+CSS+JavaScript+jQuery+Bootstrap

使用说明

  1. 使用Navicat或者其它工具,在mysql中创建对应名称的数据库,并导入项目的sql文件; 2. 使用IDEA/Eclipse/MyEclipse导入项目,Eclipse/MyEclipse导入时,若为maven项目请选择maven; 若为maven项目,导入成功后请执行maven clean;maven install命令,然后运行; 3. 将项目中db.properties配置文件中的数据库配置改为自己的配置; 4. 运行项目,在浏览器中输入http://localhost:8080/ssm_gypxs_shop/ 登录

//添加失败

return ResultGenerator.genFailResult(saveResult);

@PutMapping("/shop-cart")

@ResponseBody

public Result updateNewBeeMallShoppingCartItem(@RequestBody NewBeeMallShoppingCartItem newBeeMallShoppingCartItem,

HttpSession httpSession) {

NewBeeMallUserVO user = (NewBeeMallUserVO) httpSession.getAttribute(Constants.MALL_USER_SESSION_KEY);

newBeeMallShoppingCartItem.setUserId(user.getUserId());

//todo 判断数量

String updateResult = newBeeMallShoppingCartService.updateNewBeeMallCartItem(newBeeMallShoppingCartItem);


@PutMapping("/orders/{orderNo}/cancel")

@ResponseBody

public Result cancelOrder(@PathVariable("orderNo") String orderNo, HttpSession httpSession) {

NewBeeMallUserVO user = (NewBeeMallUserVO) httpSession.getAttribute(Constants.MALL_USER_SESSION_KEY);

String cancelOrderResult = newBeeMallOrderService.cancelOrder(orderNo, user.getUserId());

if (ServiceResultEnum.SUCCESS.getResult().equals(cancelOrderResult)) {

return ResultGenerator.genSuccessResult();

} else {

return ResultGenerator.genFailResult(cancelOrderResult);

@PutMapping("/orders/{orderNo}/finish")

@ResponseBody

if (CollectionUtils.isEmpty(myShoppingCartItems)) {

//无数据则不跳转至结算页

return "/shop-cart";

} else {

//总价

for (NewBeeMallShoppingCartItemVO newBeeMallShoppingCartItemVO : myShoppingCartItems) {

priceTotal += newBeeMallShoppingCartItemVO.getGoodsCount() * newBeeMallShoppingCartItemVO.getSellingPrice();

if (priceTotal < 1) {

return "error/error_5xx";

request.setAttribute("priceTotal", priceTotal);

request.setAttribute("myShoppingCartItems", myShoppingCartItems);


@GetMapping("/selectPayType")

public String selectPayType(HttpServletRequest request, @RequestParam("orderNo") String orderNo, HttpSession httpSession) {

NewBeeMallUserVO user = (NewBeeMallUserVO) httpSession.getAttribute(Constants.MALL_USER_SESSION_KEY);

NewBeeMallOrder newBeeMallOrder = newBeeMallOrderService.getNewBeeMallOrderByOrderNo(orderNo);

//todo 判断订单userId

//todo 判断订单状态

request.setAttribute("orderNo", orderNo);

request.setAttribute("totalPrice", newBeeMallOrder.getTotalPrice());

return "mall/pay-select";

@GetMapping("/payPage")

@PostMapping("/shop-cart")

@ResponseBody

public Result saveNewBeeMallShoppingCartItem(@RequestBody NewBeeMallShoppingCartItem newBeeMallShoppingCartItem,

HttpSession httpSession) {

NewBeeMallUserVO user = (NewBeeMallUserVO) httpSession.getAttribute(Constants.MALL_USER_SESSION_KEY);

newBeeMallShoppingCartItem.setUserId(user.getUserId());

//todo 判断数量

String saveResult = newBeeMallShoppingCartService.saveNewBeeMallCartItem(newBeeMallShoppingCartItem);

//添加成功

if (ServiceResultEnum.SUCCESS.getResult().equals(saveResult)) {

return ResultGenerator.genSuccessResult();

//添加失败

return ResultGenerator.genFailResult(saveResult);

request.setAttribute("itemsTotal", itemsTotal);

request.setAttribute("priceTotal", priceTotal);

request.setAttribute("myShoppingCartItems", myShoppingCartItems);

return "mall/cart";

@PostMapping("/shop-cart")

@ResponseBody

public Result saveNewBeeMallShoppingCartItem(@RequestBody NewBeeMallShoppingCartItem newBeeMallShoppingCartItem,

HttpSession httpSession) {

NewBeeMallUserVO user = (NewBeeMallUserVO) httpSession.getAttribute(Constants.MALL_USER_SESSION_KEY);

newBeeMallShoppingCartItem.setUserId(user.getUserId());

//todo 判断数量

String saveResult = newBeeMallShoppingCartService.saveNewBeeMallCartItem(newBeeMallShoppingCartItem);

//添加成功


newBeeMallShoppingCartItem.setUserId(user.getUserId());

//todo 判断数量

String updateResult = newBeeMallShoppingCartService.updateNewBeeMallCartItem(newBeeMallShoppingCartItem);

//修改成功

if (ServiceResultEnum.SUCCESS.getResult().equals(updateResult)) {

return ResultGenerator.genSuccessResult();

//修改失败

return ResultGenerator.genFailResult(updateResult);

@DeleteMapping("/shop-cart/{newBeeMallShoppingCartItemId}")

@ResponseBody

NewBeeMallUserVO user = (NewBeeMallUserVO) httpSession.getAttribute(Constants.MALL_USER_SESSION_KEY);

Boolean deleteResult = newBeeMallShoppingCartService.deleteById(newBeeMallShoppingCartItemId);

//删除成功

if (deleteResult) {

return ResultGenerator.genSuccessResult();

//删除失败

return ResultGenerator.genFailResult(ServiceResultEnum.OPERATE_ERROR.getResult());

@GetMapping("/shop-cart/settle")

public String settlePage(HttpServletRequest request,

HttpSession httpSession) {


newBeeMallShoppingCartItem.setUserId(user.getUserId());

//todo 判断数量

String saveResult = newBeeMallShoppingCartService.saveNewBeeMallCartItem(newBeeMallShoppingCartItem);

//添加成功

if (ServiceResultEnum.SUCCESS.getResult().equals(saveResult)) {

return ResultGenerator.genSuccessResult();

//添加失败

return ResultGenerator.genFailResult(saveResult);

@PutMapping("/shop-cart")

@ResponseBody

public Result updateNewBeeMallShoppingCartItem(@RequestBody NewBeeMallShoppingCartItem newBeeMallShoppingCartItem,

request.setAttribute("myShoppingCartItems", myShoppingCartItems);

return "mall/order-settle";

订单管理控制层:

@Controller

public class OrderController {

@Resource

private NewBeeMallShoppingCartService newBeeMallShoppingCartService;

@Resource

private NewBeeMallOrderService newBeeMallOrderService;

@GetMapping("/orders/{orderNo}")

public String orderDetailPage(HttpServletRequest request, @PathVariable("orderNo") String orderNo, HttpSession httpSession) {

NewBeeMallUserVO user = (NewBeeMallUserVO) httpSession.getAttribute(Constants.MALL_USER_SESSION_KEY);

NewBeeMallOrderDetailVO orderDetailVO = newBeeMallOrderService.getOrderDetailByOrderNo(orderNo, user.getUserId());

NewBeeMallUserVO user = (NewBeeMallUserVO) httpSession.getAttribute(Constants.MALL_USER_SESSION_KEY);

String cancelOrderResult = newBeeMallOrderService.cancelOrder(orderNo, user.getUserId());

if (ServiceResultEnum.SUCCESS.getResult().equals(cancelOrderResult)) {

return ResultGenerator.genSuccessResult();

} else {

return ResultGenerator.genFailResult(cancelOrderResult);

@PutMapping("/orders/{orderNo}/finish")

@ResponseBody

public Result finishOrder(@PathVariable("orderNo") String orderNo, HttpSession httpSession) {

NewBeeMallUserVO user = (NewBeeMallUserVO) httpSession.getAttribute(Constants.MALL_USER_SESSION_KEY);

String finishOrderResult = newBeeMallOrderService.finishOrder(orderNo, user.getUserId());

return ResultGenerator.genFailResult(updateResult);

@DeleteMapping("/shop-cart/{newBeeMallShoppingCartItemId}")

@ResponseBody

public Result updateNewBeeMallShoppingCartItem(@PathVariable("newBeeMallShoppingCartItemId") Long newBeeMallShoppingCartItemId,

HttpSession httpSession) {

NewBeeMallUserVO user = (NewBeeMallUserVO) httpSession.getAttribute(Constants.MALL_USER_SESSION_KEY);

Boolean deleteResult = newBeeMallShoppingCartService.deleteById(newBeeMallShoppingCartItemId);

//删除成功

if (deleteResult) {

return ResultGenerator.genSuccessResult();

//删除失败

public String saveOrder(HttpSession httpSession) {

NewBeeMallUserVO user = (NewBeeMallUserVO) httpSession.getAttribute(Constants.MALL_USER_SESSION_KEY);

List<NewBeeMallShoppingCartItemVO> myShoppingCartItems = newBeeMallShoppingCartService.getMyShoppingCartItems(user.getUserId());

if (StringUtils.isEmpty(user.getAddress().trim())) {

//无收货地址

NewBeeMallException.fail(ServiceResultEnum.NULL_ADDRESS_ERROR.getResult());

if (CollectionUtils.isEmpty(myShoppingCartItems)) {

//购物车中无数据则跳转至错误页

NewBeeMallException.fail(ServiceResultEnum.SHOPPING_ITEM_ERROR.getResult());

//保存订单并返回订单号

String saveOrderResult = newBeeMallOrderService.saveOrder(user, myShoppingCartItems);

//跳转到订单详情页

return "redirect:/orders/" + saveOrderResult;


} else {

//总价

for (NewBeeMallShoppingCartItemVO newBeeMallShoppingCartItemVO : myShoppingCartItems) {

priceTotal += newBeeMallShoppingCartItemVO.getGoodsCount() * newBeeMallShoppingCartItemVO.getSellingPrice();

if (priceTotal < 1) {

return "error/error_5xx";

request.setAttribute("priceTotal", priceTotal);

request.setAttribute("myShoppingCartItems", myShoppingCartItems);

return "mall/order-settle";

订单管理控制层:

@Controller

public class OrderController {


request.setAttribute("orderNo", orderNo);

request.setAttribute("totalPrice", newBeeMallOrder.getTotalPrice());

if (payType == 1) {

return "mall/alipay";

} else {

return "mall/wxpay";

@GetMapping("/paySuccess")

@ResponseBody

public Result paySuccess(@RequestParam("orderNo") String orderNo, @RequestParam("payType") int payType) {

String payResult = newBeeMallOrderService.paySuccess(orderNo, payType);


public class OrderController {

@Resource

private NewBeeMallShoppingCartService newBeeMallShoppingCartService;

@Resource

private NewBeeMallOrderService newBeeMallOrderService;

@GetMapping("/orders/{orderNo}")

public String orderDetailPage(HttpServletRequest request, @PathVariable("orderNo") String orderNo, HttpSession httpSession) {

NewBeeMallUserVO user = (NewBeeMallUserVO) httpSession.getAttribute(Constants.MALL_USER_SESSION_KEY);

NewBeeMallOrderDetailVO orderDetailVO = newBeeMallOrderService.getOrderDetailByOrderNo(orderNo, user.getUserId());

if (orderDetailVO == null) {


//封装分类数据

if (params.containsKey("goodsCategoryId") && !StringUtils.isEmpty(params.get("goodsCategoryId") + "")) {

Long categoryId = Long.valueOf(params.get("goodsCategoryId") + "");

SearchPageCategoryVO searchPageCategoryVO = newBeeMallCategoryService.getCategoriesForSearch(categoryId);

if (searchPageCategoryVO != null) {

request.setAttribute("goodsCategoryId", categoryId);

request.setAttribute("searchPageCategoryVO", searchPageCategoryVO);

//封装参数供前端回显

if (params.containsKey("orderBy") && !StringUtils.isEmpty(params.get("orderBy") + "")) {

request.setAttribute("orderBy", params.get("orderBy") + "");


//购物项总数

itemsTotal = myShoppingCartItems.stream().mapToInt(NewBeeMallShoppingCartItemVO::getGoodsCount).sum();

if (itemsTotal < 1) {

return "error/error_5xx";

//总价

for (NewBeeMallShoppingCartItemVO newBeeMallShoppingCartItemVO : myShoppingCartItems) {

priceTotal += newBeeMallShoppingCartItemVO.getGoodsCount() * newBeeMallShoppingCartItemVO.getSellingPrice();

if (priceTotal < 1) {

return "error/error_5xx";

request.setAttribute("itemsTotal", itemsTotal);

request.setAttribute("priceTotal", priceTotal);

request.setAttribute("myShoppingCartItems", myShoppingCartItems);

请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【资源说明】 1、基于JavaWEB+SSM+mysql框架构建的在线商城系统源码+数据库+项目说明(课程设计).zip 2、该资源包括项目的全部源码,下载可以直接使用! 3、本项目适合作为计算机、数学、电子信息等专业的课程设计、期末大作业和毕设项目,作为参考资料学习借鉴。 4、本资源作为“参考资料”如果需要实现其他功能,需要能看懂代码,并且热爱钻研,自行调试。 # 小小商城系统 - SSM版 练手 JavaWEB 项目,本版本为SSM版。本项目实现了通用 Mapper,免写 SQL,全自动处理关联查询。通过合理配置 MyBatis Generator 和自定义插件,灵活隔离手写代码和自动生成代码。实现了 BaseService 类对 Service 层进行抽象。通过拦截器实现了方法级粒度的鉴权,通过AOP实现了参数校验。 --------------------------- **演示**:[https://small.ડ.com/][1] 可自行注册账号,或使用后台查看权限账号 demo 密码 demo (后台入口登陆后显示) 兄弟项目: [SSH版(实现了SSM版95%功能)][3] [Servlet版(实现了SSM版85%功能)][2] ---------------------------- 本项目的亮点: * 功能齐全,页面丰富,实现了小商城的大部分功能 * 前端仿天猫2017页面,基于原生 CSS(前台)、Bootstrap(后台)、Jquery、Bootstrap Js 构建 * 本项目为 Maven 项目,后端使用 Spring 4 + SpringMVC 4 + Mybatis 3.4 + aspectj 1.8 * 实现了一个 **通用mapper**,免写 SQL,可进行单表和多表关联查询,自动插入一对多/多对一对象(注解配置关联对象,结合 MyBatis Generator ) * 实现了一个 **BaseService 类** ,集成了多条件的查询和增改删操作,普通 Service 只需写少量代码即可 * 完全**隔离** MyBatis Generator 生成代码和额外手写代码,以支持可持续化部署,实现了**多个MyBatis Generator插件**,全部采用软删除 * 通过拦截器和自定义注解实现了方法级粒度的**用户鉴权** ,不同用户组权限完全隔离 * 通过 参数注解 进行方法级**数据校验**,无需额外配置校验类 (通过 AOP 切面实现) * 统一的错误处理 讲解文章: * [小小商城项目概述 —— 需求分析、数据表设计、原型设计、多层结构设计、项目规划][4] * [SSM开发 | 合理配置 mybatis-generator,隔离机器生成代码和额外增加代码][5] * [SSM开发 | 开发自定义插件,使 mybatis-generator 支持软删除][6] * [SSM开发 | 实现 Mybatis 的通用 Mapper,免写 SQL 自动处理关联查询 (类hibernate)(mybatis-generator+自定义插件+自定义注解+静态代理+泛型+反射)][7] * [SSM开发 | 配合Mybatis,通过泛型实现 BaseService ,抽象增改删查方法][8] * [SSM开发 | 配合自定义注解 和 SpringMVC拦截器,实现 方法级粒度 用户鉴权][9] * [SSM开发 | 对 SpringMVC 传入参数 进行参数校验 (使用自定义AOP切面+自定义参数注解)][10] 功能: - [x] 首页、分类页、搜索页、产品页 - [x] 购物车页面、下单页、支付页及支付成功页 - [x] 我的订单页、确认收货及成功页、评价页 - [x] 登陆页、注册页 - [x] 全部数据库的后台可视化管理 - [x] 网站SEO设置、图片路径设置 ------------------ 安装使用: 1. 若使用IDE打开,需按 Maven 文件安装依赖 2. 若在Tomcat中部署,Maven文件中已经配置好直接在线部署,使用 maven tomcat7:deploy 可直接在线部署 (需先配置好Tomcat) 3. 导入数据库small.sql,在 \src\main\resources\jdbc.properties 中配置数据库 4. 默认后台地址 /admin ,账户密码为 admin 123456 ,新建用户在前台注册,需要后台权限需要在数据库的User表的group_列中将该用户的用户组设置为 superA

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值