网上书城购物车功能(上)

前言

本章给大家分享的是网上书城购车前台和后台功能及源码。

门户书籍搜索后台功能及购物车功能实现

实体类

public class Book {
    
    
 private long id;
 private String name;
 private String pinyin;
 private long cid;
 private String author;
 private float price;
 private String image="照片";
 private String publishing;
 private String description;
 private int state;
 @JsonFormat(pattern="yyyy-MM-dd",timezone = "GMT+8")
 private Timestamp deployTime;
 private int sales;
 public long getId() {
    
    
  return id;
 }
 public void setId(long id) {
    
    
  this.id = id;
 }
 public String getName() {
    
    
  return name;
 }
 public void setName(String name) {
    
    
  this.name = name;
  this.pinyin=PinYinUtil.getAllPingYin(name);
 }
 public String getPinyin() {
    
    
  return pinyin;
 }
 public void setPinyin(String pinyin) {
    
    
  this.pinyin = pinyin;
 }
 public long getCid() {
    
    
  return cid;
 }
 public void setCid(long cid) {
    
    
  this.cid = cid;
 }
 public String getAuthor() {
    
    
  return author;
 }
 public void setAuthor(String author) {
    
    
  this.author = author;
 }
 public float getPrice() {
    
    
  return price;
 }
 public void setPrice(float price) {
    
    
  this.price = price;
 }
 public String getImage() {
    
    
  return image;
 }
 public void setImage(String image) {
    
    
  this.image = image;
 }
 public String getPublishing() {
    
    
  return publishing;
 }
 public void setPublishing(String publishing) {
    
    
  this.publishing = publishing;
 }
 public String getDescription() {
    
    
  return description;
 }
 public void setDescription(String description) {
    
    
  this.description = description;
 }
 public int getState() {
    
    
  return state;
 }
 public void setState(int state) {
    
    
  this.state = state;
 }
 public Timestamp getDeployTime() {
    
    
  return deployTime;
 }
 public void setDeployTime(Timestamp deployTime) {
    
    
  this.deployTime = deployTime;
 }
 public int getSales() {
    
    
  return sales;
 }
 public void setSales(int sales) {
    
    
  this.sales = sales;
 }
 @Override
 public String toString() {
    
    
  return "Book [id=" + id + ", name=" + name + ", pinyin=" + pinyin + ", cid=" + cid + ", author=" + author
    + ", price=" + price + ", image=" + image + ", publishing=" + publishing + ", description="
    + description + ", state=" + state + ", deployTime=" + deployTime + ", sales=" + sales + "]";
 }
 public Book() {
    
    
 }
 public Book(long id, String name, String pinyin) {
    
    
  this.id = id;
  this.name = name;
  this.pinyin = pinyin;
 }
 }

dao层代码

public List<Book> list(Book book, PageBean pageBean) throws Exception {
    
    
  String name = book.getName();
  long cid = book.getCid();
  String sql = "select * from t_easyui_book where true";
  if (StringUtils.isNotBlank(name)) {
    
    
   sql += " and name like '%" + name + "%' ";
  }
  if (cid!=0) {
    
    
   sql += " and  cid ="+cid;
  }
  return super.executeQuery(sql, pageBean, Book.class);
 }

action代码

