版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、目標(biāo):l掌握購物車的信息如何存儲;l掌握購物車常用功能的實現(xiàn)。主要內(nèi)容:l首先分析用戶上網(wǎng)購物的一般過程;l介紹采用什么樣的數(shù)據(jù)結(jié)構(gòu)存儲購物信息;l編寫購物界面;l完成向購物車添加物品的功能。1、用戶上網(wǎng)購物的一般過程在瀏覽物品的過程中如果對某件物品感興趣,會添加到購物車(購物籃)中,隨時可以查看購物車中的信息,如果不想要某件物品的話,可以刪除,或者修改某種物品的數(shù)量,或者整個清空購物車,可以繼續(xù)選擇物品向購物車中添加。最后用戶可以購物這些物品,經(jīng)過輸入個人的送貨地址信息和設(shè)定交易方式之后,可以生成訂單。網(wǎng)站的管理員可以對訂單進行管理。本實例模擬這個過程,但是進行了簡化:只能在物品列表中選擇物
2、品向購物車中添加。確定購買后,不需要設(shè)置交易方式以及付款等。實際處理過程,可以使用我們前面介紹的功能完成。2、購物車信息組織因為在用戶訪問網(wǎng)站的整個過程中都可以訪問購物車信息,所以購物車對象應(yīng)該存放在session中。因為用戶購買的物品的種類和數(shù)量都不確定,所以需要使用一個合適的數(shù)據(jù)結(jié)構(gòu)存儲,我們選擇ArrayList。每一種物品都涉及數(shù)量,需要進行封裝,把物品和數(shù)量封裝成購物項,使用Item,每個Item對應(yīng)一種物品以及該種物品的數(shù)量。需要編寫物品類表示物品的基本信息。參考代碼如下:2.1 物品類該類中包含兩個與分頁顯示相關(guān)的方法。其中用到的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; /每一頁顯示的記錄數(shù) int begin = (pageNo * number) - 9; int end = pageNo *
5、number; int index = 1; DBBean db = new DBBean(); /要返回的結(jié)果對象 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 /編寫查詢數(shù)據(jù)庫信息的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 /編寫查詢數(shù)據(jù)庫信息的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模式,考慮視圖部分,不需要輸入界面,只需要顯示信息的界面。模型部分,在前面的代碼中已經(jīng)實現(xiàn)。控制器部分,需
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); /第二步:調(diào)用JavaBean Goods g = new Goods(); ArrayList goods=null; goods = g.getGoodsByPage(iPageNo); int pageCount=g.getPageCount(); / out.println(記錄數(shù):+users.size(); / out.println(當(dāng)前頁碼:+iPageNo); / out.println(總頁碼:+pageCount); /第三步:傳值 request.setAttri
14、bute(goods,goods); request.setAttribute(pageNo,new Integer(iPageNo); request.setAttribute(pageCounter,new Integer(pageCount); /第四步:選擇一個界面對用戶進行響應(yīng) 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=購物車中的信息 物品編號 物品名稱 價格 數(shù)量 $item.goods.goodsid $item.goods.goodsname $item.goods.price $it
16、em.quantity5、向購物車中添加物品采用MVC模式。首先考慮輸入和輸出,添加物品的輸入就是物品信息列表界面,輸出應(yīng)該是添加后的購物車信息界面(也可以重新回到物品信息界面),這兩個界面都不需要編寫??紤]模型部分,需要編寫購物車管理JavaBean,完成處理??紤]控制器部分,需要獲取用戶選擇的物品,然后添加到調(diào)用購物車管理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; /添加的物品數(shù)量 public ArrayList addToCart(Goods g,int quantity) if(cart=null) /實例化購物車對象 cart=new ArrayList(); /添加到購物車 Item item = new Item(g,quantity); cart.add(item); else /轉(zhuǎn)換成數(shù)組 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); /創(chuàng)建JavaBean對象 CartManager cartManager=new CartManager(); /得到session對象 HttpSession session = request.getSession(true); /得到購物車對象 A
21、rrayList cart = (ArrayList)session.getAttribute(cart); /用cart初始化cartManager cartManager.setCart(cart); /構(gòu)造物品對象 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文件內(nèi)容如下:web-app version=2.4 xmlns=xmlns:xsi=/2001/XMLSchema-
23、instancexsi:schemaLocation= getAllGoods servlet.GetAllGoods getAllGoods/getAllGoodsaddToCart servlet.AddToCart addToCart /addToCart7、運行編譯所有文件,然后先訪問getAllGoods Servlet,然后在物品信息界面上選擇物品添加到購物車,之后就可以看到購物車中的信息了。主要內(nèi)容:l完成購物車的其他基本功能;l生成訂單;l小結(jié)1、購物車的其它功能對購物車的物品數(shù)量修改和物品刪除功能是兩外兩個基本功能。實現(xiàn)過程與添加工程比較類似,這里只給出參考代碼:1.1 模型
24、部分文件名:CartManager.java(在上一講的基礎(chǔ)上修改,紅色部分為添加的內(nèi)容)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; /添加的物品數(shù)量 public ArrayList addToCart
25、(Goods g,int quantity) if(cart=null) /實例化購物車對象 cart=new ArrayList(); /添加到購物車 Item item = new Item(g,quantity); cart.add(item); else /轉(zhuǎn)換成數(shù)組 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) /轉(zhuǎn)換成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(在上一講的基礎(chǔ)上修改,紅色部分為添加的內(nèi)容)% taglib prefix=c uri=購物車中的信息 物品編號 物品名稱 價格 數(shù)量 $item.goods.goodsid $item.goods.goodsname $item.goods.price 1.3 控制器刪除和修改功能使用相同的控制器,會根據(jù)提交按鈕的值確定要完成的功能,參考代碼如下:文件名: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); /得到執(zhí)行命令:刪除還是修改 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); /創(chuàng)建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,ServletException doGet(request,response); 2、生成訂單如果用戶購物完成會下訂單,通常需要輸入個人的送貨信息等,然后把訂單信息存儲到數(shù)據(jù)庫中。這里這介紹如何組織信息,存儲信息的過程不再介紹。需要兩張表:l訂單表l訂單明細(xì)表訂單表中信息:l訂單號:
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年環(huán)境保護安防措施合同2篇
- 建筑企業(yè)經(jīng)營部門的安全職責(zé)范文(2篇)
- 2024年環(huán)境污染第三方治理服務(wù)合同
- 2024年高端制造業(yè)生產(chǎn)線升級改造合同
- 學(xué)生交通安全教育制度(2篇)
- 2025年員工年度工作總結(jié)樣本(2篇)
- 2025年中餐行政總廚崗位職責(zé)(2篇)
- 二零二五年度二手房交易貸款合同范本及貸款還款記錄3篇
- 2024年電商平臺運營與管理合同
- 醫(yī)療污水處理管理制度(3篇)
- 石油英語詞匯
- 《夜宿山寺》-完整版課件
- 滬教牛津版八年級上冊初二英語期末測試卷(5套)
- 北京市海淀區(qū)2020-2021學(xué)年度第一學(xué)期期末初三物理檢測試卷及答案
- 《潔凈工程項目定額》(征求意見稿)
- 家庭室內(nèi)裝飾裝修工程保修單
- 小學(xué)語文課堂提問有效性策略研究方案
- 物業(yè)上門維修收費標(biāo)準(zhǔn)
- ATS技術(shù)交流(新型發(fā)動機智能恒溫節(jié)能冷卻系統(tǒng))100318
- 手術(shù)區(qū)皮膚的消毒和鋪巾ppt課件
- 2022年度培訓(xùn)工作總結(jié)
評論
0/150
提交評論