应用Servlet实现购物车

合集下载

购物车功能实现

购物车功能实现

购物车功能实现购物车功能是电商网站的重要组成部分,实现了方便用户选择和管理商品的功能,以下是购物车功能的实现方式:1. 添加商品:用户在浏览商品详情页时,可以通过点击“加入购物车”按钮将商品添加到购物车中。

后台服务器收到请求后,将商品信息和数量保存到数据库中。

2. 修改商品数量:用户可以在购物车页面修改商品的购买数量,通过增加或减少数量按钮来实现。

每次修改数量都会发送请求到后台,更新数据库中的商品数量。

3. 删除商品:用户可以选择删除购物车中的某个商品,通过点击删除按钮来实现。

后台服务器删除对应的商品记录,更新数据库。

4. 清空购物车:用户可以选择一键清空购物车,通过点击“清空购物车”按钮来实现。

后台服务器删除用户购物车中的所有商品记录,更新数据库。

5. 查看购物车:用户可以通过点击购物车图标或链接来查看购物车的详情页。

后台服务器根据用户的请求,从数据库中获取用户购物车中的商品列表,并返回给前端页面展示。

6. 购物车页面展示:购物车页面展示用户购物车中的商品列表,包括商品名称、价格、数量、小计和总计等信息。

用户可以通过修改数量、删除商品和清空购物车的操作来管理购物车。

7. 结算功能:用户在购物车页面可以选择结算功能,通过点击“结算”按钮来跳转到结算页面。

结算页面展示用户选择购买的商品,同时提供支付方式和地址选择等功能。

8. 购物车状态保存:购物车功能需要保证用户在不同设备、不同浏览器上的购物车状态同步,可以通过用户账户绑定购物车的方式实现。

用户登录后,将购物车信息与用户账户绑定,用户在不同设备上登录后购物车状态可以同步。

购物车功能的实现需要前端页面和后台服务器的配合,前端页面负责展示购物车信息并与用户交互,后台服务器负责处理前端页面的请求,更新数据库中的购物车信息。

同时需要考虑用户登录状态、商品库存、商品价格和促销活动等因素来优化购物车功能的实现。

java购物车的实现原理

java购物车的实现原理

java购物车的实现原理
Java购物车的实现原理通常涉及以下几个方面:
1. 数据结构,购物车通常是一个存储商品信息的容器。


Java中,可以使用集合类(如ArrayList、HashMap)来存储商品信息,每个商品可以用一个对象来表示,对象中包含商品的属性(如
名称、价格、数量等)。

这样可以方便地对商品进行增删改查操作。

2. 会话管理,在Web应用中,购物车通常与用户的会话相关联。

当用户添加商品到购物车时,需要将商品信息存储在会话中;当用
户浏览购物车或结算时,需要从会话中获取购物车的信息。

Java中
可以使用HttpSession来管理用户的会话信息,将购物车信息存储
在会话中。

3. 操作逻辑,购物车的实现需要考虑用户的操作,如添加商品、删除商品、修改商品数量等。

在Java中,可以通过Servlet或者框
架(如Spring MVC)来处理用户的请求,根据用户的操作来对购物
车进行相应的增删改操作。

4. 数据持久化,有些情况下,需要将购物车的信息持久化存储,
以便用户下次登录时能够看到之前添加的商品。

在Java中可以使用数据库来存储购物车信息,可以使用JDBC或者ORM框架(如Hibernate)来实现购物车信息的持久化。

总的来说,Java购物车的实现原理涉及数据结构、会话管理、操作逻辑和数据持久化等方面,需要综合运用Java语言的特性和相关框架来实现一个完善的购物车功能。

希望这些信息能够帮助你理解Java购物车的实现原理。

会话及会话技术及答案

会话及会话技术及答案

第5章一、填空1.服务器向客户端发送Cookie时,会在HTTP响应头字段中增加____响应头字段。

2.Web应用中的会话指的是一个客户端(浏览器)与____之间连续发生的一系列请求和响应过程。

3.Session相对于Cookie具有更高的安全性,它将关键数据保存在____端。

4.在Servlet技术中,提供了两个用于保存会话数据的对象,分别是____和Session。

5.Tomcat容器中会话的有效时间可以在____文件中设置,默认会话过期时间为30分钟。

二、判断1.Tomcat容器中如果将元素中的时间值设置成0或一个负数,则表示会话永不超时。

2.Session是一种将会话数据保存到服务器端的技术,需要借助Cookie技术来实现。

3.Cookie的domain属性是用来指定浏览器访问的域,设置domain属性时严格区分大小写。

4.Cookie的path属性设置后,只对当前访问路径所属的目录有效。

5.一次会话过程中,只允许客户端与服务器进行一次请求与响应过程。

三、选择1.下列对于setMaxAge(-1)方法的描述中,正确的是()A: 表示通知浏览器保存这个Cookie信息B: 表示通知浏览器立即删除这个Cookie信息C: 表示当浏览器关闭时,Cookie信息会被删除D: 以上说法都是错误的2.Tomcat服务器的默认会话超时时间是()A: 30秒B: 30分钟C: 30毫秒D: 30小时3.下面选项中,用于强制使Session对象无效的方法是()A: request. invalidate ();B: session. validate ();C: response. invalidate ();D: session. invalidate ();4.下面选项中,当存在Session对象直接返回,否则返回null的方法是()A: request.getSession();B: request.getSession(true);C: request.getSession(false);D: response.getSession();5.下列选项中,能够用于获取客户端所有cookie对象的方法是()A: List cookies = request.getCookies();B: Cookie[] cookies = request.getCookies();C: List cookies = response.getCookies();D: Cookie[] cookies = response.getCookies();四、简答1.简述什么是会话技术?会话过程类似于生活中的打电话过程,它指的是一个客户端(浏览器)与Web 服务器之间连续发生的一系列请求和响应过程。

购物车项目开发设计与实现

购物车项目开发设计与实现

项目开发技术购物车项目开发设计与实现目录1 项目需求本次研究选择的开发语言为Java,该系统基于B/S架构,用户可以通过浏览器对服务器使用访问。

首先需要实现网上购物的基本功能,显示商品列表、添加商品到购物车、确认订单,我所研究的重点是对网上购物车的设计与实现模块。

系统功能需求1、能够完成游客或已注册用户对网上商品列表的浏览,以及对各商品的详细信息的查看。

2、能够完成已登陆客户对商品的选购:添加商品到个人购物车,并且对已添加到购物车的商品进行数量的增加、减少、修改和删除等操作。

3、能够通过查看购物车对所选商品进行确定、挑选,确认或修改购物者的联系方式,通过定单查询对支付费用进行确定。

开发系统语言需求采用的主要技术是基于服务器端的JSP、Java的组件JavaBean,以及网页编程语言HTML。

利用JavaEE平台提供的Web编程方式,通过B/S结构方式,实现数据从数据库,到业务处理,到前台展示。

