??為了能夠實現保存用戶瀏覽記錄的功能,我們可以將用戶瀏覽過的書籍的ISBN保存到Cookie中,然后在服務器通過Cookie中的ISBN來獲取到相應書籍的信息。
??在BookDAO.java中添加如下方法。其中isbnStr是多個isbn字符串通過”,”間隔連接成的一個字符串。
/* * 通過一系列isbn獲取書籍信息 */public ArrayList<Book> getViewList(String isbnStr){ ArrayList<Book> books = new ArrayList<Book>();// 返回最多4條信息 int maxRecordCount = 4; if(isbnStr != null && isbnStr.length() > 0){ String[] isbns = isbnStr.split(","); if(isbns.length >= maxRecordCount){// 商品記錄數大于等于4條,只取最新4條 for(int i = isbns.length - 1; i >= isbns.length-maxRecordCount; i --){ books.add(getBookByISBN(isbns[i])); } }else{// 商品記錄數小于4條 for(int i = isbns.length-1; i >= 0; i --){ books.add(getBookByISBN(isbns[i])); } } return books; }else{ return null; }}??我們需要將以下這段代碼替換為JSP代碼。
<div class="col-md-2 record"> <div class="rec-head">瀏覽記錄</div> <div class="rec-card"> <a href="single.html"><img class="img-rec pull-left" src="img/圖解網站分析.jpg"/></a> <div class="pull-left txt-rec">圖解網站分析<br />¥34.8</div> </div> <div class="rec-card"> <a href="single.html"><img class="img-rec pull-left" src="img/圖解網站分析.jpg"/></a> <div class="pull-left txt-rec">圖解網站分析<br />¥34.8</div> </div> <div class="rec-card"> <a href="single.html"><img class="img-rec pull-left" src="img/圖解網站分析.jpg"/></a> <div class="pull-left txt-rec">圖解網站分析<br />¥34.8</div> </div> <div class="rec-card"> <a href="single.html"><img class="img-rec pull-left" src="img/圖解網站分析.jpg"/></a> <div class="pull-left txt-rec">圖解網站分析<br />¥34.8</div> </div></div>為了能夠記錄和顯示瀏覽記錄,我們將有如下過程: 獲取Cookie中的isbn字符串添加當前瀏覽的圖書的isbn更新Cookie利用BookDAO從數據庫獲取數據顯示瀏覽記錄<% // 往Cookie中添加當前訪問的書籍isbn String isbnStr = ""; // 從客戶端獲取Cookie集合 Cookie[] cookies = request.getCookies(); if(cookies != null && cookies.length > 0){ for(Cookie c:cookies){ if(c.getName().equals("BookViewRecordCookie")){ isbnStr = c.getValue(); } } } // 添加當前訪問的記錄 isbnStr += request.getParameter("isbn") + ","; // 記錄超過4條時,只去最新4條 String[] arr = isbnStr.split(","); if(arr != null && arr.length > 0){ if(arr.length >= 4){ isbnStr = ""; for(int i=arr.length-1; i >= arr.length-4; i --){ isbnStr = arr[i] + "," + isbnStr; } } } // 創建最新的Cookie Cookie cookie = new Cookie("BookViewRecordCookie",isbnStr); response.addCookie(cookie);%><div class="col-md-2 record"> <div class="rec-head">瀏覽記錄</div> <% //利用BookDAO獲取瀏覽記錄 ArrayList<Book> booksView = bookdao.getViewList(isbnStr); if(booksView != null && booksView.size() > 0){ for(Book b: booksView){ System.out.Cookie和session 由于HTTP 是一個無狀態協議,所以為了記住狀態(比如某人是否已經登錄)便產生了Cookie。Cookie是保存在客戶端的瀏覽器的,因此也產生了一個弊端:Cookie中的數據可以被偽造。而Session則是保存在服務器中。session 通過一個session_id來與客戶端的Cookie進行交互,該session_id則存在客戶端的Cookie中。與node.js需要手動創建session不同,jsp中的session會在用戶訪問時自動進行創建。??到這里我們的這個JSP程序也就完成啦!中間涉及的知識點好好掌握下,就可以寫簡單的程序啦!
新聞熱點
疑難解答