版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、第十講 基于Servlet的會(huì)話跟蹤2,2,本講任務(wù),升級(jí) E-Book電子書店實(shí)現(xiàn)購物車功能將書籍添加到購物車之中查看購物車,3,學(xué)會(huì)使用Map集合實(shí)現(xiàn)購物車掌握如何操縱session中對象會(huì)使用session的相關(guān)屬性和方法,本講目標(biāo),4,購物車的設(shè)計(jì)分析,設(shè)計(jì)分析購物車中對象的設(shè)計(jì)使用Servlet實(shí)現(xiàn)添加書籍到購物車使用JSP實(shí)現(xiàn)查看購物車的書籍列表,選擇商品放入購物車,,,繼續(xù)購物,,結(jié)賬,滿載而歸,,
2、,本章要完成內(nèi)容,購物車如何設(shè)計(jì)呢?,5,購物車中對象的設(shè)計(jì),對象的設(shè)計(jì),書籍本身信息,書籍購買數(shù)量,書籍名稱,書籍編號(hào),書籍價(jià)格,書籍版本號(hào),BookBean,購買書籍的數(shù)量,public class CartItemBean implements Serializable { private BookBean book; //當(dāng)前書籍 private int quantity; //購物車中的數(shù)量 publ
3、ic CartItemBean( BookBean bookToAdd, int number ){ book = bookToAdd; quantity = number; } public void setQuantity( int number ){ quantity = number; } public int getQuantity(){ return q
4、uantity; } …//其他的setter、getter方法},,對象屬性,,構(gòu)造方法,,屬性的getter、setter方法,演示示例1:購物車商品信息類CartItemBean.java,,,6,購物車的實(shí)現(xiàn),使用購物車存放商品,裝入購物車,方便存取商品,,7,購物車的實(shí)現(xiàn),使用Map實(shí)現(xiàn)購物車,BookBean,,HashMap,,session,,,key,value,,,存放到,存放到,書籍?dāng)?shù)量,CartI
5、temBean,,,isbn,cart,8,集合接口和類(補(bǔ)充),集合接口、類關(guān)系圖,Collection接口,,,List接口,Set接口,,ArrayList類,LinkedList類,,,HashSet類,TreeSet類,,繼承,繼承,實(shí)現(xiàn),實(shí)現(xiàn),,List及實(shí)現(xiàn)類是可變大小的列表 ,適用于按數(shù)值索引訪問元素,,Set集合中不允許有重復(fù)的數(shù)據(jù),9,Set介紹(補(bǔ)充),Set接口繼承關(guān)系和常用方法,Collection接口,
6、Set接口,HashSet類,TreeSet類,int size( ),boolean isEmpty(),Object[ ] toArray(),boolean add(Object o),,,,繼承,實(shí)現(xiàn),實(shí)現(xiàn),返回Set集合元素?cái)?shù),返回一個(gè)包含 Set 中所有元素的數(shù)組,向Set中添加元素,判斷Set中是否包含元素,不包含返回true,,10,Map接口(補(bǔ)充),Map接口實(shí)現(xiàn)類關(guān)系圖,Map接口,,H
7、ashMap類,,Properties類,Map中以鍵-值對形式存儲(chǔ)數(shù)據(jù),實(shí)現(xiàn),11,使用Servlet實(shí)現(xiàn)添加,定義一個(gè)Servlet實(shí)現(xiàn)購買的書籍添加到購物車中Servlet類:AddBookToCart.java,12,實(shí)現(xiàn)添加書籍到購物車,添加書籍到購物車 獲得session對象從session中取出BookBean對象創(chuàng)建HashMap對象,并添加一個(gè)條目到Map中,…public void doPost(Htt
8、pServletRequest request, HttpServletResponse response) throws ServletException, IOException { HttpSession session = request.getSession(false); BookBean book = (BookB
9、ean)session.getAttribute("bookToAdd"); Map cart = new HashMap(); cart.put(book.getISBN(), new CartItemBean(book, 1)); session.setAttribute("cart", cart);}…,,,,獲得session
10、對象,從session中取出書籍信息,把數(shù)據(jù)存入到session中,13,實(shí)現(xiàn)添加書籍到購物車,判斷購物車中是否存在該書籍存在:數(shù)量加一不存在:添加條目到Map中,HttpSession session = request.getSession(false); Map cart = (Map) session.getAttribute("cart"); if (cart == null) {
11、 cart = new HashMap(); session.setAttribute("cart", cart); } BookBean book = (BookBean) session.getAttribute("bookToAdd"); CartItemBean cartItem = (CartItemBean) cart.get(b
12、ook.getISBN()); if (cartItem != null){ cartItem.setQuantity(cartItem.getQuantity() + 1); } else{ cart.put(book.getISBN(), new CartItemBean(book, 1)); },,,,如果session中存在該書籍,數(shù)量加1,如果session中不存在該書籍,添
13、加條目數(shù)量為1,判斷session中是否存在cart對象,演示示例2:向購物車中添加商品AddBookToCart.java,14,查看購物車中書籍列表,購物車的設(shè)計(jì)----書籍清單書籍名稱購買數(shù)量書籍價(jià)格小計(jì)總計(jì),15,查看購物車的書籍列表,轉(zhuǎn)向viewCart.jsp從session中取出Map從Map中取出CartItemBean數(shù)據(jù),Map cart = (Map) session.getAttribute(&
14、quot;cart");Set cartItems = cart.keySet();Object[ ] isbn = cartItems.toArray();BookBean book;CartItemBean cartItem;int i = 0;while (i < isbn.length) { cartItem = (CartItemBean) cart.get((String)isbn[
15、i]); book = cartItem.getBook(); //在頁面上顯示book數(shù)據(jù),如:book.getTitle(); i++;},,從session中取出Map,,得到Map中key值的Set集合,再轉(zhuǎn)換成數(shù)組,以便使用循環(huán)進(jìn)行遍歷,,通過key值取value,演示示例3:顯示購物車內(nèi)商品viewCart.jsp,16,完整代碼,,HttpSession session = req
16、uest.getSession(false);RequestDispatcher dispatcher;// 如果session不存在,轉(zhuǎn)向 books.jspif (session == null) {dispatcher = request.getRequestDispatcher("books.jsp");dispatcher.forward(request, respons
17、e);}// 取出購物車和添加的書籍Map cart = (Map) session.getAttribute("cart");BookBean book = (BookBean) session.getAttribute("bookToAdd");,// 如果購物車不存在,創(chuàng)建購物車if (cart == null) {cart = new HashMap
18、();// 將購物車存入session之中session.setAttribute("cart", cart);}// 判斷書籍是否在購物車中CartItemBean cartItem = (CartItemBean) cart.get(book.getISBN());// 如果書籍在購物車中,更新其數(shù)量.// 否則,創(chuàng)建一個(gè)條目到Map中.if (cartIt
19、em != null)cartItem.setQuantity(cartItem.getQuantity() + 1);elsecart.put(book.getISBN(), new CartItemBean(book, 1));// 轉(zhuǎn)向viewCart.jsp顯示購物車dispatcher = request.getRequestDispatcher("viewCart.jsp&quo
20、t;);dispatcher.forward(request, response);,17,常見錯(cuò)誤,錯(cuò)誤大致出現(xiàn)在哪里?,404錯(cuò)誤—沒有找到頁面,if (cartItem != null) cartItem.setQuantity( cartItem.getQuantity() + 1);else cart.put(book.getISBN(), new CartItemBean(book,
21、1)); dispatcher = request.getRequestDispatcher("/viewCart.jsp");dispatcher.forward(request, response);,,路徑錯(cuò)誤,應(yīng)該是" /j20/viewCart.jsp ",18,常見錯(cuò)誤,查看購物車內(nèi)書籍,已經(jīng)購買商品,為什么沒有顯示?問題可能出現(xiàn)在哪里?,19,常見錯(cuò)誤,添加商品到購物車
22、---Servlet AddBookToCart.java顯示購物車內(nèi)商品---viewCart.jsp,if (cart == null) { cart = new HashMap(); session.setAttribute("cart", cart);}…,,保存數(shù)據(jù)到session中,,,從session中取出數(shù)據(jù),名稱要一致,,20,顯示購物車數(shù)據(jù),如何顯示購物車內(nèi)Map
23、中所有數(shù)據(jù)可不可以使用Map的size()進(jìn)行循環(huán)獲得key、value值Map 不具有整數(shù)索引,不能利用size()進(jìn)行循環(huán)使用Set接口Set接口繼承了Collection接口,但是它不允許集合中存在重復(fù)項(xiàng) Set接口在Map中的使用,Map cart = (Map) session.getAttribute("cart");for(int i=0;i<cart.size();i++){
24、 CartItemBean cartItem =(CartItemBean)cart.get(i); },,Map沒有整數(shù)索引,參數(shù)應(yīng)該是key值,Map cart = (Map) session.getAttribute("cart");Set cartItems = cart.keySet();Object[ ] isbn = cartItems.toArray();int i = 0;
25、while (i < isbn.length) { cartItem = (CartItemBean) cart.get((String)isbn[i]);},,,,使用keySet()得到key的Set集合,使用Set的toArray()轉(zhuǎn)換成數(shù)組,對數(shù)組遍歷取出所有值,代碼錯(cuò)誤,21,常見錯(cuò)誤,,指出哪里有錯(cuò)誤?,,顯示購物車內(nèi)商品---viewCart.jsp,正確寫法:cart.get((String)i
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 第十講
- 第十講生物與環(huán)境
- 第十講 分類枚舉.doc
- 化工容器設(shè)計(jì)第十講
- 第十講 身體的修養(yǎng)(三)
- 第十講_成本-收益分析
- 第十講車燈線光源的計(jì)算
- 第十講 簡單的倍數(shù)問題.doc
- 第十講 句法模式識(shí)別
- 10.第十講 廣播述評
- 護(hù)師(兒科護(hù)理)第十講
- 第十講創(chuàng)建磁盤陣列
- 基于servlet的網(wǎng)站開發(fā) (2)
- 第十講閱讀理解題型及常規(guī)答題方2
- 第十講:機(jī)翼結(jié)構(gòu)設(shè)計(jì)
- 第十講微觀教化員工的智慧(下)
- 第十講-功和機(jī)械能
- 第十講 單數(shù)和雙數(shù)(1).doc
- 第十講城市改革的進(jìn)展和問題
- 第十講 屋面及防水工程
評論
0/150
提交評論