购物车的实现(jsp+servlet)
购物车包括货物bean,业务逻辑处理bean(购物车bean),控制器servlet,显示页面mycart.jsp。
货物bean的属性对应了货物的数据库表的一些字段,同时加上了购买的数量。
package com.xie.shop.modal;
//货物bean
public class CartBean{
private String id;
private String goodName;
private float goodsPrice;
private int goodsNum;
private String buyNum;
public String getBuyNum() {
return buyNum;
}
public void setBuyNum(String buyNum) {
this.buyNum = buyNum;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getGoodName() {
return goodName;
}
public void setGoodName(String goodName) {
this.goodName = goodName;
}
public float getGoodsPrice() {
return goodsPrice;
}
public void setGoodsPrice(float goodsPrice) {
this.goodsPrice = goodsPrice;
}
public int getGoodsNum() {
return goodsNum;
}
public void setGoodsNum(int goodsNum) {
this.goodsNum = goodsNum;
}
}
业务逻辑处理bean(购物车bean):
主要的逻辑是:将货物编号和货物实体放入一个HashMap中,HashMap购物车bean的一个属性,同时提供了一个能返回HashMap中value所对应的货物bean
import java.sql.Connection;
import java.sql.PreparedStatement;
//购物车的业务逻辑处理
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
public class MyCartPro {
private Connection ct=null;
private PreparedStatement ps=null;
private ResultSet rs=null;
Map<String , CartBean> cMap=new HashMap<String, CartBean>();
private float totalPrice=0;
public float getTotalPrice() {
return totalPrice;
}
public Map<String, CartBean> getcMap() {
return cMap;
}
/**
* 返回选中准备购买的货物
* @author Administrator:centre
* @param id:传入选中货物的编号
* @return cb:操作成功返回一个CartBean
*/
private CartBean getGood(String id){
CartBean cb=new CartBean();
try {
ct=new ConnGood().getConn();
ps=ct.prepareStatement("select goodsid, goodsname,goodsprice,goodsnum from goods where goodsid=?");
ps.setString(1, id);
rs=ps.executeQuery();
if(rs.next()) {
cb.setId(rs.getLong(1)+"");
cb.setGoodName(rs.getString(2));
cb.setGoodsPrice(rs.getFloat(3));
cb.setGoodsNum(rs.getInt(4));
cb.setBuyNum(1+"");
}
} catch (Exception e) {
System.out.println("取得CartBean失败。");
e.printStackTrace();
}finally{
closeRs();
}
return cb;
}
/**
* 将cb放入到一个map里
* @author Administrator:centre
* @param id:商品id
*/
public void addBook(String id){
if (!cMap.containsKey(id)) {
cMap.put(id, getGood(id));
}else {
cMap.get(id).setBuyNum((Integer.parseInt(cMap.get(id).getBuyNum())+1)+"");
}
}
/**
* 返回购物车容器
* @author Administrator:centre
* @return 返回购物车的容器
*/
public Map<String , CartBean> myCart(){
return getcMap();
}
/**
* 删除选定的商品
* @author Administrator:centre
* @param id:货物的id
* @return:删除成功,返回true,否则返回false
*/
public void deleteBook(String id){
cMap.remove(id);
}
/**
* 删除购物车的所有商品
* @author Administrator:centre
*/
public void deleteAllBooks(){
cMap.clear();
}
/**
* 修改所有商品购买数量
* @author Administrator:centre
* @param id:商品id
* @param num:商品数量
*/
public void updateNum(String[] id,String[] num){
for (int i = 0; i < id.length; i++) {
if (cMap.containsKey(id[i])) {
if (num[i].equals("0")||num[i].equals("")) {
cMap.remove(id[i]);
}else {
cMap.get(id[i]).setBuyNum(num[i]);
}
}
}
}
/**
* 返回所有购买的货物
* @author Administrator:centre
* @return:无返回值
*/
public List<CartBean> showMyCart(){
List<CartBean> al=new ArrayList<CartBean>();
Iterator<String> it=cMap.keySet().iterator();
totalPrice=0;
while (it.hasNext()) {
CartBean cb=cMap.get(it.next());
totalPrice+=Integer.parseInt(cb.getBuyNum())*cb.getGoodsPrice();
al.add(cb);
}
return al;
}
/**
* @author Administrator:centre
* 关闭相关的数据库资源
*/
private void closeRs(){
try {
if (rs!=null) {
rs.close();
rs=null;
}
if (ps!=null) {
ps.close();
ps=null;
}
if (ct!=null) {
ct.close();
ct=null;
}
} catch (Exception e) {
System.out.println("关闭资源失败。");
e.printStackTrace();
}
}
}
控制器servlet:
如何让每个IE进程都只有唯一的一个购物车呢?我用了session。
import java.io.IOException;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.xie.shop.modal.CartBean;
import com.xie.shop.modal.MyCartPro;
public class MyCartServlet extends HttpServlet {
/**
* The doGet method of the servlet. <br>
*
* This method is called when a form has its tag value method equals to get.
*
* @param request the request send by the client to the server
* @param response the response send by the server to the client
* @throws ServletException if an error occurred
* @throws IOException if an error occurred
*/
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String cartop=request.getParameter("cartop");
if (cartop.equals("add")) {
String id=request.getParameter("id");
String pageNow=request.getParameter("pageNow");
MyCartPro mcp=(MyCartPro)request.getSession().getAttribute("mycart");
if (mcp==null) {
//第一次购物,创建一个购物车,同时加入session
mcp=new MyCartPro();
request.getSession().setAttribute("mycart", mcp);
}
if (id!=null) {
mcp.addBook(id);
}
List<CartBean> al=mcp.showMyCart();
request.setAttribute("alist", al);
request.setAttribute("pageNow", pageNow);
request.getRequestDispatcher("jsps/mycart.jsp").forward(request, response);
}else if (cartop.equals("delete")) {
MyCartPro mcp=(MyCartPro)request.getSession().getAttribute("mycart");
String id=request.getParameter("id");
String pageNow=request.getParameter("pageNow");
mcp.deleteBook(id);
List<CartBean> al=mcp.showMyCart();
request.setAttribute("alist", al);
request.setAttribute("pageNow", pageNow);
request.getRequestDispatcher("jsps/mycart.jsp").forward(request, response);
}else if (cartop.equals("deleteall")) {
String pageNow=request.getParameter("pageNow");
MyCartPro mcp=(MyCartPro)request.getSession().getAttribute("mycart");
if (mcp==null) {
request.setAttribute("pageNow", pageNow);
request.getRequestDispatcher("index.jsp").forward(request, response);
}else {
mcp.deleteAllBooks();
request.setAttribute("pageNow", pageNow);
request.getRequestDispatcher("index.jsp").forward(request, response);
}
}else if (cartop.equals("chagenum")) {
String pageNow=request.getParameter("pageNow");
String[] id=request.getParameterValues("goodId");
String[] newNum=request.getParameterValues("newNum");
/*for (int i = 0; i < id.length; i++) {
System.out.println("id=="+id[i]+" "+"num=="+newNum[i]);
}*/
MyCartPro mcp=(MyCartPro)request.getSession().getAttribute("mycart");
if (mcp==null) {
request.getRequestDispatcher("jsps/mycart.jsp").forward(request, response);
}else {
mcp.updateNum(id, newNum);
List<CartBean> al=mcp.showMyCart();
request.setAttribute("alist", al);
request.setAttribute("pageNow", pageNow);
request.getRequestDispatcher("jsps/mycart.jsp").forward(request, response);
}
}
}
/**
* The doPost method of the servlet. <br>
*
* This method is called when a form has its tag value method equals to post.
*
* @param request the request send by the client to the server
* @param response the response send by the server to the client
* @throws ServletException if an error occurred
* @throws IOException if an error occurred
*/
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.doGet(request, response);
}
}
显示页面mycart.jsp
购物车的实现(jsp+servlet)相关推荐
- javaweb练手项目jsp+servlet简易购物车系统
简易购物车项目 这是一个用intellij IDEA做的简易的javaweb项目,开发环境使用的jdk1.8和tomcat8以及mysql数据库. 1.项目开发准备: 创建github仓库 项目框架搭 ...
- 基于javaweb+JSP+Servlet简单购物车
基于javaweb+JSP+Servlet简单购物车 开发工具:eclipse/idea/myeclipse/sts等均可配置运行 适用 课程设计,大作业,毕业设计,项目练习,学习演示等 public ...
- java购物车项目代码_javaweb练手项目jsp+servlet简易购物车系统
简易购物车项目 这是一个用intellij IDEA做的简易的javaweb项目,开发环境使用的jdk1.8和tomcat8以及mysql数据库. 1.项目开发准备: 创建github仓库 项目框架搭 ...
- 基于jsp+javabean+servlet的二手物品交易系统_基于Jsp+Servlet的商城系统
今天给大家演示一款由jsp+servlet+MySQL实现的在线商城系统,本系统实现了管理员管理用户.商品(商品分类).订单.留言.新闻等功能,前台会员注册登录,查看商品信息,加入商品到购物车.提交订 ...
- Jsp Servlet Mysql实现的Java Web在线商城项目源码
今天给大家演示一款由jsp servlet MySQL实现的在线商城系统 本系统实现了管理员管理用户.商品(商品分类).订单.留言.新闻等功能,前台会员注册登录,查看商品信息,加入商品到购物车.提交订 ...
- Jsp+Servlet+Mysql实现的二手物品在线商城源码
今天给大家演示的是一款jsp+servlet+mysql实现的二手物品在线商城系统, 其本质是在线商城,但是鉴于很多同学基础比较薄弱,不会修改,因此我修改成了二手物品商城,也附上了基本的修改版权信息和 ...
- Jsp+Servlet+Mysql实现的在线图书商城源码
今天给大家演示的是一款由jsp+servlet+mysql实现的在线图书商城系统, 主要分为前台.后台管理员功能 前台用户可以浏览查看各类图书信息,可自定义搜索,注册登录后可以将书添加到购物车,购物车 ...
- Jsp+Servlet+Mysql实现的在线鲜花商城源码
今天给大家演示的是一款jsp+servlet+mysql实现的在线鲜花商城系统, 其本质是在线商城,但是鉴于很多同学基础比较薄弱,不会修改,因此修改成了鲜花商城,也附上了基本的修改版权信息和导航条的教 ...
- 基于javaweb+jsp的网上商城系统(java+jsp+servlet+mysql+ajax)
基于javaweb+jsp的网上商城系统(java+jsp+servlet+mysql+ajax) 一.项目简述(+需求文档+PPT) 功能: 主页显示热销商品:所有商品展示,可进行商品搜索:点 击商 ...
- 简易图书管理系统(主要是jsp+servlet的练习),基于jsp+servlet的图书管理系统
jsp+Servlet图书管理系统第一版的第一次更新:免费源码下载,停更,自行下载即可,谢谢:http://download.csdn.net/detail/biexiansheng/9877270 ...
最新文章
- R语言构建xgboost模型:交叉验证(cross validation)训练xgboost模型
- phpstudy升级mysql之后,修改配置文件无效的问题
- 微软雅黑的应用[补充中]
- 安卓SDK之YUV-Image
- wildfly_从WildFly 9(子系统)中运行OkHttpClient
- java合并不连续的时间段_基于时间戳不完全匹配的pandas合并
- Docker学习总结(20)——Docker 容器实践精华问答集锦
- PS打造油画般的风景人像
- SVM支持向量机通俗导论(理解SVM的三层境界)
- linux 20个系统监控工具
- L3-006 迎风一刀斩 (30 分)-PAT 团体程序设计天梯赛 GPLT
- myeclipse中文界面改颜色_“颜色识别器”安卓APP功能详细介绍
- 谷歌浏览器js报错:Uncaught (in promise) DOMException
- redis3.2版本protected-mode参数
- 使用iMazing将iPad中的视频文件导出至电脑
- (转)中国电信友华PT921、PT921G光猫设置路由,无线WIFI设置
- 深圳内推 | 深圳计算科学研究院招聘机器学习助理工程师(校招)
- linux进阶-PHP加速器
- CVPR2022论文速递(2022.3.24)!共11篇含表情识别/deepfake检测/插帧等
- Mac开发-NSTextView软回车转换为硬回车