基于javaweb的网上图书商城系统(java+ssm+jsp+mysql+redis+jwt+shiro+rabbitmq+easyui)

运行环境

Java≥8、MySQL≥5.7、Tomcat≥8

开发工具

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

适用

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

功能说明

基于javaweb+SSM的网上图书商城网上书店(java+SSM+Jsp+MySQL+Redis+JWT+Shiro+RabbitMQ+EasyUI)

这个项目涉及到Shiro整合JWT、秒杀功能所具备的基本要求(限流、乐观锁、接口隐藏、JMeter高并发测试等等)、消息中间件RabbitMQ的异步邮件通知和死信队列、沙箱支付宝模拟支付等等技术亮点。

项目功能:该项目分为买家、卖家、管理员三个角色。买家角色的功能:登录、注册、浏览图书、管理购物车、结算订单、支付订单、查看订单、修改个人信息等等功能。

卖家角色的功能:登录、注册、浏览商品、管理自己发布的图书、管理收到的订单、查看自己的收益详情等等。管理员角色的功能:登录、管理所有用户信息、管理权限信息、管理所有卖家发布的图书、管理所有订单信息、管理所有支付信息、查看总共收益详情等等。

应用技术:SSM + Jsp + MySQL + Redis + JWT + Shiro + RabbitMQ + EasyUI + 沙箱支付宝 + 令牌桶限流 + 乐观锁等等

运行环境:Eclipse/IntelliJ IDEA + MySQL5.7 + Maven3.6.3+ JDK1.8 + Redis5.0.5+ Tomcat8.5 + RabbitMQ3.7.7

订单管理控制层:

@Controller

@RequestMapping(“/order”)

