javaweb购物车案列学习开发

作者:牛穿疯 时间:2021-10-28 13:30:26 

本文实例为大家分享了javaweb购物车案列的具体代码,供大家参考,具体内容如下

一、项目目录结构

 javaweb购物车案列学习开发

二、源代码

dao包——dao层:BookDao.java


package com.dao;

import java.util.Map;
import com.DB.DB;
import com.domain.Book;

public class BookDao {

public Map getAll(){
return DB.getAll();
}

public Book find(String id){
return (Book) DB.getAll().get(id);
}
}

DB包:DB.java——模拟数据库


package com.DB;
import java.util.LinkedHashMap;
import java.util.Map;
import com.domain.Book;
import com.sun.org.apache.bcel.internal.generic.NEW;
//代表数据库
//代表数据库
public class DB {

private static Map map = new LinkedHashMap();
static{
map.put("1", new Book("1","javaweb开发","老张",38,"一本好书"));
map.put("2", new Book("2","jdbc开发","老黎",18,"一本好书"));
map.put("3", new Book("3","ajax开发","老佟",328,"一本好书"));
map.put("4", new Book("4","jbpm开发","老毕",58,"一本好书"));
map.put("5", new Book("5","struts开发","老方",28,"一本好书"));
map.put("6", new Book("6","spring开发","老方",98,"一本好书"));
}

public static Map getAll(){
return map;
}

}

domain包:

Book.java:书的实体类


package com.domain;
//书的实体类
public class Book {
private String id;
private String name;
private String author;
private double price;
private String description;

public Book() {
super();
// TODO Auto-generated constructor stub
}
public Book(String id, String name, String author, double price,
 String description) {
super();
this.id = id;
this.name = name;
this.author = author;
this.price = price;
this.description = description;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}

}

Cart.java:购物车类


package com.domain;

import java.util.LinkedHashMap;
import java.util.Map;

//代表用户的购物车

//代表用户的购物车
public class Cart {

private Map<String,CartItem> map = new LinkedHashMap();
private double price; //记住购物车所有商品多少钱

public void add(Book book){
//看购物车中有没有,要添加的书对应的购物项
CartItem item = map.get(book.getId());
if(item==null){
 item = new CartItem();
 item.setBook(book);
 item.setQuantity(1);
 map.put(book.getId(), item);
}else{
 item.setQuantity(item.getQuantity()+1);
}
}

public Map<String, CartItem> getMap() {
return map;
}
public void setMap(Map<String, CartItem> map) {
this.map = map;
}
public double getPrice() {
double totalprice = 0;
for(Map.Entry<String, CartItem> entry : map.entrySet()){
 CartItem item = entry.getValue();
 totalprice += item.getPrice();
}
this.price = totalprice;
return price;
}
public void setPrice(double price) {
this.price = price;
}
}

CartItem.java:购物项


package com.domain;
//用于代表某个商品,以及商品出现的次数(购物项)
public class CartItem {

private Book book;
private int quantity;
private double price;

public Book getBook() {
return book;
}
public void setBook(Book book) {
this.book = book;
}
public int getQuantity() {
return quantity;
}
public void setQuantity(int quantity) {
this.quantity = quantity;
this.price = this.book.getPrice() * this.quantity;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}

}

service包:service层

BusinessService.java:


package com.service;

import java.util.Map;

import com.dao.BookDao;
import com.domain.Book;
import com.domain.Cart;
import com.domain.CartItem;
//业务类,统一对web层提供所有服务
public class BusinessService {

private BookDao dao = new BookDao();

public Map getAllBook(){
return dao.getAll();
}

public Book findBook(String id){
return dao.find(id);
}

//删除购物车中的购物项
public void deleteCartItem(String id, Cart cart) {
cart.getMap().remove(id);
}

//清空购物车
public void clearCart(Cart cart) {
cart.getMap().clear();
}

//改变购物项的数量
public void changeItemQuantity(String id, String quantity, Cart cart) {
CartItem item = cart.getMap().get(id);
item.setQuantity(Integer.parseInt(quantity));
}

}

web层:

ListBookServlet.java:显示所有书籍


package com.web.controller;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.Map;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.service.BusinessService;
//获取所有书籍
//获取所有书
public class ListBookServlet extends HttpServlet {

public void doGet(HttpServletRequest request, HttpServletResponse response)
 throws ServletException, IOException {

BusinessService service = new BusinessService();
Map map = service.getAllBook();
request.setAttribute("map", map);

request.getRequestDispatcher("/WEB-INF/jsp/listbook.jsp").forward(request, response);
}

public void doPost(HttpServletRequest request, HttpServletResponse response)
 throws ServletException, IOException {
doGet(request, response);
}

}

 BuyServlet.java:处理购买请求


