前言
本章给大家分享的是网上书城购车前台和后台功能及源码。
门户书籍搜索后台功能及购物车功能实现
实体类
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>
<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";
}
}