购物车包括货物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)相关推荐

  1. javaweb练手项目jsp+servlet简易购物车系统

    简易购物车项目 这是一个用intellij IDEA做的简易的javaweb项目,开发环境使用的jdk1.8和tomcat8以及mysql数据库. 1.项目开发准备: 创建github仓库 项目框架搭 ...

  2. 基于javaweb+JSP+Servlet简单购物车

    基于javaweb+JSP+Servlet简单购物车 开发工具:eclipse/idea/myeclipse/sts等均可配置运行 适用 课程设计,大作业,毕业设计,项目练习,学习演示等 public ...

  3. java购物车项目代码_javaweb练手项目jsp+servlet简易购物车系统

    简易购物车项目 这是一个用intellij IDEA做的简易的javaweb项目,开发环境使用的jdk1.8和tomcat8以及mysql数据库. 1.项目开发准备: 创建github仓库 项目框架搭 ...

  4. 基于jsp+javabean+servlet的二手物品交易系统_基于Jsp+Servlet的商城系统

    今天给大家演示一款由jsp+servlet+MySQL实现的在线商城系统,本系统实现了管理员管理用户.商品(商品分类).订单.留言.新闻等功能,前台会员注册登录,查看商品信息,加入商品到购物车.提交订 ...

  5. Jsp Servlet Mysql实现的Java Web在线商城项目源码

    今天给大家演示一款由jsp servlet MySQL实现的在线商城系统 本系统实现了管理员管理用户.商品(商品分类).订单.留言.新闻等功能,前台会员注册登录,查看商品信息,加入商品到购物车.提交订 ...

  6. Jsp+Servlet+Mysql实现的二手物品在线商城源码

    今天给大家演示的是一款jsp+servlet+mysql实现的二手物品在线商城系统, 其本质是在线商城,但是鉴于很多同学基础比较薄弱,不会修改,因此我修改成了二手物品商城,也附上了基本的修改版权信息和 ...

  7. Jsp+Servlet+Mysql实现的在线图书商城源码

    今天给大家演示的是一款由jsp+servlet+mysql实现的在线图书商城系统, 主要分为前台.后台管理员功能 前台用户可以浏览查看各类图书信息,可自定义搜索,注册登录后可以将书添加到购物车,购物车 ...

  8. Jsp+Servlet+Mysql实现的在线鲜花商城源码

    今天给大家演示的是一款jsp+servlet+mysql实现的在线鲜花商城系统, 其本质是在线商城,但是鉴于很多同学基础比较薄弱,不会修改,因此修改成了鲜花商城,也附上了基本的修改版权信息和导航条的教 ...

  9. 基于javaweb+jsp的网上商城系统(java+jsp+servlet+mysql+ajax)

    基于javaweb+jsp的网上商城系统(java+jsp+servlet+mysql+ajax) 一.项目简述(+需求文档+PPT) 功能: 主页显示热销商品:所有商品展示,可进行商品搜索:点 击商 ...

  10. 简易图书管理系统(主要是jsp+servlet的练习),基于jsp+servlet的图书管理系统

    jsp+Servlet图书管理系统第一版的第一次更新:免费源码下载,停更,自行下载即可,谢谢:http://download.csdn.net/detail/biexiansheng/9877270 ...

最新文章

  1. R语言构建xgboost模型:交叉验证(cross validation)训练xgboost模型
  2. phpstudy升级mysql之后,修改配置文件无效的问题
  3. 微软雅黑的应用[补充中]
  4. 安卓SDK之YUV-Image
  5. wildfly_从WildFly 9(子系统)中运行OkHttpClient
  6. java合并不连续的时间段_基于时间戳不完全匹配的pandas合并
  7. Docker学习总结(20)——Docker 容器实践精华问答集锦
  8. PS打造油画般的风景人像
  9. SVM支持向量机通俗导论(理解SVM的三层境界)
  10. linux 20个系统监控工具
  11. L3-006 迎风一刀斩 (30 分)-PAT 团体程序设计天梯赛 GPLT
  12. myeclipse中文界面改颜色_“颜色识别器”安卓APP功能详细介绍
  13. 谷歌浏览器js报错:Uncaught (in promise) DOMException
  14. redis3.2版本protected-mode参数
  15. 使用iMazing将iPad中的视频文件导出至电脑
  16. (转)中国电信友华PT921、PT921G光猫设置路由,无线WIFI设置
  17. 深圳内推 | 深圳计算科学研究院招聘机器学习助理工程师(校招)
  18. linux进阶-PHP加速器
  19. CVPR2022论文速递(2022.3.24)!共11篇含表情识别/deepfake检测/插帧等
  20. Mac开发-NSTextView软回车转换为硬回车

热门文章

  1. 真的,我现在特讨厌 Safari 浏览器!
  2. Web全栈~34.CAS
  3. python处理问题汇总三(字体显示,显示上标,x轴重叠,添加标签,保存图片等)
  4. coredump简介与coredump原因总结
  5. linux目录和链接的区别,Linux 下软链接和硬链接的区别
  6. vue动态生成二维码,扫码登录
  7. Quanergy创始人兼CEO Louay Eldada:将在中国建立固态激光雷达超大型生产设施 | 2018全球智能驾驶峰会...
  8. jmeter压力测试报告
  9. U3D中的常用字符串加密算法程序
  10. 数据结构-栈基本功能的实现