package com.web.controller;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.domain.Book;
import com.domain.Cart;
import com.service.BusinessService;

//完成书籍购买
//完成书籍购买
public class BuyServlet extends HttpServlet {

public void doGet(HttpServletRequest request, HttpServletResponse response)
 throws ServletException, IOException {

String id = request.getParameter("id");
BusinessService service = new BusinessService();
Book book = service.findBook(id);

//得到用户的购物车
Cart cart = (Cart) request.getSession().getAttribute("cart");
if(cart==null){
 cart = new Cart();
 request.getSession().setAttribute("cart", cart);
}

//把书加到用户购物车中,完成购买
cart.add(book);

//response.sendRedirect("/WEB-INF/jsp/listcart.jsp");
request.getRequestDispatcher("/WEB-INF/jsp/listcart.jsp").forward(request, response);

}

public void doPost(HttpServletRequest request, HttpServletResponse response)
 throws ServletException, IOException {
doGet(request, response);
}

}

DeleteItemServlet.java:删除某一种商品


package com.web.controller;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.domain.Cart;
import com.service.BusinessService;
//删除指定的购物项
public class DeleteItemServlet extends HttpServlet {

public void doGet(HttpServletRequest request, HttpServletResponse response)
 throws ServletException, IOException {

String id = request.getParameter("id");
Cart cart = (Cart) request.getSession().getAttribute("cart");

BusinessService service = new BusinessService();
service.deleteCartItem(id,cart);

//删除成功
request.getRequestDispatcher("/WEB-INF/jsp/listcart.jsp").forward(request, response);

}

public void doPost(HttpServletRequest request, HttpServletResponse response)
 throws ServletException, IOException {
doGet(request, response);
}

}

ClearCartServlet.java:清空购物车


package com.web.controller;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.domain.Cart;
import com.service.BusinessService;
//清空购物车
public class ClearCartServlet extends HttpServlet {

public void doGet(HttpServletRequest request, HttpServletResponse response)
 throws ServletException, IOException {

Cart cart = (Cart) request.getSession().getAttribute("cart");

BusinessService service = new BusinessService();
service.clearCart(cart);

request.getRequestDispatcher("/WEB-INF/jsp/listcart.jsp").forward(request, response);

}

public void doPost(HttpServletRequest request, HttpServletResponse response)
 throws ServletException, IOException {
doGet(request, response);
}

}

ChangeQuantityServlet.java:修改购物车中指定商品的数量


package com.web.controller;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.domain.Cart;
import com.service.BusinessService;

//把购物车中的书修改为指定数量
public class ChangeQuantityServlet extends HttpServlet {

public void doGet(HttpServletRequest request, HttpServletResponse response)
 throws ServletException, IOException {

String id = request.getParameter("id");
String quantity = request.getParameter("quantity");

Cart cart = (Cart) request.getSession().getAttribute("cart");

BusinessService service = new BusinessService();
service.changeItemQuantity(id,quantity,cart);

request.getRequestDispatcher("/WEB-INF/jsp/listcart.jsp").forward(request, response);
}

public void doPost(HttpServletRequest request, HttpServletResponse response)
 throws ServletException, IOException {
doGet(request, response);
}

}

 jsp页面: 

WebRoot/WEB-INF/jsp/listbook.jsp:显示书籍列表 


<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>书籍列表页面</title>
</head>

<body style="text-align: center">

<h1>书籍列表</h1>

<table width="70%" border="1">
<tr>
 <td>书名</td>
 <td>作者</td>
 <td>售价</td>
 <td>描述 </td>
 <td>操作</td>
</tr>
<c:forEach var="entry" items="${map}">
 <tr>
 <td>${entry.value.name }</td>
 <td>${entry.value.author }</td>
 <td>${entry.value.price }</td>
 <td>${entry.value.description } </td>
 <td>
  <a href="${pageContext.request.contextPath }/servlet/BuyServlet?id=${entry.value.id }" rel="external nofollow" target="_blank">购买</a>
 </td>
 </tr>
</c:forEach>
</table>

</body>

WebRoot/WEB-INF/jsp/listcart.jsp:显示购物车列表


<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>购物车列表</title>

