JavaWeb图书管理系统day02
- 視頻+資料+筆記【鏈接:https://pan.baidu.com/s/127I2oA8zvhTECCmC6wMSmQ? ?提取碼:zjxs】
- JavaWeb圖書管理系統【bookEstore文檔】
- JavaWeb圖書管理系統【源碼 + 效果展示】
目錄
day01復習
一、查看商品詳細信息
二、添加商品到購物車
三、顯示購物車商品
四、購物車刪除與修改操作
第二天內容:
?? ?1.查看商品詳細信息
?? ?2.添加商品到購物車
?? ?3.顯示購物車商品
?? ?4.購物車刪除與修改操作
day01復習
1.注冊操作
?? ??? ?用戶注冊成功后,需要進行郵件激活
2.登錄操作
?? ??? ?使用Cookie。
?? ??? ?記住用戶名
?? ??? ??? ?當用戶登錄成功后,將用戶名存儲到cookie中(持久化存儲)
?? ??? ??? ?當下一次再訪問時,就會從請求中得到指定cookie信息,從cookie中
?? ??? ??? ?獲取用戶名,顯示在文本框中
?? ??? ??? ?
?? ??? ??? ?注意:cookie中不能存儲中文
?? ??? ?自動登錄操作
?? ??? ??? ?當用戶登錄成功后,將用戶名與密碼存儲到cookie中(持久化存儲)。
?? ??? ??? ?當下一次再訪問時,我們會通過一個Filter進行信息攔截,得到指定的cookie信息,完成自動登錄操作。
3.顯示所有商品操作
?? ??? ?www.bookEstore.com
?? ??? ?會訪問index.jsp頁面,在這個頁面中 請求轉發到了ProductSerlvet中,并且 完成了查詢所有商品的操作,
?? ??? ?得到一個List<Product>,存儲到request域中,跳轉到page.jsp頁面
?? ??? ?在頁面上顯示出所有商品信息。
?? ??? ?
4.添加商品操作
?? ?本質上是一個文件上傳操作。因為我們在添加商品時,需要指定一個商品的圖片。
?? ?
?? ?我們使用commons-fileupload 完成文件上傳
?? ?在AddProductServlet中完成了兩個操作:
?? ??? ?1.文件上傳操作
?? ??? ?2.書籍信息收集,添加到數據庫操作。
一、查看商品詳細信息
1.查詢商品詳細信息
?? ??? ??? ?
?? ??? ?在page.jsp頁面會顯示所以商品信息,它提供一個鏈接,可以 點擊 查看當前書籍的詳細信息。
?? ??? ?
?? ??? ?<a href='${pageContext.request.contextPath}/product?method=findById&id=${p.id}'>速速搶購</a>
?? ?
?? ??? ?會訪問一個servlet(ProductServlet)并且傳遞了method=findById,id=xxxx.
?? ??? ?
?? ??? ?在servlet中根據傳遞的method值,判斷要執行的是findById方法,也就根據id查找書籍信息。
?? ??? ?會調用ProductService中查找操作的方法,在ProductService中調用ProductDao中查找書籍方法,
?? ??? ?最后得到一個Product對象,也就是商品信息封裝對象。
?? ??? ?將查找到的Product對象封裝到request域中,請求轉發到productInfo.jsp頁面,
?? ??? ?在頁面上展示書籍詳細信息。
二、添加商品到購物車
2.添加商品到購物車操作
?? ? ?聲明:購物車,沒有數據庫,直接使用session存儲信息.
?? ? ?
?? ? ?當productInfo.jsp頁面,點擊添加商品到購物車時,會將商品的id傳遞到服務器端
?? ? ?
?? ? ?在頁面上點擊添加商品到購物車會調用一個js函數
?? ? ?function addProductToCart(id) {
?? ??? ?location.href = "${pageContext.request.contextPath}/cart?method=add&id=" + id;
?? ? ?}
?? ?
?? ? ?在服務器端會有CartServlet,它就是用于處理我們購物車操作的。
?? ??? ?1.得到商品id ?request.getParameter("id");
?? ??? ?2.根據id查找出商品 ? Product對象.
?? ??? ?3.關于購物車的數據結構
?? ??? ??? ?Map<Product,Integer> 它就是我們的購物車,最終Map集合會存儲到session中。
?? ??? ??? ?
?? ??? ?4.第一次添加商品到購物車時,在服務器端,根據就沒有購物車,也就是沒有map集合。
?? ??? ? ?得到的是null值,就可以知道是第一次購物,就可以將購物車創建出來,并且,將商品添加到Map集合中。?? ?
?? ??? ?5.如果不是第一次購物,查詢后得到的map集合就不為null,就說明購物車中可能已經存在了商品,
? ? ? ? ? 就需要考慮一個事情,就需要考慮一個事情,購物車中存在了當前要購買的商品。
?? ??? ??? ?Map集合特點:
?? ??? ??? ??? ?key是唯一的,如果使用put方法存儲,那么,當key重復時,put方法 返回的就是原來的value值。
?? ??? ??? ??? ?
?? ??? ??? ??? ?可以根據put方法返回值,來判斷商品在購物車中是否存在,
?? ??? ??? ??? ?如果存在了,也就是說,put方法返回值不為null,這時就可以將返回值+1,
? ? ? ? ? ? ? ? 再重新存儲到map集合中。
三、顯示購物車商品
3.查看購物車中商品
?? ?當點擊查看購物車中商品時,會跳轉到一個jsp頁面,購物車是存儲在session中的,
?? ?那么在jsp頁面上就可以直接得到session中的商品信息.
?? ?
?? ?<a href="${pageContext.request.contextPath}/showCart.jsp">
?? ??? ?
?? ? ??? ?使用jstl的forEach遍歷Map集合.
?? ??? ?<c:forEach items=${cart} ?var="entry">
?? ??? ??? ?
?? ??? ??? ?${entry.key}? ? --- 對于cart中的key,它就是一個Product對象
?? ??? ??? ?${entry.value} --- 對于caft中的value,它是一個Integer對象,其實就是商品數量
?? ??? ??? ?
?? ??? ?</c:forEach>
?? ??? ?
?? ??? ?通過<c:set> 來 完成 商品的總價計算操作。
四、購物車刪除與修改操作
關于購物車中商品的數量修改購物車中商品刪除操作
?? ?1.關于數據修改問題
?? ??? ?
?? ??? ?1.關于點擊+ -按鈕完成商品數量修改操作
?? ??? ??? ?當點擊按鈕時會調用函數changeCount(商品的id,商品修改數量,商品的庫存)
?? ??? ??? ?οnclick="changeCount('${entry.key.id }','${entry.value-1}','${entry.key.pnum}')"
?? ??? ?
?? ??? ??? ?在js中它是沒數據類型的,那么當傳遞參數時,在函數中,可能認為它是一個字符串,
?? ??? ??? ?那么就會引起問題。通過parseInt()函數將數值轉換成數字.
?? ??? ?
?? ??? ??? ?在函數中處理數據后,會將數據傳遞到服務器端
?? ??? ? ? ?location.href = "${pageContext.request.contextPath}/cart?method=update&id=" + id
?? ??? ??? ??? ?+ "&count=" + count;
?? ??? ??? ??? ?
?? ??? ??? ?在CartServlet中通過判斷method=update完成操作.
?? ??? ??? ??? ?1.得到要修改商品的id,在得到要修改的商品數量值count.
?? ??? ??? ??? ?2.直接對購物車中的商品進行操作.
?? ??? ??? ??? ?3.為什么直接創建一個Product對象,將id值賦值給它,就可以
?? ??? ??? ??? ? ?直接修改商品數量.
?? ??? ??? ??? ? ?
?? ??? ??? ??? ? ?原因:對Product類中的equals方法進行了重寫,只比較商品的id.
?? ??? ??? ??? ? ? ? ? 在重寫equalse方法時,也將hashCode方法重寫了.
?? ??? ??? ??? ??? ? ??
?? ??? ?2.關于+號操作
?? ??? ??? ?以后面的原理一樣
?? ??? ??? ?
?? ??? ??? ?οnclick="changeCount('${entry.key.id}','${entry.value+1}','${entry.key.pnum }')"
?? ??? ?
?? ??? ??? ?區別:-號操作,是將商品的數量進行-1操作
?? ??? ??? ? ? ? +號操作,是將商品的數量進行+1操作
?? ??? ??? ??? ??
?? ??? ?3.文本框失去焦點時,也調用?? ??? ??
?? ??? ??? ?οnblur="changeCount('${entry.key.id}',this.value,'${entry.key.pnum}')
?? ??? ??? ?注意:傳遞了this.value,它代表的是文本框中的值
?? ??? ??? ?
?? ??? ?4.數字文本框
?? ??? ??? ?通過對文本添加onkeydown事件操作,當鍵盤按下時,會調用一個函數.numbText(event)
?? ??? ??? ?在函數中通過判斷按下鍵的keyCode值,就是鍵碼值,來判斷當前是否按下的是指定的
?? ??? ??? ?按鈕。
?? ??? ??? ?
?? ??? ??? ?注意:對于firefox或ie瀏覽器,它們獲取事件對象event有區別。
?? ??? ??? ?code = e.which; 判斷firefox瀏覽器 ?得到鍵碼值.
?? ??? ??? ?code = window.event.keyCode; 判斷是ie瀏覽器,得到鍵碼值.
?? ??? ??? ?
?? ??? ??? ?
?? ??? ??? ?if (!(code >= 48 && code <= 57 || code == 8 || code == 46))?
?? ??? ??? ?這是判斷當前按下的不是0-9 ?delete ?backspace
?? ??? ??? ?這時就要阻止事件的默認行為.
?? ??? ??? ?
?? ??? ??? ?e.preventDefault(); ?firefox阻止默認行為執行
?? ??? ??? ?window.event.returnValue = false; ie瀏覽器阻止默認行為執行.
?? ??? ??? ?
?? ??? ?5.關于刪除操作
?? ??? ??? ?<a href="${pageContext.request.contextPath}/cart?method=remove&id=${entry.key.id}" οnclick="delConfirm(event)">刪除</a>
?? ??? ??? ?
?? ??? ??? ?這個超鏈接會訪問服務器的一個CartServlet,method=remove代表要執行的是刪除操作。
?? ??? ??? ?并且將商品的id傳遞到服務器端
?? ??? ??? ?
?? ??? ??? ?得到id后,new Product(),這個對象的id值就是傳遞過去的。
?? ??? ??? ?對于Product類來說,它已經重寫了equals方法,它比較的就是id。
?? ??? ??? ?在map集合中,就可以直接根據我們創建的Product對象,將商品刪除。
?? ??? ??? ?
?? ??? ??? ?最后會判斷當前購物車中是否有商品,如果沒有,直接將購物車刪除。
?? ??? ??? ?
?? ??? ??? ?確認刪除操作?
?? ??? ??? ??? ?
?? ??? ??? ??? ?function delConfirm(e) {
?? ??? ??? ??? ??? ?var flag=window.confirm("確認刪除商品嗎");
?? ??? ??? ??? ??? ?
?? ??? ??? ??? ??? ?if(!flag){
?? ??? ??? ??? ??? ??? ?//不刪除商品?? ??? ?
?? ??? ??? ??? ??? ??? ?//要想不刪除商品,要阻止事件的默認行為執行.
?? ??? ??? ??? ??? ??? ?if(e&&e.preventDefault){
?? ??? ??? ??? ??? ??? ??? ?// e對象存在,preventDefault方法存在 ---- 火狐瀏覽器
?? ??? ??? ??? ??? ??? ??? ?e.preventDefault();
?? ??? ??? ??? ??? ??? ?}else{
?? ??? ??? ??? ??? ??? ??? ?// 不支持e對象,或者沒有preventDefault方法 ---- IE
?? ??? ??? ??? ??? ??? ??? ?window.event.returnValue = false;
?? ??? ??? ??? ??? ??? ?}
?? ??? ??? ??? ??? ?}?? ??? ??? ??? ??? ?
?? ??? ??? ??? ?}
?? ??? ??? ??? ?我們阻止超鏈接的默認事件執行,這樣超鏈接就不會向href指定的路徑發送請求。
總結
以上是生活随笔為你收集整理的JavaWeb图书管理系统day02的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JavaWeb图书管理系统day01
- 下一篇: JavaWeb图书管理系统day03