public String search(HttpServletRequest req,HttpServletResponse resp) {
    
    
  PageBean pageBean =new PageBean();
  pageBean.setRequest(req);
  try {
    
    
   List<Book> list = this.bookDao.list(book, pageBean);
   req.setAttribute("books",list);
   req.setAttribute("pageBean",pageBean);
  } catch (Exception e) {
    
    
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
     return "search";
 }

点击事件js代码

function search(){
    
       location.href="${pageContext.request.contextPath}/book.action?methodName=search&name="+$("book_name").val();
  }

jsp页面代码

<%@ page language="java" contentType="text/html; charset=UTF-8"
 pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="z" uri="/zking" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link
 href="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/4.5.0/css/bootstrap.css"
 rel="stylesheet">
<link rel="stylesheet" type="text/css"
 href="${pageContext.request.contextPath }/static/css/fg.css" />
<title>书籍搜索页</title>
</head>
<body>
<div class="container">
  <!-- 横幅 -->
  <div class="row">
   <div class="col-sm-4">您好,欢迎来到网上书城!</div>
   <div class="col-sm-4 col-sm-offset-4">
    <a href="#">登录</a> | <a href="#">注册</a> | <b>我的购物车</b> | <i>网站首页</i>
   </div>
  </div>
  <!-- 搜索栏 -->
  <div class="row">
   <div class="col-sm-12 search-parent">
    <!-- 本来这里应该放一张背景图的 -->
    <div class="search"></div>
    <input type="text" id="book_name" name="name" value="" />
    <button type="button" class="btn btn-primary">搜索</button>
   </div>
  </div>
  <!-- 主内容区 -->
  <div class="row content">
   <div class="col-sm-3 l-content">
    <ul class="list-group c-category ">
     <li class="list-group-item" style="color: white;">书籍分类</li>
     <li class="list-group-item">现代言情</li>
     <li class="list-group-item">古代言情</li>
     <li class="list-group-item">幻想仙侠</li>
     <li class="list-group-item">玄幻</li>
     <li class="list-group-item">都市</li>
     <li class="list-group-item">奇幻</li>
     <li class="list-group-item">军事</li>
     <li class="list-group-item">科幻</li>
     <li class="list-group-item">武侠</li>
     <li class="list-group-item">青春</li>
     <li class="list-group-item">竞技</li>
     <li class="list-group-item">历史</li>
     <li class="list-group-item">游戏</li>
     <li class="list-group-item">其他</li>
    </ul>
   </div>
   <div class="col-sm-9">
   <c:forEach items="${books }" var="b">
    <div class="media">
     <img src="${b.image }" class="align-self-center mr-3" alt="...">
     <div class="media-body">
      <p>${
    
    b.name}</p>
      <p>作者:${
    
    b.author }</p>
      <p>价格:¥${
    
    b.price}</p>
      <p>出版社:${
    
    b.publishing }</p>
      <p>简介:${
    
    b.description }</p>
      <p>
       <!-- <button onclick="addShopCar(this);" class="btn btn-danger" style="width: 150px;">加入购物车</button> -->
       <a type="button" class="btn btn-danger" href="${pageContext.request.contextPath}/shopping.action?methodName=add&name=${b.name}&price=${b.price}&num=1&total=${b.price}">加入购物车</a>
       <button class="btn btn-danger" style="width: 150px;">去结算</button>
      </p>
     </div>
    </div>
    </c:forEach>
    <z:page pageBean="${pageBean }"></z:page>
   </div>
  </div>
  <!-- 底部版权 -->
  <div class="row">
   <div class="col-sm-12 text-center">Copyright 2020 教育,版权所有</div>
  </div>
 </div>
 <script src="https://cdn.bootcdn.net/ajax/libs/jquery/1.12.4/jquery.js"></script>
 <script
  src="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/4.5.0/js/bootstrap.js"></script>
 <script src="${pageContext.request.contextPath }/static/js/common.js"></script>
<script type="text/javascript">
  $(function() {
    
    
  })
  function addShopCar(node){
    
    
  var $div =$(node).parent.parent();
   var name= $div.find("p").eq(0).html()
   var price= $div.find("p").eq(1).html()
  }
 </script>
</body>
</html>

加入购物车前台页面

效果图
在这里插入图片描述

jsp页面代码

<tbody>
     <c:forEach items="${shopcars}" var="s" >
      <tr>
       <td>${
    
    s.name }</td>
       <td>${
    
    s.price }</td>
       <td>
       <input type="text" value="${s.num }">
       </td>
       <td>${
    
    s.total}</td>
       <td>
       <a href="#">删除</a>&nbsp;&nbsp;
           <a href="#">更新</a></td>
      </tr>
      </c:forEach>
      <tr>
       <td colspan="5">
        <div class="btn btn-danger" style="width: 200px;">清空购物车</div>
        <div class="btn btn-danger shop-table-tab" style="width: 200px;">继续购物</div>
        <div class="btn btn-danger" style="width: 200px;">去结算</div>
       </td>
      </tr>
     </tbody>

shoppingvo类

public class ShoppingVo {
    
    
//  购物车列表订单项所需数据
  private String name;
  private float price;
  private int num;
  private float total;
  public String getName() {
    
    
 return name;
}
public void setName(String name) {
    
    
 this.name = name;
}
public float getPrice() {
    
    
 return price;
}
public void setPrice(float price) {
    
    
 this.price = price;
}
public int getNum() {
    
    
 return num;
}
public void setNum(int num) {
    
    
 this.num = num;
}
public float getTotal() {
    
    
 return total;
}
public void setTotal(float total) {
    
    
 this.total = total;
}
@Override
public String toString() {
    
    
 return "ShoppingVo [name=" + name + ", price=" + price + ", num=" + num + ", total=" + total + "]";
}

public ShoppingVo() {
    
    
}
public ShoppingVo(String name, float price, int num, float total) {
    
    
 this.name = name;
 this.price = price;
 this.num = num;
 this.total = total;
}

加入购物车action

 public String add(HttpServletRequest req,HttpServletResponse resp) {
    
    
 ServletContext ctx = req.getServletContext();
 List<ShoppingVo> shopcars = (List<ShoppingVo>)ctx.getAttribute("shopcar");
  if(shopcars == null || shopcars.size()==0) {
    
    
  //第一次添加购物车的时候,购物车中是没有商品的
  shopcars=new ArrayList<ShoppingVo>();
  }else {
    
    
//   //第二次之后添加购物车的时候。购物车中是有商品的
//   //shopcars.add(shopingVo);
  }
  shopcars.add(shopingVo);
  ctx.setAttribute("shopcars",shopcars);
  return "shoppingCar";
 }
 }

猜你喜欢

转载自blog.csdn.net/qq_45432593/article/details/107284006