Web部分采用基于MVC模式的Struts框架实现,表现层主要用JSP与JavaScript、EL相结实现,控制层采用ActionServlet负责处理请求和转发请求,业务逻辑层使用JavaBean实现,并且采用DAO设计模式进行数据访问的封装,数据持久层采用JDBC 技术实现业务层和数据库的交互。

设计开发的原则:每层之间都是采用面向接口编程技术,降低了上层对下层逻辑调用的依赖,该项目体现了低耦合、高内聚的设计思想。

服务器: Apache Tomcat数据库: MySQL技术实现:Struts+JDBC+JavaBean发集成环境:用Eclipcse集成环境进行开发JavaScript程序运行环境:Windows XP或Windows 7。

用于编辑HTML文档的字符编辑器或HTML文档编辑器。

开发以及运行环境需求本系统开发的基本环境如表表1-1系统开发环境项目最低配置CPU P4或同型号的CPU内存256M硬盘40G以上显卡Geforce2以上操作系统Windows 7/XP本系统的运行环境如下表表1-2 系统运行环境项目最低配置CPU P3或同型号以上的CPU内存128M硬盘20G以上显卡Geforce2以上操作系统Windows 7/XP 界面需求界面的原则要求:如方便、简洁、美观、一致等。

JSP 实现网上购物

JSP  实现网上购物

JSP 实现网上购物
以前练习中虽然实现过简单的网上购物,但只是使用JSP来实现。

本练习通过Servlet实现简易网上购物程序,该程序需要手动输入要购买的物品,输入完毕后可以提交输入物品。

可以多次输入和查看购买物品。

具体步骤如下:(1)分析程序。

该实例有三个Servlet类组成,分别为输入类GoShop、控制类Control和显示类Save。

(2)实现购物车输入界面:GoShosp.java文件,输入下列代码:
码转换。

在下面创建一个向量对象ve,并调用addElement()方法将获取的数据prod uct添加到向量对象中。

并使用session对象绑定向量ve。

(4)实现购买物品显示类:Save.java文件,输入下列代码:
该文件首先获取session对象绑定的向量ve,在while循环中,将向量中的信息输出到客户端。

(5)测试。

将上述三个Servlet文件配置,其配置方法和前面的Servlet相同。

请求GoShop的Servlet,其执行结果如图5-26。

在该图中输入要购买物品,单击【提交】按钮,会显示图5-27的窗口。

单击图5-27中的【查看所有物品】,会显示如图5-28所示窗口:
图5-26 选择商品页面图5-27 物品购买控制页面
图5-28 显示商品信息页面。

Java-Web应用开发:修改和清空购物车

Java-Web应用开发:修改和清空购物车

4.3 修改和清空购物车1 目标在商品数量文本框内输入一个新的数量,点击“修改数量”,购物车刷新,按照新数量重新计算总金额。

如果用户输入“0”,修改数量之后,该条目从购物车中删除。

(程序未做JS有效值判断,所以请勿输入不合法的数量值)。

点击“清空购物车”,将购物车从session里删除。

2 思路(1) 购物车页面的表格是购物车对象cart的展示结果,表格中的每一行就是购物车cart中的一个元素,两者的内容和顺序是完全一样的。

(2) 购物车页面的表格是放在form表单里的,用户在文本框中修改数量后,点击“修改数量”超链接激发表单的提交,表单提交时,所有的数量文本框中的值都会被提交。

(3) 表单提交给CartEditServlet处理,该servlet取出每个商品数量文本框中的新值,将购物车里对应的商品数量修改为此新值(表格里的第一行商品对应的就是购物车里的第一件商品,第二行对应第二件,以此类推)。

如果某行的数量修改为0,这行对应的购物车商品就从购物车里移除。

(4) 数量文本框的命名规则为num+i,即第一件商品数量框名为num0,第二件为num1,第三件为num2。

这样在遍历购物车时,通过循环变量,就能拼接出当前商品的数量文本框名称,从而获得当前商品的新数量。

(5) 购物车商品数量修改完毕后,forward回查看购物车页面showCart.jsp,展示修改后的结果。

(6) 清空购物车,将购物车对象从session中移除或者把购物车对象clear。

3 步骤3.1 创建CartEditServlet类在cn.estore.servlet.cart包中,创建CartEditServlet类,该servlet处理购物车的修改和清空,由请求参数action的值区分用户动作,请求提交给此servlet的时候必须提供?action=**参数,如果action=clear表示清空,action=modify表示修改数量。

写javaweb购物车那些用文献

写javaweb购物车那些用文献

写javaweb购物车那些用文献
要编写一个JavaWeb购物车,您可以参考以下文献:
1. "Java Servlets and JSP - Build Java EE (JEE) app in 25 Steps" - Ranga Rao Karanam
这本书详细介绍了使用Java Servlets和JSP构建Java EE应用程序的步骤,其中包括购物车的实现。

2. "Head First Servlets and JSP: Passing the Sun Certified Web Component Developer Exam" - Bryan Basham, Kathy Sierra, Bert Bates
这本书是学习Java Servlets和JSP的经典教材,其中包含了购物车的示例代码和实现方法。

3. "Java Web Development: Servlet, JSP, Oracle Database, and Bootstrap" - LOKESH SAHU
这本书详细介绍了使用Java Servlets和JSP进行Web开发的方法,其中包括购物车的实现。

4. "Java Web Programming with Eclipse" - David Turner, Jinseok Chae
这本书介绍了使用Eclipse进行Java Web编程的方法,其中包含了购物车的实现示例。

这些文献提供了从基础知识到实际示例的全面指导,能够帮助您了解如何使用Java Servlets和JSP实现购物车功能。

JSP 使用session购物车

JSP  使用session购物车

JSP 使用session购物车当客户在某家网站购买大量的各种商品时,需要跳转页面的次数会很多。

每当客户选择一种商品就需要把这种商品的信息记录到某个位置,并且这个记录能跟踪客户直到最后结账。

这样的“信息记录的位置”类似于某人去超市购物时使用的购物车,所以也把它形象的叫做“购物车”。

session对象可用于跟踪浏览者,本练习使用session对象实现简易的购物车。

这里需要三个页面相互协作来完成任务,第一个页面用于展示商品,供客户来选择,第二个页面用于实现购物流程的控制(选择继续购物或结账),另一个负责对客户结账处理。

步骤如下:(1)创建选择商品页面:shop.jsp,其效果如图3-19所示。

为了方便演示起见,本练习把客户选择商品过程简化为一个文本输入框,直接让客户输入商品名即可。

文件核心代码如下所示。

图3-19 选择商品<form name="form1" method="post" action="doShop.jsp"><div align="left"><table width="100%" border="0" cellspacing="5"><tr><td><p>请选择要购买的商品:<input type="text" name="goods"><input type="submit" name="Submit" value="提交"></p></td></tr></table></div></form>客户选择的商品数据并加入到购物车,另一个就是实现购物流程的控制(继续购物或结账)。

java项目开发实例

java项目开发实例

java项目开发实例
1. 实例一:购物车系统
该项目主要实现一个购物车系统,用户可以在网上购买商品,将商品放入购物车,然后结算,完成购买。