<script type="text/javascript">
function deleteitem(id){
 var b = window.confirm("您确认删除吗??");
 if(b){
 window.location.href="${pageContext.request.contextPath }/servlet/DeleteItemServlet?id=" rel="external nofollow" +id;
 }
}

function clearcart(){
 var b = window.confirm("您确认清空吗??");
 if(b){
 window.location.href="${pageContext.request.contextPath}/servlet/ClearCartServlet" rel="external nofollow" ;
 }
}

function changeQuantity(input,id,oldvalue){
 var quantity = input.value; //得到要修改的数量 sdfsfs

/*
 //检查用户输入的数量是不是一个数字
 if(isNaN(quantity)){
 alert("请输入数字!!");
 input.value = oldvalue;
 return;
 }
 */

//检查用户输入的数量是不是一个正整数
 if(quantity<0 || quantity!=parseInt(quantity)){
 alert("请输入正整数!!");
 input.value = oldvalue;
 return;
 }  

var b = window.confirm("您确认把书的数量修改为:" + quantity);
 if(b){
 window.location.href="${pageContext.request.contextPath}/servlet/ChangeQuantityServlet?id=" rel="external nofollow" + id + "&quantity=" + quantity;
 }
}
</script>

</head>

<body style="text-align: center">

<h1>购物车列表</h1>

<c:if test="${empty(cart.map)}">
您没有购买任何商品!!!
</c:if>

<c:if test="${!empty(cart.map)}">
<table width="70%" border="1">
<tr>
 <td>书名</td>
 <td>作者</td>
 <td>单价</td>
 <td>数量 </td>
 <td>小计</td>
 <td>操作</td>
</tr>
<c:forEach var="entry" items="${cart.map}">
 <tr>
 <td>${entry.value.book.name }</td>
 <td>${entry.value.book.author }</td>
 <td>${entry.value.book.price }</td>
 <td>
  <input type="text" name="quantity" value="${entry.value.quantity }" style="width:35px" onchange="changeQuantity(this,${entry.key},${entry.value.quantity})">
 </td>
 <td>${entry.value.price }</td>
 <td>
  <a href="javascript:void(0)" rel="external nofollow" rel="external nofollow" onclick="deleteitem(${entry.key })">删除</a> <!-- 去掉超链接默认行为 -->

</td>
 </tr>
</c:forEach>

<tr>
 <td colspan="3">总价</td>
 <td colspan="2">${cart.price }元</td>
 <td colspan="1">
 <a href="javascript:void(0)" rel="external nofollow" rel="external nofollow" onclick="clearcart()">清空购物车</a>
 </td>
</tr>
</table>
</c:if>

</body>
</html>

来源:http://www.cnblogs.com/niuchuangfeng/p/9077503.html

标签:javaweb,购物车
0
投稿

猜你喜欢

  • spring cloud 配置中心客户端启动遇到的问题

    2023-03-23 16:30:34
  • Android自定义LinearLayout布局显示不完整的解决方法

    2022-09-14 17:44:16
  • 详解java中String、StringBuilder、StringBuffer的区别

    2023-06-17 06:03:23
  • Java图片裁剪和生成缩略图的实例方法

    2023-11-09 00:01:50
  • Java中MultipartFile与File互转的实现

    2022-02-15 15:36:02
  • Android TextView跑马灯效果实现方法

    2023-09-27 04:16:09
  • Android实现上传文件功能的方法

    2022-01-18 11:01:02
  • 解决Android MediaRecorder录制视频过短问题

    2023-04-24 01:47:56
  • C#编程之事务用法

    2023-08-20 05:50:37
  • Java反射机制详解

    2023-10-01 12:18:04
  • java连接ElasticSearch集群操作

    2023-11-28 04:06:24
  • SpringBoot返回Json对象报错(返回对象为空{})

    2022-06-30 03:31:19
  • Java编程用两个栈实现队列代码分享

    2023-03-22 01:05:05
  • C# WPF实现的语音播放自定义控件

    2022-11-23 19:45:49
  • Spring Boot如何优化内嵌的Tomcat示例详解

    2023-11-13 17:52:53
  • C#实现字符串进制转换方法汇总

    2022-01-03 09:30:37
  • C#操作 JSON方法汇总

    2023-01-23 06:49:59
  • sweet alert dialog 在android studio应用问题说明详解

    2022-12-14 04:17:53
  • Java语法糖之个数可变的形参的实现

    2023-12-05 00:13:20
  • Android ViewModel创建不受横竖屏切换影响原理详解

    2023-08-31 21:21:20
  • asp之家 软件编程 m.aspxhome.com