JSP购物车实例

上传人:仙*** 文档编号:114282438 上传时间:2022-06-28 格式:DOC 页数:16 大小:139.50KB
收藏 版权申诉 举报 下载
JSP购物车实例_第1页
第1页 / 共16页
JSP购物车实例_第2页
第2页 / 共16页
JSP购物车实例_第3页
第3页 / 共16页
资源描述:

《JSP购物车实例》由会员分享,可在线阅读,更多相关《JSP购物车实例(16页珍藏版)》请在装配图网上搜索。

1、目标:l掌握购物车的信息如何存储;l掌握购物车常用功能的实现。主要内容:l首先分析用户上网购物的一般过程;l介绍采用什么样的数据结构存储购物信息;l编写购物界面;l完成向购物车添加物品的功能。1、用户上网购物的一般过程在浏览物品的过程中如果对某件物品感兴趣,会添加到购物车(购物篮)中,随时可以查看购物车中的信息,如果不想要某件物品的话,可以删除,或者修改某种物品的数量,或者整个清空购物车,可以继续选择物品向购物车中添加。最后用户可以购物这些物品,经过输入个人的送货地址信息和设定交易方式之后,可以生成订单。网站的管理员可以对订单进行管理。本实例模拟这个过程,但是进行了简化:只能在物品列表中选择物

2、品向购物车中添加。确定购买后,不需要设置交易方式以及付款等。实际处理过程,可以使用我们前面介绍的功能完成。2、购物车信息组织因为在用户访问网站的整个过程中都可以访问购物车信息,所以购物车对象应该存放在session中。因为用户购买的物品的种类和数量都不确定,所以需要使用一个合适的数据结构存储,我们选择ArrayList。每一种物品都涉及数量,需要进行封装,把物品和数量封装成购物项,使用Item,每个Item对应一种物品以及该种物品的数量。需要编写物品类表示物品的基本信息。参考代码如下:2.1 物品类该类中包含两个与分页显示相关的方法。其中用到的DBBean是前面介绍的。package java

3、bean;import java.util.ArrayList;import java.sql.*;public class Goods private String goodsid; private String goodsname; private float price; /物品编号 public void setGoodsid(String goodsid) this.goodsid = goodsid; public String getGoodsid() return goodsid; /物品名称 public void setGoodsname(String goodsname)

4、 this.goodsname = goodsname; public String getGoodsname() return goodsname; /物品价格 public void setPrice(float price) this.price = price; public float getPrice() return price; public ArrayList getGoodsByPage(int pageNo) int number = 10; /每一页显示的记录数 int begin = (pageNo * number) - 9; int end = pageNo *