功能模块:
1. 用户登录注册:用户可以进行登录注册,可以保存用户信息;
2. 商品管理:可以增加删除商品,可以查看所有商品信息;
3. 购物车管理:可以将商品放入购物车,可以查看购物车中的商品;
4. 结算管理:可以查看购买的商品信息,并进行结算;
5. 订单管理:可以查看已经完成的订单,可以查看订单的状态。

实现技术:
1. 前端:HTML、CSS、JavaScript、Bootstrap等;
2. 后端:Servlet、JSP、MySQL等;
3. 框架:SpringMVC、Struts2等。

2. 实例二:在线考试系统
该项目主要实现一个在线考试系统,用户可以在网上进行考试,考试结束后可以查看考试结果。

功能模块:
1. 用户登录注册:用户可以进行登录注册,可以保存用户信息;
2. 试卷管理:可以增加删除试卷,可以查看所有试卷信息;
3. 试题管理:可以增加删除试题,可以查看所有试题信息;
4. 考试管理:可以设置考试时间,可以查看考试结果;
5. 成绩管理:可以查看考试成绩,可以查看。

购物车

购物车

一、/fly_winds/blog/static/531203252008254157519/if(action.equals("add")) {//添加商品String productid = request.getParameter("productid");CartDB dao = new CartDB();cartbean bean = new cartbean();bean=dao.getProductMessage(productid);boolean flag = true;Vector cart = (Vector) session.getAttribute("cart");if (cart == null) {//如果是第一次就创建购物车cart = new Vector();} else {//如果有该物品就数量加一for (int i = 0; i < cart.size(); i++) {cartbean bb = (cartbean) cart.elementAt(i);if (bb.getProductid().equals(productid)) {bb.setNumber(bb.getNumber() + 1);cart.setElementAt(bb, i);flag = false;}}}if (flag) {//如果是新商品就加入购物车中cart.addElement(bean);session.setAttribute("cart", cart);}response.sendRedirect("shoppingcart.jsp");}if (action.equals("modify")||action.equals("modify1")) {//更改购物车商品数量Vector cart = (Vector) session.getAttribute("cart");for (int i = 0; i < cart.size(); i++) {cartbean bb = (cartbean) cart.elementAt(i);int number = Integer.parseInt(request.getParameter("number" + i));bb.setNumber(number);}session.setAttribute("cart", cart);if(action.equals("modify")){response.sendRedirect("shoppingcart.jsp");}else if(action.equals("modify1")){response.sendRedirect("referorder.jsp");}}if (action.equals("del")||action.equals("del1")) {//从购物车上删除商品int id = Integer.parseInt(request.getParameter("id"));Vector cart = (Vector) session.getAttribute("cart");cart.removeElementAt(id);session.setAttribute("cart", cart);if(action.equals("del")){response.sendRedirect("shoppingcart.jsp");}else if(action.equals("del1")){response.sendRedirect("referorder.jsp");}}JSP中代码<%@ page contentType="text/html; charset=GBK" %> <%@ page import="java.util.Vector,shopping.bean.*" %> <html><head><title>购物车</title><link rel="stylesheet" type="text/css" href="syle/style.css"/> <style type="text/css"><!--.style5 {color: #FFFFFF;font-size: 16px;}-->.border {BORDER: #6687ba 1px solid}.style9 {color: #0792ed}body {margin-left: 0px;margin-top: 0px;margin-right: 0px;margin-bottom: 0px;}</style><script type="" language="javascript">function back(){history.back();}</script><script language="javascript" type=""><!--function check(number){var result =number.value;if(result==""){alert("数量不能为空!");number.focus();return false;}if(isNaN(result) || result<=0){alert("请输入合法的数量!");number.focus();return false;}form1.submit();}--></script><script type="" language="javascript">function referorder(){location.href="referorder.jsp";}</script><title>shoppingcart</title></head><body bgcolor="#ffffff"><br /><%Vector cart = (Vector)session.getAttribute("cart");if(cart == null || cart.size() == 0) {out.println("<h3 align='center'>您的购物车为空!</h3>");out.println("<center><a href='LoginJsp.jsp'>继续购物</a></center>"); } else {%><h3 align="center">您的购物车</h3><form name="form1" action="cartservlet?action=modify" method="POST"> <table border="0" width="100%" class="border"><tr><th>编号</th><th>商品名称</th><th>单价</th><th>数量</th><th>金额</th><th>删除</th></tr><%float total = 0;for(int i = 0; i < cart.size(); i++) {cartbean bean = (cartbean)cart.elementAt(i);//float price = bean.getPrice();String productid = bean.getProductid();float price = bean.getPrice();int number = bean.getNumber();float sum = price * number;total = total + sum;String total2=""+total;bean.setTotalprice(sum);//orders or=new orders();//or.setTotalprice(total);session.setAttribute("totalprice",total2);%><tr><td align="center"><%=i+1 %></td><td align="center">诺基亚&nbsp;<%=productid%></td><td align="center">¥<%=price%>元</td><td align="center"><input type="text" size="5" name="number<%=i%>" value="<%=number%>" onblur="check(this);"/></td><td align="center">¥<%=sum%>元</td><td align="center"><a href="cartservlet?action=del&id=<%=i%>">删除</a></td></tr><%}%><tr><td align="center" bgcolor="#FFCC00" colspan="7">商品金额总计:¥<font color="red"><%=total %>元</font><input name="button2" type="button" class="input_bot" value="去收银台" onclick="referorder();"><input name="button" type="button" class="input_bot" onClick="back();" value="继续购物"></td> </tr></table></form><%}%></body></html>二、内置对象实例--购物车简介一、主要功能:1、“index.jsp”页面中显示用户可以购买的商品。

简述servlet的作用

简述servlet的作用

简述servlet的作用Servlet是Java编写的服务器端程序,用于处理客户端的HTTP请求并生成响应。

它是JavaEE(Java Enterprise Edition)的一部分,是构建动态Web应用程序的重要组件。

Servlet的作用主要有以下几个方面:1. 处理HTTP请求和生成响应:Servlet可以接收来自客户端的HTTP请求,并根据请求的内容进行相应的处理,例如查询数据库、计算、生成动态HTML等。

然后,Servlet可以生成一个包含响应内容的HTTP响应,返回给客户端。

2. 实现业务逻辑:Servlet可以作为Web应用程序的控制器,根据不同的请求参数或路径,调用相应的业务逻辑处理方法。

它可以处理用户注册、登录、查询、修改等各种业务功能。

3. 与数据库交互:Servlet可以通过Java的数据库连接技术(如JDBC)与数据库进行交互,实现数据的读取、插入、更新和删除等操作。

它可以接收客户端的请求,从数据库中查询数据并返回给客户端,或者将客户端提交的数据写入数据库。

4. 生成动态内容:Servlet可以根据客户端请求的不同,动态生成HTML、XML、JSON等格式的内容,并将其作为响应返回给客户端。

这样就可以实现个性化、实时更新的Web页面。

5. 跨域访问:Servlet可以处理跨域请求,通过设置响应头部信息,实现浏览器端的跨域访问控制。

这在多个域名或端口之间共享资源时非常有用。

6. 会话管理:Servlet可以通过会话对象(HttpSession)来管理用户会话状态。

它可以创建、销毁和跟踪会话,并存储和读取会话数据。

这对于实现用户登录、权限控制、购物车等功能至关重要。

7. 过滤和拦截:Servlet可以通过过滤器(Filter)来拦截请求和响应,对其进行预处理和后处理。

它可以用于验证用户身份、记录日志、压缩响应内容等。

通过过滤器,可以实现对请求和响应的统一处理,提高代码的复用性和可维护性。

实验二实现简单购物车

实验二实现简单购物车

实验二JSP语法和内置对象
一、实验目的
1、掌握JSP变量/方法,表达式,代码段和注释的使用方法;
2、掌握JSP指令的语法格式及用法;
3、掌握JSP常用动作的语法格式及用法;
4、掌握常用的JSP内置对象。

二、实验环境
Windows平台下,Myeclipse开发工具,Web服务器用Tomcat,Java开发环境用JDK1.5或更高。

三、实验内容:
1. 实现商品展示页面,简单的JSP页面如下:
2.实现购物车流程控制。

i.通过request.getParameter()方法获取商品名称,如果没有获取到商
品名称,重新返回购物页面。

ii.构造一个ArrayList对象存储商品名称,并将新的商品名称添加到ArrayList中。

iii.将ArrayList保存到session中
iv.如果单击“继续购买商品”按钮,则回到购物页面,如果单击“到收银台结账”,则前往结账页面。

3.客户结账处理。

从session中取出list的值存入ArrayList中,并遍历
输出购物车中的商品。

四、实验注意事项
调试程序时注意每个文件输入时的正确性及调试过程中的错误处理。

五、实验报告。

web前端购物车的实现思路

web前端购物车的实现思路

web前端购物车的实现思路一、购物车的介绍在现代电子商务网站中,购物车是用户进行商品选择和结算的重要工具。

它可以存储商品的信息,方便用户随时查看和修改已选商品,是网站购物流程不可或缺的一部分。

本文将介绍一种实现 web 前端购物车的思路。

二、购物车功能实现1. 数据存储购物车需要存储用户选择的商品信息。

可以使用 JavaScript 中的数组或对象来存储商品对象,每个对象包含商品的属性(如名称、价格、数量等)。

同时,可以使用浏览器的本地存储(如 localStorage)来保存购物车数据,以便用户关闭页面后仍可保留已选商品。

2. 商品展示购物车页面需展示用户已选择的商品信息,可通过遍历购物车数据,动态渲染商品列表。

每个商品显示名称、价格、数量等相关信息,并提供修改和删除选项。

3. 添加商品在商品详情页等位置,提供添加到购物车的功能。

通过监听添加按钮的点击事件,将商品信息添加到购物车数据中。

若商品已存在于购物车中,则更新数量;若不存在,则创建新的商品对象。

4. 修改商品数量购物车页面应提供修改商品数量的功能。

可以为每个商品设置增加和减少数量的按钮,并通过监听按钮的点击事件,更新对应商品的数量属性。

同时,需实时更新商品的总价和购物车的总价。

5. 删除商品购物车页面允许用户删除已选商品。

为每个商品提供删除按钮,通过监听按钮的点击事件,从购物车数据中移除对应商品对象,并刷新购物车页面。

6. 结算功能购物车页面需要提供结算功能,方便用户付款。

可以设置结算按钮,点击后跳转到结算页面,显示用户已选择的商品和总价,并提供支付方式选择和地址填写等功能。

三、购物车页面设计1. 布局购物车页面布局应简洁明了,可以分为商品列表区域和结算区域。

商品列表区域展示用户已选商品信息,结算区域包括总价信息和结算按钮。

2. 样式购物车页面的样式应符合网站的整体设计风格,注重用户体验。

可以使用 CSS 进行美化,如为商品列表添加边框、调整按钮样式、设置动画效果等,提升页面的美观性和交互性。

JAVAWEB购物车实验报告

JAVAWEB购物车实验报告

JAVAWEB购物车实验报告购物车是电子商务网站中常见的一个功能模块,通过购物车用户可以将自己想要购买的商品加入到购物车中,方便用户后续操作和管理。

本实验通过使用Java Web技术,实现了一个简单的购物车功能。

在本实验中,我们使用了Java语言和Servlet技术来实现购物车功能。

首先我们需要搭建一个Java Web项目,在项目中创建一个CartServlet类来处理购物车操作。

通过对请求的解析和处理,我们可以实现添加商品、移除商品、修改商品数量等操作。

在实现购物车功能时,我们使用了一个Cart类来表示购物车。

该类中包含了一个商品列表和一些方法来实现对商品的操作。

在CartServlet类中,我们通过Session来存储用户的购物车信息,这样用户可以在不同的页面之间共享购物车信息。

在添加商品到购物车时,我们首先判断商品是否已经在购物车中,如果是则增加商品数量,否则将商品添加到购物车中。

在移除商品时,我们只需要找到购物车中对应的商品并移除即可。

在修改商品数量时,我们需要找到购物车中对应的商品并更新数量。

为了展示购物车功能,我们创建了一个简单的网页,用户可以通过该网页向购物车中添加商品、移除商品和修改数量。

当用户添加商品到购物车时,页面会显示添加成功的提示信息,并显示当前购物车中的商品列表。

用户可以通过页面上的按钮来移除商品和修改商品数量。

通过实验,我们成功实现了一个简单的购物车功能,用户可以方便地将自己想要购买的商品添加到购物车中,并通过页面对购物车中的商品进行管理。

通过了解和使用Java Web技术,我们进一步加深了对Servlet和Session的理解,并学会了如何使用Java Web技术来开发购物车功能。

在未来的工作中,我们可以进一步完善购物车功能,比如增加结算功能和保存用户购物车信息的功能,以提升用户的购物体验。

此外,我们还可以学习和使用其他的Java Web框架,如Spring MVC和Struts等,来更加高效地开发和管理购物车功能。

J2EE EJB 项目实训——网上商城购物车模块实现案例(第2部分)

J2EE EJB 项目实训——网上商城购物车模块实现案例(第2部分)

1.1网上商城购物车模块实现案例(第2部分)1.1.1CartSessionBean+用户类+无状态Bean1、在该项目中再增加一个无状态的会话Bean(1)右击设计面板(2)该SessionBean的名称为CalculateSessionEJBBean,类型为stateless,由容器进行事务管理,interface类型设置为local/remote。

注意:EJB 2.0:“本地”接口和“远程”接口EJB 1.1规范给EJB客户端提供了一个remote interface和一个remote home interface与EJB 实例交互,得到位置的透明度。

以类似的形式,EJB 2.0规范现在给EJB客户端提供了一个local interface和一个local home interface来与共享同一个JVM的EJB实例交互。

EJB remote interface(javax.ejb.EJBObject)和remote home interface(javax.ejb.EJBHome)在本质上是Java RMI接口。

远程客户端运用接口和与Java RMI-IIOP兼容的参数与EJBs通讯。

参数和方法的结果值在同一个容器中传递,或者跨网络传递到远程容器。

这种编程模式给EJB客户端提供了一种访问EJB组件的方法,就好像这些组件是本地的一样。

然后,容器就可以透明地处理网络通讯和执行其它功能。

这种方法很适合粗粒度的(coarse-grained)方法调用,其中客户端和EJBs之间的客户端通讯保持到最小限度。

相反,EJB local interface(javax.ejb.EJBLocalObject)和local home interface (javax.ejb.EJBLocalHome)不是Java RMI接口,它们是EJB 2.0的新功能。

本地客户端——如其它EJBs,运用相同JVM中传递的参数直接与EJBs通讯。

Java Web jsp servlet mysql 购物车

Java Web jsp servlet mysql 购物车
29
结账模块技术分析
打开结账页面时,由系统自动生成的订单号 就已经显示在页面中了,也就是说查看购物车 页面中的“结账”链接并不是指向一个页面, 而是一个请求,该请求会调用公共类 “CodeCreator.java”中的方法得到订单号,然后 重定向到订单页面。 用户单击“结账”按钮后会将订单信息和 用户当前购物车中的商品信息储存到数据库中, 同时将用户session及其购物车session清除。
private Integer id; private String goodsName; private float price; private Integer number; //商品id //商品名称 //商品价格 //购物车中商品数量
2.创建类CartController.java,其中的add()方法处 理添加至购物车请求。 3. 创建页面addSCSuccess.jsp,其中显示成功信息, 并加入了继续购物和查看购物车链接
30
结账模块实现过程(1)
1.用户单击查看购物车页面中的“结账”链接后发 出 “ account.do?flag=0” 请 求 , 该 请 求 由 类 “AccountController.java”中的getAccount()方法处理。
2.创建订单填写页面“account.jsp”,从request中得 到订单号,从session中得到用户信息 。
详细代码
9
编码转换类设计
在公共模块中加入用于处理编码转换的类 “Chinese.java”,该类中的方法toChinese()将编 码转换后的字符串返回。主要代码如下:
public static String toChinese(String strvalue) { try { if (strvalue == null) return ""; else { //将编码转换为GBK strvalue = new String(strvalue.getBytes("ISO8859_1"), "GBK"); return strvalue; } } catch (Exception e) { return ""; e.printStackTrace();} }

JSP技术中使用MVC模式实现Web购物车

JSP技术中使用MVC模式实现Web购物车

JSP技术中使用MVC模式实现Web购物车摘要本文介绍了使用jsp技术实现基于mvc模式的web购物车的设计思想,并给出了部分程序代码。

关键词 web购物车;jsp;mvc;javabean;servlet中图分类号 tp393 文献标识码 a 文章编号1674-6708(2010)17-0121-020 引言java server pages简称jsp,是由sun公司倡导,多个公司共同建立的一种技术标准,它建立在servlet之上。

应用jsp,程序员或非程序员可以高效率地创建web应用程序,并使得开发的web应用程序具有安全性高、跨平台等优点。

1 mvc模式mvc是model-view-controller(模型-视图-控制器)的缩写,最早是应用在smalltalk语言中,为图形方式交互的软件提供一种架构。

当软件变得复杂时,适当地按功能分解能使结构更加清晰。

同样,对于界面显示和数据处理都较复杂的软件,将它们分离开来更利于维护,mvc正是为了这一问题而提出的。

mvc模式包含模型、视图、控制器3部分,其原理如图1,其中模型部分定义了软件的数据模型及操作细节,视图部分专门处理图形界面,控制器则是模型和视图之间的协调者。

图1mvc模式原理示意图从功能上看,视图和模型部分是互相影响的,如当用户单击界面的按钮时,模型部分应该执行相应的操作。

但一般情况下,视图和模型不会直接将变化事件通知对方,而是通过控制器来从中协调。

在设计时,视图部分将事件和控制器的事件处理器关联起来,而事件处理器又和模型部分的数据操作挂钩,当用户操作界面元素时,视图部分发出事件,控制器捕获该事件并通知模型部分执行数据操作,然后通知视图更新。

当然这并不是说视图和模型部分完全没有联系,但mvc的设计思想是尽量减少这两者的耦合。

web购物车在具体实现时,javabean实现模型部分,负责处理逻辑以及向jsp页面提供数据接口。

servlet实现控制器的功能,负责创建bean对象,调用相关的处理方法,并根据处理结果转到适当的页面。

先建个购物车的实体类

先建个购物车的实体类

先建个购物车的实体类如:public class CartItemBean {private FoodBean food; //餐品private int quantity; //餐品数量public CartItemBean(FoodBean foodToAdd, int number){food = foodToAdd;quantity = number;}public FoodBean getFood() {return food;}public void setFood(FoodBean food) {this.food = food;}public int getQuantity() {return quantity;}public void setQuantity(int quantity) {this.quantity = quantity;}}建个Serbletpublic class AddFoodToCart extends HttpServlet {/*** 购物车操作Servlet 实现思路*/public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {response.setContentType("text/html; charset=GBK");PrintWriter out = response.getWriter();HttpSession session = request.getSession(false); //获得session RequestDispatcher dispatcher; //定义转发器//从session中取出购物车放入Map对象cart中Map cart = (Map) session.getAttribute("cart");//从session中取出当前要添加到购物车中的餐品,放入FoodBean对象food1中FoodBean food1 = (FoodBean) session.getAttribute("foodToAdd");if(cart == null){ //如果购物车布存在,则创建购物车cart = new HashMap();session.setAttribute("cart", cart); //将购物车放入session中}//判断购物车是否在购物车中CartItemBean cartItem = (CartItemBean) cart.get(food1.getFoodID());if(cartItem != null){ //如果餐品在购物车中,则更新其数量cartItem.setQuantity(cartItem.getQuantity()+1);}else{ //否则,创建一个条目到Map中cart.put(food1.getFoodID(), new CartItemBean(food1,1));// 转向viewCart.jsp显示购物车dispatcher = request.getRequestDispatcher("/ch05/shopCart.jsp");dispatcher.forward(request, response);}if(session == null){dispatcher = request.getRequestDispatcher("/ch05/show.jsp");dispatcher.forward(request, response);}out.flush();out.close();}/*** The doPost method of the servlet. <br>**/public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {doGet(request,response);}}教你如何用WORD文档(2012-06-27 192246)转载▼标签:杂谈1. 问:WORD 里边怎样设置每页不同的页眉?如何使不同的章节显示的页眉不同?答:分节,每节可以设置不同的页眉。

购物车的原理以及实现

购物车的原理以及实现

购物车的原理以及实现 今天模拟京东的购物车实现原理完成了购物车模块的开发,给⼤家分享下。

京东的购物车实现原理:在⽤户登录和不登录的状态下对购物车存⼊cookie还是持久化到redis中的实现。

下⾯就来具体说次购物车的实现过程两种情况:⽤户登录,购物车存⼊redis中⽤户未登录,购物车存⼊cookie中⽐较两种⽅式的优缺点: cookie:优点:数据保存在⽤户浏览器中,不占⽤服务端内存;⽤户体检效果好;代码实现简单 缺点:cookie的存储空间只有4k;更换设备时,购物车信息不能同步;cookie禁⽤,不提供保存 redis:优点:数据能够持久化;实现了购物车同步 缺点:增加了数据库的压⼒,速度慢先介绍使⽤cookie存储购物车的实现思路1、⽤户未登录状态下,⽤户添加购物车,⾸先从cookie中查询购物车中的商品列表2、判断cookie的商品列表中是否有要添加的商品信息3、如果cookie中有该商品信息,将商品的数量相加4、如果没有,根据商品的id值查询商品信息5、将商品添加到购物车列表中6、将购物车列表写⼊cookie中,设置cookie的过期时间7、将cookie返回给客户端。

购物车的实现:这⾥直接使⽤商品作为购物项对象,在页⾯中计算购物项的⼩计和购物车的总⾦额package nyist.e3.pojo;import java.io.Serializable;import java.util.Date;public class TbItem implements Serializable{private Long id;private String title;private String sellPoint;private Long price;private Integer num;//作为购物项购买的商品数量private String barcode;private String image;//展⽰购物项中的图⽚private Long cid;private Byte status;private Date created;private Date updated;public Long getId() {return id;public void setId(Long id) {this.id = id;}public String getTitle() {return title;}public void setTitle(String title) {this.title = title == null ? null : title.trim();}public String getSellPoint() {return sellPoint;}public void setSellPoint(String sellPoint) {this.sellPoint = sellPoint == null ? null : sellPoint.trim(); }public Long getPrice() {return price;}public void setPrice(Long price) {this.price = price;}public Integer getNum() {return num;}public void setNum(Integer num) {this.num = num;}public String getBarcode() {return barcode;}public void setBarcode(String barcode) {this.barcode = barcode == null ? null : barcode.trim(); }public String getImage() {return image;}public void setImage(String image) {this.image = image == null ? null : image.trim();}public Long getCid() {return cid;}public void setCid(Long cid) {this.cid = cid;}public Byte getStatus() {return status;}public void setStatus(Byte status) {this.status = status;}public Date getCreated() {return created;}public void setCreated(Date created) {this.created = created;}public Date getUpdated() {return updated;}public void setUpdated(Date updated) {this.updated = updated;}cookie中实现添加购物车的代码:@Controllerpublic class ShopCartController {@Autowiredprivate TbItemService tbItemService;@Autowiredprivate ShopCartService shopCartService;// 获取过期时间@Value("${EXPIRE_KEY}")private Integer EXPIRE_KEY;@Value("${CART_COOKIE}")private String CART_COOKIE;/*** 需求:将商品加⼊购物车中未登录状态下,将购物超过添加到cookie中** 分析:1、从cookie中获取购物车信息* 2、判断购物车中的商品,如果添加的商品存在,数量相加,不存在,根据商品id查询商品信息,添加到cookie中* 3、将购物车列表信息写⼊cookie中*** @param itemId* @param num* @return*/@RequestMapping("/cart/add/{itemId}")public String addCart(@PathVariable Long itemId, @RequestParam(defaultValue = "1") Integer num,HttpServletRequest request, HttpServletResponse response) {// 1.获得购物车列表List<TbItem> itemList = getCartItemList(request);// ⽤来判断商品是否存在的标志boolean flag = false;// 2、循环遍列表中的商品信息for (TbItem tbItem : itemList) {// 3、判断添加的商品是否存在if (tbItem.getId() == itemId.longValue()) {// 4、添加的商品在cookie中存在,将数量相加tbItem.setNum(tbItem.getNum() + num);// 重置标签flag = true;// 跳出循环break;}}if (!flag) {// cookie中没有添加的商品信息// 通过商品id查询商品信息TbItem item = tbItemService.getItemById(itemId);item.setNum(num);if (StringUtils.isNotBlank(item.getImage())) {// 取⼀张图⽚⽤于展⽰使⽤item.setImage(item.getImage().split(",")[0]);}// 将商品添加购物车itemList.add(item);}//将购物车写⼊cookie中CookieUtils.setCookie(request, response, CART_COOKIE, JsonUtils.objectToJson(itemList),EXPIRE_KEY,true);return "cartSuccess";}}cookie中查询购物车列表:思路:1、根据cookie的name值直接取出商品列表信息2、将购物车列表添加到model中,返回逻辑视图private List<TbItem> getCartItemList(HttpServletRequest request) {String json = CookieUtils.getCookieValue(request, CART_COOKIE, true);if (StringUtils.isNotBlank(json)) {// 返回cookie中取出的数据集合return JsonUtils.jsonToList(json, TbItem.class);}// 返回空集合对象return new ArrayList<>();}@RequestMapping("/cart/cart")public String getCartList(HttpServletRequest request, HttpServletResponse response, Model model) {// 从cookie中取出商品信息,List<TbItem> itemList = getCartItemList(request);// 将购物车信息返回给页⾯中model.addAttribute("cartList", itemList);// 跳转逻辑视图return "cart";}cookie中实现删除购物车中商品的功能:1、接收页⾯传递的善品id值2、从cookie中取出购物车列表,进⾏循环遍历,然后遍历的每⼀个商品信息和要删除的商品进⾏对⽐3、如果存在就从购物车列表中将该商品移除4、重新将购物车列表写⼊cookie中5、将cookie信息响应给客户端@RequestMapping("/cart/delete/{itemId}")public String deleteCartItem(@PathVariable Long itemId, HttpServletRequest request, HttpServletResponse response) {List<TbItem> list = getCartItemList(request);for (TbItem tbItem : list) {if (tbItem.getId() == itemId.longValue()) {list.remove(tbItem);break;}}// 删除成功后,将购物车列表写⼊cookie中CookieUtils.setCookie(request, response, CART_COOKIE, JsonUtils.objectToJson(list), EXPIRE_KEY, true);// 删除成功后,重定向到购物车列表页⾯return "redirect:/cart/cart.html";}cookie购物车的添加,查询,删除已经实现实现,更改⽅法和删除⽅法实现过程基本⼀样登录状态下redis购物车的实现实现redis购物车添加功能思路:1、从request域中取出登录⽤户的信息2、使⽤redis存储购物车列表使⽤redis中的hash数据类型 hash的key 使⽤登录⽤户id值,field的key使⽤商品的id值,将商品的信息作为field的value值3、完成cookie存储购物车列表的功能实现的代码:@Overridepublic E3Result addCart(Long userId, Long itemId, Integer num) {try {// 从redis中取出购物车,判断是否已经有购物项Boolean hexists = jedisClient.hexists(CART_REDIS_KEY_PRE + ":" + userId + "", itemId + "");if (hexists) {// 表⽰购物车中已经有该商品,只需要将该商品的数量相加即可String hget = jedisClient.hget(CART_REDIS_KEY_PRE + ":" + userId + "", itemId + "");// 将数量相加TbItem item = JsonUtils.jsonToPojo(hget, TbItem.class);item.setNum(item.getNum() + num);jedisClient.hset(CART_REDIS_KEY_PRE + ":" + userId + "", itemId + "", JsonUtils.objectToJson(item));return E3Result.ok();}// 表⽰购物车中没有要添加的商品信息// 根据商品的id查询商品的信息TbItem item = itemMapper.selectByPrimaryKey(itemId);item.setNum(num);if (StringUtils.isNotBlank(item.getImage())) {item.setImage(item.getImage().split(",")[0]);}// 将商品信息存⼊购物车中jedisClient.hset(CART_REDIS_KEY_PRE + ":" + userId + "", itemId + "", JsonUtils.objectToJson(item));return E3Result.ok();} catch (Exception e) {e.printStackTrace();}return E3Result.build(400, "商品添加购物车失败");}展⽰登录状态下的购物车列表:需要将cookie中的购物车和redis中的购物车整合1、从cookie中取出购物车列表对象2、从redis中取出购物车对象3、将cookie中的购物车列表和redis中的购物车列表整合(取出cookie中的购物车列表,然后添加到redis购物车中即可)5、最终展⽰的结果以redis中的购物车为主/*** cookie中的购物车和redis中的购物车进⾏整合*/@Overridepublic E3Result mergeCart(Long userId, List<TbItem> itemList) {for (TbItem tbItem : itemList) {// 只需要调⽤登录状态下添加购物车业务处理逻辑即可addCart(userId, tbItem.getId(), tbItem.getNum());}return E3Result.ok();}redis购物车中删除购物项将⽤户的id值和商品的id值分别作为hahs的key和field的key,调⽤redis中的hdel(String key,String...field)即可完成删除功能/*** 删除购物车** @return**/@Overridepublic E3Result deleteCartItem(Long id, Long itemId) {Long hdel = jedisClient.hdel(CART_REDIS_KEY_PRE + ":" + id + "", itemId + "");System.out.println("删除购物车购物项为"+hdel);return E3Result.ok();}redis购物车中更新购买商品的数量/*** 更新购物车中商品的数量*/@Overridepublic E3Result updateRedisNum(Long id, Long itemId, Integer num) {// 取出需要更改数量的商品信息String hget = jedisClient.hget(CART_REDIS_KEY_PRE + ":" + id + "", itemId + "");// 将取出的json数据转换为商品对象,然后更新数量TbItem item = JsonUtils.jsonToPojo(hget, TbItem.class);item.setNum(num);// 更新成功后,将数据写到redis购物车中jedisClient.hset(CART_REDIS_KEY_PRE + ":" + id + "", itemId + "", JsonUtils.objectToJson(item));return E3Result.ok();}当⽤户点击去结算时:跳转到订单确认页⾯1、⽣成订单详情3、选择⽀付⽅式在确认订单之前,应该判断⽤户是否是登录装态,可以使⽤拦截器实现1、⾃定义拦截器实现HandlerInteceptor接⼝2、从cookie中去token消息(登录认证的令牌)3、判断token的值是否为空,如果为空,就跳转到⽤户登录页⾯完成登录,同时需要将当前地址栏的url作为参数传递(在登录的业务逻辑中,接收该url,完成登录后,跳转会该页⾯)4、如果token不为空,根据token查询⽤户信息,然后将⽤户信息写⼊request域中,拦截器执⾏放⾏操作5、此时获取到的购物车列表是从redis中读出的和cookie整合的最新的购物车。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

应用Servlet实现购物车具体实现过程1、创建封装商品信息的值JavaBean---------GoodsSingle package com.yxq.valuebean;public class GoodsSingle {private String name; //保存商品名称private float price; //保存商品价格private int num; //保存商品购买数量public String getName() {return name;}public void setName(String name) { = name;}public int getNum() {return num;}public void setNum(int num) {this.num = num;}public float getPrice() {return price;}public void setPrice(float price) {this.price = price;}}2、创建工具JavaBean-------- MyTools 实现字符型数据转换为整型及乱码处理package com.yxq.toolbean;import java.io.UnsupportedEncodingException;public class MyTools {public static int strToint(String str){ //将String型数据转换为int型数据的方法if(str==null||str.equals(""))str="0";int i=0;try{i=Integer.parseInt(str); //把str 转换成int 类型的变量}catch(NumberFormatException e){ // try-catch就是监视try中的语句,如果抛出catch中声明的异常类型i=0;e.printStackTrace(); //把Exception 的详细信息打印出来}return i;}public static String toChinese(String str){ //进行转码操作的方法if(str==null)str="";try {str=new String(str.getBytes("ISO-8859-1"),"gb2312");} catch (UnsupportedEncodingException e) {str="";e.printStackTrace();}return str;}}3、创建购物车JavaBean------ ShopCar实现添加、删除,购物车制作package com.yxq.toolbean;package com.yxq.toolbean;import java.util.ArrayList;import com.yxq.valuebean.GoodsSingle;public class ShopCar {private ArrayList buylist=new ArrayList();//用来存储购买的商品public void setBuylist(ArrayList buylist) {this.buylist = buylist;}/*** @功能向购物车中添加商品* @参数single为GoodsSingle类对象,封装了要添加的商品信息*/public void addItem(GoodsSingle single){if(single!=null){if(buylist.size()==0){//如果buylist中不存在任何商品GoodsSingle temp=new GoodsSingle();temp.setName(single.getName());temp.setPrice(single.getPrice());temp.setNum(single.getNum());buylist.add(temp); //存储商品}else{//如果buylist中存在商品int i=0;for(;i<buylist.size();i++){//遍历buylist集合对象,判断该集合中是否已经存在当前要添加的商品GoodsSingle temp=(GoodsSingle)buylist.get(i);//获取buylist集合中当前元素if(temp.getName().equals(single.getName())){ //判断从buylist集合中获取的当前商品的名称是否与要添加的商品的名称相同//如果相同,说明已经购买了该商品,只需要将商品的购买数量加1temp.setNum(temp.getNum()+1);//将商品购买数量加1break;//结束for循环}}if(i>=buylist.size()){//说明buylist中不存在要添加的商品GoodsSingle temp=new GoodsSingle();temp.setName(single.getName());temp.setPrice(single.getPrice());temp.setNum(single.getNum());buylist.add(temp);//存储商品}}}}/*** @功能从购物车中移除指定名称的商品* @参数name表示商品名称public void removeItem(String name){for(int i=0;i<buylist.size();i++){ //遍历buylist集合,查找指定名称的商品GoodsSingle temp=(GoodsSingle)buylist.get(i);//获取集合中当前位置的商品if(temp.getName().equals(name)){ //如果商品的名称为name参数指定的名称if(temp.getNum()>1){ //如果商品的购买数量大于1temp.setNum(temp.getNum()-1); //则将购买数量减1break; //结束for循环}else if(temp.getNum()==1){ //如果商品的购买数量为1buylist.remove(i); //从buylist集合对象中移除该商品}}}}4、创建实例首页面index.jsp,初始化商品信息<%@ page contentType="text/html;charset=gb2312"%><jsp:forward page="/index"/>5、创建处理用户访问首页面请求的Servlet---IndexServletpackage com.yxq.servlet;import java.io.IOException;import java.util.ArrayList;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession;import com.yxq.valuebean.GoodsSingle;public class IndexServlet extends HttpServlet {private static ArrayList goodslist=new ArrayList();protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doPost(request,response);}protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {HttpSession session=request.getSession();session.setAttribute("goodslist",goodslist);response.sendRedirect("show.jsp");}static{ //静态代码块String[] names={"苹果","香蕉","梨","橘子"};float[] prices={2.8f,3.1f,2.5f,2.3f};for(int i=0;i<4;i++){GoodsSingle single=new GoodsSingle();single.setName(names[i]);single.setPrice(prices[i]);single.setNum(1);goodslist.add(single);}}}6、show.jsp显示商品信息<%@ page contentType="text/html;charset=gb2312"%> <%@ page import="java.util.ArrayList" %><%@ page import="com.yxq.valuebean.GoodsSingle" %> <% ArrayListgoodslist=(ArrayList)session.getAttribute("goodslist"); %><table border="1" width="450" rules="none" cellspacing="0" cellpadding="0"><tr height="50"><td colspan="3" align="center">提供商品如下</td></tr><tr align="center" height="30" bgcolor="lightgrey"> <td>名称</td><td>价格(元/斤)</td><td>购买</td></tr><% if(goodslist==null||goodslist.size()==0){ %><tr height="100"><td colspan="3" align="center">没有商品可显示!</td></tr><%}else{for(int i=0;i<goodslist.size();i++){GoodsSinglesingle=(GoodsSingle)goodslist.get(i);%><tr height="50" align="center"><td><%=single.getName()%></td><td><%=single.getPrice()%></td><td><a href="doCar?action=buy&id=<%=i%>">购买</a></td></tr><%}}%>7、创建处理用户购买、移除、清空购物车请求的ServletServlet----- BuyServletpackage com.yxq.servlet;import java.io.IOException;import java.util.ArrayList;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession;import com.yxq.toolbean.MyTools;import com.yxq.toolbean.ShopCar;import com.yxq.valuebean.GoodsSingle;public class BuyServlet extends HttpServlet {protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doPost(request,response);}protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {String action=request.getParameter("action"); //获取action参数值if(action==null)action="";if(action.equals("buy")) //触发了“购买”请求buy(request,response); //调用buy()方法实现商品的购买if(action.equals("remove")) //触发了“移除”请求remove(request,response); //调用remove()方法实现商品的移除if(action.equals("clear")) //触发了“清空购物车”请求clear(request,response); //调用clear()方法实现购物车的清空}//实现购买商品的方法protected void buy(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {HttpSession session=request.getSession();String strId=request.getParameter("id"); //获取触发“购买”请求时传递的id参数,该参数存储的是商品在goodslist对象中存储的位置int id=MyTools.strToint(strId);ArrayListgoodslist=(ArrayList)session.getAttribute("goodslist");GoodsSingle single=(GoodsSingle)goodslist.get(id);ArrayListbuylist=(ArrayList)session.getAttribute("buylist"); //从session范围内获取存储了用户已购买商品的集合对象if(buylist==null)buylist=new ArrayList();ShopCar myCar=new ShopCar();myCar.setBuylist(buylist); //将buylist对象赋值给ShopCar类实例中的属性myCar.addItem(single); //调用ShopCar类中addItem()方法实现商品添加操作session.setAttribute("buylist",buylist);response.sendRedirect("show.jsp"); //将请求重定向到show.jsp页面}//实现移除商品的方法protected void remove(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {HttpSession session=request.getSession();ArrayListbuylist=(ArrayList)session.getAttribute("buylist");String name=request.getParameter("name");ShopCar myCar=new ShopCar();myCar.setBuylist(buylist); //将buylist对象赋值给ShopCar类实例中的属性myCar.removeItem(MyTools.toChinese(name)); //调用ShopCar类中removeItem ()方法实现商品移除操作response.sendRedirect("shopcar.jsp");}//实现清空购物车的方法protected void clear(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {HttpSession session=request.getSession();ArrayListbuylist=(ArrayList)session.getAttribute("buylist"); //从session范围内获取存储了用户已购买商品的集合对象buylist.clear();//清空buylist集合对象,实现购物车清空的操作response.sendRedirect("shopcar.jsp");}}8、在web.xml文件中配置Servlet<?xml version="1.0" encoding="UTF-8"?><web-app><!-- 配置IndexServlet --><servlet><servlet-name>indexServlet</servlet-name><servlet-class>com.yxq.servlet.IndexServlet</servlet-class ></servlet><servlet-mapping><servlet-name>indexServlet</servlet-name><url-pattern>/index</url-pattern></servlet-mapping><!-- 配置BuyServlet --><servlet><servlet-name>buyServlet</servlet-name><servlet-class>com.yxq.servlet.BuyServlet</servlet-class> </servlet><servlet-mapping><servlet-name>buyServlet</servlet-name><url-pattern>/doCar</url-pattern></servlet-mapping></web-app>9、创建页面shopcar.jsp购物车<%@ page contentType="text/html;charset=gb2312"%> <%@ page import="java.util.ArrayList" %><%@ page import="com.yxq.valuebean.GoodsSingle" %> <%//获取存储在session中用来存储用户已购买商品的buylist 集合对象ArrayListbuylist=(ArrayList)session.getAttribute("buylist");float total=0; //用来存储应付金额%><table border="1" width="450" rules="none" cellspacing="0" cellpadding="0"><tr height="50"><td colspan="5" align="center">购买的商品如下</td></tr><tr align="center" height="30" bgcolor="lightgrey"> <td width="25%">名称</td><td>价格(元/斤)</td><td>数量</td><td>总价(元)</td><td>移除(-1/次)</td><% if(buylist==null||buylist.size()==0){ %><tr height="100"><td colspan="5" align="center">您的购物车为空!</td></tr><%}else{for(int i=0;i<buylist.size();i++){GoodsSingle single=(GoodsSingle)buylist.get(i);String name=single.getName(); //获取商品名称float price=single.getPrice(); //获取商品价格int num=single.getNum(); //获取购买数量//计算当前商品总价,并进行四舍五入float money=((int)((price*num+0.05f)*10))/10f;total+=money; //计算应付金额%><tr align="center" height="50"><td><%=name%></td><td><%=price%></td><td><%=num%></td><td><%=money%></td><td><ahref="doCar?action=remove&name=<%=single.getName() %>">移除</a></td></tr><%}}%><tr height="50" align="center"><td colspan="5">应付金额:<%=total%></td></tr><tr height="50" align="center"><td colspan="2"><a href="show.jsp">继续购物</a></td><td colspan="3"><a href="doCar?action=clear">清空购物车</a></td></tr></table>。

相关文档
最新文档