public class OrderController {

@Autowired

private IOrderService orderService;

@Autowired

private ICartService cartService;

@Autowired

private IBookInfoService bookInfoService;

/**

  • 填写订单信息页面

  • @param bookId

  • @param buyNum

  • @param request

  • @return

*/

@GetMapping(“/info”)

public String orderInfo(@RequestParam(required = false, defaultValue = “0”) int bookId,

@RequestParam(required = false, defaultValue = “0”) int buyNum,

HttpServletRequest request) throws BSException {

if (bookId != 0) {

//点了立即购买,放到request域中,也session的立即购买域中以区分购物车中的书籍

BookInfo bookInfo = bookInfoService.findById(bookId);

if (bookInfo != null) {

BSResult bsResult = cartService.addToCart(bookInfo, null, buyNum);

request.getSession().setAttribute(“buyNowCart”, bsResult.getData());

request.setAttribute(“cart”, bsResult.getData());

return “order_info”;

} else {

request.setAttribute(“exception”, “不好意思,书籍库存不足或不存在了!”);

return “exception”;

//没有点立即购买,购物车中的总金额大于0才让填写订单信息

Cart cart = (Cart) request.getSession().getAttribute(“cart”);

if (cart != null && cart.getTotal() > 0) {

return “order_info”;

} else {

return “cart”;

@GetMapping(“/payPage/{orderId}”)

public String toPay(@PathVariable(“orderId”) String orderId, Model model) {

BSResult bsResult = orderService.findOrderById(orderId);

if (bsResult.getCode() == 200) {

model.addAttribute(“order”, bsResult.getData());

return “payment”;

return “exception”;

@RequestMapping(“/deletion/{orderId}”)

public String deletion(@PathVariable(“orderId”) String orderId) {

BSResult bsResult = orderService.deleteOrder(orderId);

if (bsResult.getCode() == 200) {

return “redirect:/order/list”;

return “exception”;

/**

  • 订单列表

  • @return

*/

@GetMapping(“/list”)

public String orderList(HttpServletRequest request) {

User loginUser = (User) request.getSession().getAttribute(“loginUser”);

List orderCustoms = orderService.findOrdersByUserId(loginUser.getUserId());

request.setAttribute(“orderCustoms”, orderCustoms);

return “order_list”;

/**

  • 创建订单

  • @return

*/

@PostMapping(“/creation”)

public String createOrder(User userDTO, String express, int payMethod, HttpServletRequest request) {

//立即购买,优先创建订单

Cart buyNowCart = (Cart) request.getSession().getAttribute(“buyNowCart”);

User loginUser = (User) request.getSession().getAttribute(“loginUser”);

userDTO.setUserId(loginUser.getUserId());

userDTO.setZipCode(loginUser.getZipCode());

if (buyNowCart != null) {

BSResult bsResult = orderService.createOrder(buyNowCart, userDTO, express, payMethod);

if (bsResult.getCode() == 200) {

request.setAttribute(“order”, bsResult.getData());

cartService.clearCart(request, “buyNowCart”);

return “payment”;

} else {

request.setAttribute(“exception”, bsResult.getMessage());

return “exception”;

//普通购物车

Cart cart = (Cart) request.getSession().getAttribute(“cart”);

if (cart != null) {

BSResult bsResult = orderService.createOrder(cart, userDTO, express, payMethod);

if (bsResult.getCode() == 200) {

request.setAttribute(“order”, bsResult.getData());

cartService.clearCart(request, “cart”);

return “payment”;

} else {

request.setAttribute(“exception”, bsResult.getMessage());

return “exception”;

} else {

request.setAttribute(“exception”, “购物车为空!”);

return “exception”;

/**

  • 确认收货

  • @param orderId

  • @return

*/

@RequestMapping(“/confirm/{orderId}”)

public String confirmReceiving(@PathVariable(“orderId”) String orderId, Model model) {

BSResult bsResult = orderService.confirmReceiving(orderId);

if (bsResult.getCode() == 200) {

return “redirect:/order/list”;

} else {

model.addAttribute(“exception”, bsResult.getMessage());

return “exception”;

购物车管理控制层:

@Controller

@RequestMapping(“/cart”)

public class CartController {

@Autowired

private IBookInfoService bookInfoService;

@Autowired

private ICartService cartService;

//返回购物差页面

@GetMapping(“/items”)

public String showCart() {

return “cart”;

/**

  • 加入购物车

  • @param bookId

  • @param request

  • @return

*/

@RequestMapping(“/addition”)

public String addToCart(@RequestParam(value = “bookId”,defaultValue = “0”) int bookId,

@RequestParam(required = false,defaultValue = “0”) int buyNum,

HttpServletRequest request) {

Cart cart = (Cart) request.getSession().getAttribute(“cart”);

//根据要加入购物车的bookId查询bookInfo

BookInfo bookInfo = bookInfoService.queryBookAvailable(bookId);

if (bookInfo != null) {

//这本书在数据库里

BSResult bsResult = cartService.addToCart(bookInfo, cart, buyNum);

request.getSession().setAttribute(“cart”, bsResult.getData());

request.setAttribute(“bookInfo”, bookInfo);

} else {

//数据库里没有这本书,或库存不足

request.setAttribute(“bookInfo”, null);

return “addcart”;

@GetMapping(“/clear”)

public String clearCart(HttpServletRequest request) {

cartService.clearCart(request,“cart”);

return “cart”;

@GetMapping(“/deletion/{bookId}”)

public String deleteCartItem(@PathVariable(“bookId”) int bookId,HttpServletRequest request){

cartService.deleteCartItem(bookId, request);

return “redirect:/cart/items”;

/**

  • 更新某个购物车项的购买数量

  • @param bookId

  • @param newNum

  • @param request

  • @return

*/

@PostMapping(“/buy/num/update”)

@ResponseBody

public BSResult updateBuyNum(int bookId, int newNum, HttpServletRequest request){

return cartService.updateBuyNum(bookId, newNum, request);

@PostMapping(“/checkOne”)

@ResponseBody

public BSResult checkACartItem(int bookId,HttpServletRequest request){

Cart cart = (Cart)request.getSession().getAttribute(“cart”);

return cartService.checkedOrNot(cart, bookId);

书信息管理控制层:

@Controller

@RequestMapping(“/book”)

public class BookInfoController {

@Autowired

private IBookInfoService bookInfoService;

@Autowired

private BookDescMapper bookDescMapper;

/**

  • 查询某一本书籍详情

  • @param bookId

  • @param model

  • @return

*/

@RequestMapping(“/info/{bookId}”)

public String bookInfo(@PathVariable(“bookId”) Integer bookId, Model model) throws BSException {

//查询书籍

BookInfo bookInfo = bookInfoService.findById(bookId);

//查询书籍推荐列表

List recommendBookList = bookInfoService.findBookListByCateId(bookInfo.getBookCategoryId(), 1, 5);

//查询书籍详情

BookDesc bookDesc = bookDescMapper.selectByPrimaryKey(bookId);

//增加访问量

bookInfoService.addLookMount(bookInfo);

Collections.shuffle(recommendBookList);

model.addAttribute(“bookInfo”, bookInfo);

model.addAttribute(“bookDesc”, bookDesc);

model.addAttribute(“recommendBookList”, recommendBookList);

return “book_info”;

/**

  • 通过关键字和书籍分类搜索书籍列表

  • @param keywords

  • @return

*/

@RequestMapping(“/list”)

public String bookSearchList(@RequestParam(defaultValue = “”, required = false) String keywords,

@RequestParam(defaultValue = “0”, required = false) int cateId,//分类Id,默认为0,即不按照分类Id查

@RequestParam(defaultValue = “1”, required = false) int page,

@RequestParam(defaultValue = “6”, required = false) int pageSize,

Model model) {

keywords = keywords.trim();

PageInfo bookPageInfo = bookInfoService.findBookListByCondition(keywords, cateId, page, pageSize,0);//storeId为0,不按照商店Id查询

model.addAttribute(“bookPageInfo”, bookPageInfo);

model.addAttribute(“keywords”, keywords);

model.addAttribute(“cateId”, cateId);

return “book_list”;


基于javaweb的网上图书商城系统(java+ssm+jsp+mysql+redis+jwt+shiro+rabbitmq+easyui)相关推荐

  1. Java项目:网上图书商城系统(java+SSM+Jsp+MySQL+Redis+JWT+Shiro+RabbitMQ+EasyUI)

    源码获取:博客首页 "资源" 里下载! 这个项目涉及到Shiro整合JWT.秒杀功能所具备的基本要求(限流.乐观锁.接口隐藏.JMeter高并发测试等等).消息中间件RabbitM ...

  2. 基于javaweb+mysql的网上图书商城网上书店(java+SSM+Jsp+MySQL+Redis+JWT+Shiro+RabbitMQ+EasyUI)

    这个项目涉及到Shiro整合JWT.秒杀功能所具备的基本要求(限流.乐观锁.接口隐藏.JMeter高并发测试等等).消息中间件RabbitMQ的异步邮件通知和死信队列.沙箱支付宝模拟支付等等技术亮点. ...

  3. 基于javaweb的水果蔬菜商城系统(java+ssm+jsp+mysql)

    基于javaweb的水果蔬菜商城系统(java+ssm+jsp+mysql) 运行环境 Java≥8.MySQL≥5.7.Tomcat≥8 开发工具 eclipse/idea/myeclipse/st ...

  4. 基于javaweb的音乐专辑商城系统(java+ssm+jsp+jquery+mysql)

    基于javaweb的音乐专辑商城系统(java+ssm+jsp+jquery+mysql) 运行环境 Java≥8.MySQL≥5.7.Tomcat≥8 开发工具 eclipse/idea/myecl ...

  5. 基于javaweb的二手图书商城平台(java+ssm+jsp+js+jquery+mysql)

    基于javaweb的二手图书商城平台(java+ssm+jsp+js+jquery+mysql) 运行环境 Java≥8.MySQL≥5.7.Tomcat≥8 开发工具 eclipse/idea/my ...

  6. 基于javaweb的在线甜品商城系统(java+ssm+jsp+javascript+mysql)

    基于javaweb的在线甜品商城系统(java+ssm+jsp+javascript+mysql) 运行环境 Java≥8.MySQL≥5.7.Tomcat≥8 开发工具 eclipse/idea/m ...

  7. 基于javaweb的茶叶售卖商城系统(java+ssm+jsp+easyui+mysql)

    基于javaweb的茶叶售卖商城系统(java+ssm+jsp+easyui+mysql) 运行环境 Java≥8.MySQL≥5.7.Tomcat≥8 开发工具 eclipse/idea/myecl ...

  8. 基于javaweb的零食商城系统(java+ssm+jsp+mysql+easyui)

    基于javaweb的零食商城系统(java+ssm+jsp+mysql+easyui) 运行环境 Java≥8.MySQL≥5.7.Tomcat≥8 开发工具 eclipse/idea/myeclip ...

  9. 基于javaweb+jsp的零食商城系统(java+SSM+jsp+MySQL+EasyUI)

    基于javaweb+jsp的零食商城系统(java+SSM+jsp+MySQL+EasyUI) 系统主要实现的功能有:用户浏览商品.加入商品到购物车.登录注册.提交订单,会员中心修改个人信息.查看订单 ...

最新文章

  1. 程序员薪资两极分化,如何成为高薪程序员?
  2. Python简单主机批量管理工具
  3. 趣味编程:函数式链表的快速排序
  4. 跟我一起写 Makefile(十)
  5. boost::log模块测试检查插入不会使容器中的现有元素无效
  6. 测试版降级后软件还在么,如果你后悔安装iOS12想降到iOS11?几招教你删除iOS12测试版...
  7. VC 2010下安装OpenCV2.4.4
  8. 海云健康:上云为10万家药店带去了什么价值?
  9. wamp 配置 mysql_PHPWAMP配置应该如何修改,Web服务器、php、mysql的具体配置修改
  10. Delphi关于记录文件的操作-转
  11. 网易云音乐ncm格式转换mp3格式工具
  12. logistic模型 matlab,用matlab绘制logistic模型图.ppt
  13. vue 对象提供的属性功能、通过axio请求数据(2)
  14. 浅谈股价预测模型:你是否掉进机器学习的陷阱
  15. WINDOWS备份与恢复
  16. js原生拖拽的两种方法
  17. 打印论文是单面还是双面?
  18. win7 64位虚拟机安装
  19. 计算机体系结构——动态流水线动态调度详解
  20. QT+Halcon实现螺纹检测

热门文章

  1. 李开复世界人工智能大会演讲:“AI+”时代的到来
  2. Unsupervised Monocular Depth and Ego-motion Learning with Structure and Semantics 之论文详解
  3. html5 语言购物车,基于html5 localStorage的购物车JS脚本详解
  4. 袖珍文件分割器 免费
  5. Base64和URL编码
  6. 用VirtualWall防止远古盗链的方法
  7. js/css批量压缩工具(JsCssZip)
  8. 中国移动互联网100位精英
  9. css非常简单的打码效果
  10. htb snoopy wp记录