5、number; int index = 1; DBBean db = new DBBean(); /要返回的结果对象 ArrayList goods = new ArrayList(); String sql = select * from goods; ResultSet rs; try rs = db.executeQuery(sql,null); while (rs.next() /在begin之前的记录是不显示的 if (index end) break; index+; String goodsid = rs.getString(1); String goodsname = rs.g

6、etString(2); float price = rs.getFloat(3); Goods g = new Goods(); g.setGoodsid(goodsid); g.setGoodsname(goodsname); g.setPrice(price); goods.add(g); catch(Exception e) e.printStackTrace(); finally db.close(); return goods; public Goods findGoodsById(String goodsid) try /编写查询数据库信息的SQL语句 String sql =

7、select * from goods where goodsid=?; DBBean db = new DBBean(); ArrayList params = new ArrayList(); params.add(goodsid); ResultSet rs = db.executeQuery(sql,params); if(rs.next() /String goodsid =rs.getString(1); String goodsname = rs.getString(2); float price = rs.getFloat(3); Goods temp = new Goods(

8、); temp.setGoodsid(goodsid); temp.setGoodsname(goodsname); temp.setPrice(price); db.close(); return temp; else return null; catch (Exception e) System.out.println(e.toString(); return null; public int getPageCount() try /编写查询数据库信息的SQL语句 String sql = select count(*) from goods; DBBean db = new DBBean

9、(); ResultSet rs=db.executeQuery(sql,null); int number=0; if(rs.next() number = rs.getInt(1); db.close(); return (number - 1) / 10 + 1; catch (Exception e) return 0; 2.2 Item类package javabean;/ 购物项public class Item private Goods goods; private int quantity; public Item(Goods d,int quantity) this.goo

10、ds = d; this.quantity = quantity; public void setGoods(Goods goods) this.goods = goods; public Goods getGoods() return goods; public void setQuantity(int quantity) this.quantity = quantity; public int getQuantity() return quantity; 3、物品信息显示功能采用MVC模式,考虑视图部分,不需要输入界面,只需要显示信息的界面。模型部分,在前面的代码中已经实现。控制器部分,需

11、要编写GetAllGoods.java。参考代码分别如下:3.1 界面代码文件名:goodslist.jsp% taglib prefix=c uri= 第一页 上一页 下一页 最后一页 物品编号 物品名称 物品价格 $g.goodsid $g.goodsname $g.price 添加到购物车 3.2 控制器代package servlet;import java.io.*;import javax.servlet.*;import javax.servlet.http.*;import javabean.*;import java.util.*;public class GetAllGoo

12、ds extends HttpServlet public void doGet(HttpServletRequest request,HttpServletResponse response) throws IOException,ServletException /response.setContentType(text/html;charset=gb2312); /PrintWriter out = response.getWriter(); /第一步:获取用户的输入信息 String pageNo=request.getParameter(pageNo); int iPageNo=1;

13、 if(pageNo!=null) iPageNo = Integer.parseInt(pageNo); /第二步:调用JavaBean Goods g = new Goods(); ArrayList goods=null; goods = g.getGoodsByPage(iPageNo); int pageCount=g.getPageCount(); / out.println(记录数:+users.size(); / out.println(当前页码:+iPageNo); / out.println(总页码:+pageCount); /第三步:传值 request.setAttri

14、bute(goods,goods); request.setAttribute(pageNo,new Integer(iPageNo); request.setAttribute(pageCounter,new Integer(pageCount); /第四步:选择一个界面对用户进行响应 String forward=goodslist.jsp; RequestDispatcher rd = request.getRequestDispatcher(forward); rd.forward(request,response); public void doPost(HttpServletReq

15、uest request,HttpServletResponse response) throws IOException,ServletException doGet(request,response); 4、显示购物车中信息该功能直接从session中获取购物车信息,所以不需要控制器和模型部分,只需要编写显示购物车信息的JSP文件即可,文件名为cart.jsp,参考代码如下:% taglib prefix=c uri=购物车中的信息 物品编号 物品名称 价格 数量 $item.goods.goodsid $item.goods.goodsname $item.goods.price $it

16、em.quantity5、向购物车中添加物品采用MVC模式。首先考虑输入和输出,添加物品的输入就是物品信息列表界面,输出应该是添加后的购物车信息界面(也可以重新回到物品信息界面),这两个界面都不需要编写。考虑模型部分,需要编写购物车管理JavaBean,完成处理。考虑控制器部分,需要获取用户选择的物品,然后添加到调用购物车管理Bean,完成添加。下面是参考代码。5.1 模型部分文件名CartManager.javapackage javabean;import java.util.ArrayList;public class CartManager /表示购物车 private ArrayLi

17、st cart; public void setCart(ArrayList cart) this.cart = cart; public ArrayList getCart() return cart; /添加的物品数量 public ArrayList addToCart(Goods g,int quantity) if(cart=null) /实例化购物车对象 cart=new ArrayList(); /添加到购物车 Item item = new Item(g,quantity); cart.add(item); else /转换成数组 Object items = cart.toA

18、rray(); boolean find=false; /表示是否查找到 for(int i=0;iitems.length;i+) Item temp = (Item)itemsi; /判断购物车中是否存在要添加的物品 if(temp.getGoods().getGoodsid().equals(g.getGoodsid() temp.setQuantity(temp.getQuantity()+quantity); find=true; break; if(!find) /添加到购物车 Item item = new Item(g,quantity); cart.add(item); re

19、turn cart; 5.2 控制器部分文件名:AddToCart.javapackage servlet;import java.io.*;import javax.servlet.*;import javax.servlet.http.*;import javabean.*;import java.util.*;public class AddToCart extends HttpServlet public void doGet(HttpServletRequest request,HttpServletResponse response) throws IOException,Serv

20、letException / response.setContentType(text/html;charset=gb2312);/ PrintWriter out = response.getWriter(); try /得到要添加的物品的编号 String goodsid = request.getParameter(goodsid); /创建JavaBean对象 CartManager cartManager=new CartManager(); /得到session对象 HttpSession session = request.getSession(true); /得到购物车对象 A

21、rrayList cart = (ArrayList)session.getAttribute(cart); /用cart初始化cartManager cartManager.setCart(cart); /构造物品对象 Goods g = new Goods(); g = g.findGoodsById(goodsid); / out.println(g.getGoodsid(); cartManager.addToCart(g,1); /先把购物车重新存到session session.setAttribute(cart,cartManager.getCart(); catch(Excep

22、tion e) / out.println(e.toString(); response.sendRedirect(cart.jsp); public void doPost(HttpServletRequest request,HttpServletResponse response) throws IOException,ServletException doGet(request,response); 6、Servlet的配置web.xml文件内容如下:web-app version=2.4 xmlns=xmlns:xsi=http:/www.w3.org/2001/XMLSchema-

23、instancexsi:schemaLocation= getAllGoods servlet.GetAllGoods getAllGoods/getAllGoodsaddToCart servlet.AddToCart addToCart /addToCart7、运行编译所有文件,然后先访问getAllGoods Servlet,然后在物品信息界面上选择物品添加到购物车,之后就可以看到购物车中的信息了。主要内容:l完成购物车的其他基本功能;l生成订单;l小结1、购物车的其它功能对购物车的物品数量修改和物品删除功能是两外两个基本功能。实现过程与添加工程比较类似,这里只给出参考代码:1.1 模型

24、部分文件名:CartManager.java(在上一讲的基础上修改,红色部分为添加的内容)package javabean;import java.util.ArrayList;import java.util.Iterator;public class CartManager /表示购物车 private ArrayList cart; public void setCart(ArrayList cart) this.cart = cart; public ArrayList getCart() return cart; /添加的物品数量 public ArrayList addToCart

25、(Goods g,int quantity) if(cart=null) /实例化购物车对象 cart=new ArrayList(); /添加到购物车 Item item = new Item(g,quantity); cart.add(item); else /转换成数组 Object items = cart.toArray(); boolean find=false; /表示是否查找到 for(int i=0;iitems.length;i+) Item temp = (Item)itemsi; /判断购物车中是否存在要添加的物品 if(temp.getGoods().getGoods

26、id().equals(g.getGoodsid() temp.setQuantity(temp.getQuantity()+quantity); find=true; break; if(!find) /添加到购物车 Item item = new Item(g,quantity); cart.add(item); return cart; public void delete(String goodsid) /转换成Iterator对象 Iterator i = cart.iterator(); while(i.hasNext() /得到一个购物项 Item temp = (Item)i.

27、next(); if(temp.getGoods().getGoodsid().equals(goodsid) cart.remove(temp); break; public void update(String goodsid,int quantity) Iterator i = cart.iterator(); while(i.hasNext() /得到一个购物项 Item temp = (Item)i.next(); if(temp.getGoods().getGoodsid().equals(goodsid) temp.setQuantity(quantity); break; 1.

28、2 修改视图部分文件名:cart.jsp(在上一讲的基础上修改,红色部分为添加的内容)% taglib prefix=c uri=购物车中的信息 物品编号 物品名称 价格 数量 $item.goods.goodsid $item.goods.goodsname $item.goods.price 1.3 控制器删除和修改功能使用相同的控制器,会根据提交按钮的值确定要完成的功能,参考代码如下:文件名:ProcessCart.javapackage servlet;import java.io.*;import javax.servlet.*;import javax.servlet.http.*

29、;import javabean.*;import java.util.*;public class ProcessCart extends HttpServlet public void doGet(HttpServletRequest request,HttpServletResponse response) throws IOException,ServletException /response.setContentType(text/html;charset=gb2312); /PrintWriter out = response.getWriter(); try / request

30、.setCharacterEncoding(gb2312); /得到要添加的物品的编号 String goodsid = request.getParameter(goodsid); /得到执行命令:删除还是修改 String action = request.getParameter(action); action=new String(action.getBytes(8859_1); /out.println(action); String quantity=null; if(action.equals(修改) quantity = request.getParameter(quantit

31、y); /创建JavaBean对象 CartManager cartManager=new CartManager(); /得到session对象 HttpSession session = request.getSession(true); /得到购物车对象 ArrayList cart = (ArrayList)session.getAttribute(cart); /用cart初始化cartManager cartManager.setCart(cart); if(action.equals(修改) cartManager.update(goodsid,Integer.parseInt(

32、quantity); else cartManager.delete(goodsid); /把购物车重新存到session session.setAttribute(cart,cartManager.getCart(); catch(Exception e) /out.println(e.toString(); response.sendRedirect(cart.jsp); public void doPost(HttpServletRequest request,HttpServletResponse response) throws IOException,ServletExceptio

33、n doGet(request,response); 2、生成订单如果用户购物完成会下订单,通常需要输入个人的送货信息等,然后把订单信息存储到数据库中。这里这介绍如何组织信息,存储信息的过程不再介绍。需要两张表:l订单表l订单明细表订单表中信息:l订单号: 日期+流水号,通常作主键l订单的发出者:通常从session中获取信息 或者 让用户输入(没有登录的情况下)l订单的日期:l订单的状态:l付款方式l送货地址l联系电话l接收人订单明细表(订单号和物品编号作为联合主键):l订单号l物品的编号l该物品的数量在完成订单添加的时候,最好能进行事务处理。3、小结整个JSP培训基本上按照MVC模式进行,

34、自己在完成任何功能的时候都可以按照这个思路来做。3.1 MVC思路分析MVC:对于每个功能,都分成3部分考虑。l先考虑v:表示试图,与人交户,分别输入和输出。lM:模型,通常使用JavaBean编写,对于每个功能实际上对应的一个方法(或者多个方法),应该考虑整个方法执行的时候需要的条件(方法的输入),如何反馈(返回值类型和异常类型),具体功能使用Java代码实现。lC:记住4句话:n获取请求信息:request.getParameter方法,getParameterValues方法n调用JavaBean:创建对象、实例化、初始化、调用方法n传值:request.setAttributen转向:

35、 RequestDispatcher或者response.sendRedirect方法因为控制器的功能非常固定,所以掌握上没有难度。而模型部分属于Java代码,与JSP语法没有太大关系,所以对读者来说,学习JSP的难度主要在视图部分。3.2 输入和输出输入:l最基本的方式:表单提交,使用表单元素提交信息,通过form的action属性指定处理文件(控制器)。比较典型的隐藏域的使用(修改信息、删除)。l超链方法:典型的用法,就是使用“?”传递参数,例如分页显示、删除(超链方式)。l通过地址栏。这些也非常固定。输出:l静态信息的输出:表头,直接输出l单个对象:例如user,使用$user.属性名输

36、出l集合对象:标签输出l错误信息,包括提示信息:$errorl特定条件下的信息输出:标签处理这些相对比较灵活,主要是JSTL和EL的灵活使用。所以需要把JSTL和EL掌握好。3.3 文件之间的关系静态:文件之间的关联关系(多次请求之间):按钮提交、超链、地址栏输入动态:文件之间的关系(一次请求): response.sendRedirect RequestDispatcher 。3.4 信息的存储:l持久存储:就是使用数据库存储,主要使用JDBC技术(O/R映射,JPA)。l临时存储:内存存储,request(MVC模式传值)、session(登录用户的信息、购物车信息)、appliction(公开的聊天室)

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!