用Cookie和Session簡單實現購物車
作為單身汪的小編,無法體會到被女神逼著清空購物車的那種”快感”!!,罷特!!我可以自己清空呀!! 傲嬌臉~~
冰箱, 手機, 電視, 手電筒 來一套!!(ps:手電筒是什麼鬼!!)
下面我用Cookie和Session來清空購物車裡的這4樣東東!! 感覺自己有點溜!!
一.Cookie
Cookie分為會話級別和持久化兩種,這裡將利用的是持久化的Cookie,以遍儲存並顯示瀏覽商品記錄,和實現商品就算頁面
(1)建立商品列表頁面
在Web專案根目錄建一個product.jsp伺服器端頁面,如下:
<img src="/day09-cookie/img/1.jpg"> <a href="/day09-cookie/product?id=1">手電筒</a>
<img src="/day09-cookie/img/2.jpg"><a href="/day09-cookie/product?id=2">手機</a>
<img src="/day09-cookie/img/3.jpg"><a href="/day09-cookie/product?id=3">電視</a>
<img src="/day09-cookie/img/4.jpg"><a href="/day09-cookie/product?id=4" >冰箱</a>
當點選對應的商品時會自動將商品id提交到後臺servet中. servet會將id值放入cookie中並回寫到瀏覽器裡.
(2)在servlet中完成把瀏覽記錄存到cookie
*這裡會預先寫一個工具類MyCookieUtil,裡面有方法findCookie(),判斷瀏覽器是否存在用於存商品id的Cookie.
程式碼:
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//獲取瀏覽器所有的cookies
Cookie[] cookies = request.getCookies();
//判斷是否有名為scan的cookie
Cookie cookie = MyCookieUtil.findCookie(cookies, "scan");
//獲取當前點選商品的id
String id = request.getParameter("id");
if (cookie==null) {
//如果沒有就建立一個名為scan的cookie,並將商品的id設定到cookie裡
Cookie cookie2 = new Cookie("scan", id);
//設定cookie儲存時長為30分鐘
cookie2.setMaxAge(1800);
//設定專案路徑
cookie2.setPath("/day09-cookie");
//回寫到瀏覽器
response.addCookie(cookie2);
}else {
//將當前點選商品的id值新增到上一次回寫到瀏覽器的cookie裡
String value = cookie.getValue();
String[] ids = value.split(",");
//判斷是否有重複的商品
boolean flag=checkID(ids,id);
if (!flag) {
//沒有重複就新增id到cookie裡
String newValue=value+","+id;
Cookie cookie2 = new Cookie("scan", newValue);
cookie2.setMaxAge(1800);
cookie2.setPath("/day09-cookie");
response.addCookie(cookie2);
}
}
//回寫cookie到瀏覽器之後再重定向到瀏覽器
response.sendRedirect("/day09-cookie/product.jsp");
}
//判斷id是否重複的方法
private boolean checkID(String[] ids, String id) {
for (String string : ids) {
if (string.equals(id)) {
return true;
}
}
return false;
}
(3)在瀏覽器顯示商品的瀏覽記錄
在product.jsp裡嵌入java程式碼,實現顯示瀏覽記錄的邏輯
程式碼:
<!-- 顯示瀏覽記錄的操作 -->
<%
//獲取瀏覽器裡面所有的cookie
Cookie[] cookies=request.getCookies();
Cookie cookie=MyCookieUtil.findCookie(cookies,"scan");
if(cookie==null){
%>
<h2>沒有任何記錄</h2>
<%
}else{
String values=cookie.getValue();
String[] productNames={"手電筒","手機","電視","冰箱"};
String[] ids=values.split(",");
//遍歷ids,把所有對應圖片的資訊顯示到頁面上
for(String id:ids){
//獲得對應的商品名稱
String productName=productNames[Integer.parseInt(id)-1];
%>
<img src="/day09-cookie/img/<%= id%>.jpg"/><%=productName %>
<%
}
}
%>
(4)清空儲存在瀏覽器上的商品瀏覽記錄
原理: 銷燬持久化的cookie操作. 新建一個servet, ProductClear.java
步驟:
* 1、建立一個和要銷燬cookie相同名稱的cookie
* 2、設定cookie的有效時長是 0
* 3、設定路徑一致的
* 4、把cookie回寫到瀏覽器
程式碼:
在product.jsp里加一行程式碼:
<h1><a href="/day09-cookie/clear">清空瀏覽記錄</a></h1>
寫在ProductClear.java裡的程式碼:
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
Cookie cookie = new Cookie("scan", "");
cookie.setMaxAge(0);
cookie.setPath("/day09-cookie");
response.addCookie(cookie);
response.sendRedirect("/day09-cookie/product.jsp");
}
我一執行
選擇商品之後:
(點選”清空瀏覽記錄”又會變成上面的頁面)
二.Session
增加了一個顯示購物車內容的功能
(1)建立商品列表頁面 product.jsp
程式碼:
<body>
<img src="/day09-session/img/1.jpg"/><a href="/day09-session/store?id=1">手電筒</a>
<img src="/day09-session/img/2.jpg"/><a href="/day09-session/store?id=2">手機</a>
<img src="/day09-session/img/3.jpg"/><a href="/day09-session/store?id=3">電視</a>
<img src="/day09-session/img/4.jpg"/><a href="/day09-session/store?id=4">冰箱</a>
</body>
(2)在servlet中完成把瀏覽記錄存到cookie
建立servet,名為StoreInCart
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String id = request.getParameter("id");
String[] names={"手電筒","手機","電視","冰箱"};
String productName=names[Integer.parseInt(id)-1];
//將產品名和數量放到一個map集合裡之後再放入購物車
Map<String,Integer> cart = (Map<String, Integer>) request.getSession().getAttribute("cart");
//判斷購物車是否為空. 空的話,就將產品資訊和數量放入
if (cart==null) {
cart=new HashMap<String, Integer>();
cart.put(productName, 1);
}else {
//不為空就將不重複的產品存入購物車
if (cart.containsKey(productName)) {
int num=cart.get(productName);
cart.put(productName, num+1);
}else {
cart.put(productName, 1);
}
}
//將map集合設定到購物車cart裡面
request.getSession().setAttribute("cart", cart);
response.setContentType("text/html;charset=utf-8");
response.getWriter().write("<a href='/day09-session/product.jsp'>繼續購物</a><br/>"+"<a href='/day09-session/cart.jsp'>去結算</a>");
}
(3)建立一個購物車cart.jsp檔案,顯示選購的商品資訊
程式碼:
<body>
<h1>結算頁面</h1>
<h3><a href="/day09-session/clear">清空購物車</a></h3>
<h5>購物車清單:</h5>
<br/>
<%
//獲取購物車cart,遍歷購物車,打印出商品詳情
Map<String,Integer> cart=(Map<String,Integer>) request.getSession().getAttribute("cart");
if(cart==null){
%>
<h2>沒有任何購物記錄</h2>
<%
}else{
for(String name:cart.keySet()){
int num=cart.get(name);
%>
商品:<%=name %>, 數量:<%=num %>
<br/>
<%
}
}
%>
</body>
(4)終於來到了清空購物車, 淚流滿面!!
新建一個servet,名為ClearCart.java, 銷燬session,實現清空購物車.
具體程式碼:
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
HttpSession session = request.getSession();
//利用session自己的方法結果掉session
session.invalidate();
response.sendRedirect("/day09-session/cart.jsp");
}
我們來看看執行結果:
(1)商品預覽頁面
(2)跳轉頁面
StroeInCart.java體現的效果
(3)購物車介面
cart.jsp展現的效果,結算頁面
(4)清空購物車之後的介面
ClearCart.java展現的效果
寶寶們,看到了吧! 購物車就這樣清空了!!
*
剁剁剁~~~
*
相關推薦
用Cookie和Session簡單實現購物車
作為單身汪的小編,無法體會到被女神逼著清空購物車的那種”快感”!!,罷特!!我可以自己清空呀!! 傲嬌臉~~ 冰箱, 手機, 電視, 手電筒 來一套!!(ps:手電筒是什麼鬼!!) 下面我用Cookie和Session來清空購物車裡的這4樣東東!! 感覺
關於django用戶登錄認證中的cookie和session
技術 ima username 就會 關於 logs 之前 cookie req 最近弄django的時候在用戶登錄這一塊遇到了困難,網上的資料也都不完整或者存在缺陷。 寫這篇文章的主要目的是對一些剛學django的新手朋友提供一些幫助。前提是你對django中的sessi
django之基於cookie和裝飾器實現用戶認證
view itl 代碼 重新 -- eve method args () 一、使用Django自帶的decorator 通常情況,使用 函數定義的view,可以直接使用 login_required 直接裝飾 @login_required def index(requ
ThinkPHP5.0下,利用Cookie和Session來存儲用戶信息
gin rect 開啟 cookie con _id session func Nid 利用tp5框架封裝好的Cookie類和Session類。若發現過期時間沒有生效,可以試試清除緩存。 登錄頁面Login.php <?php/** * Created by PhpS
cookie和session起源,原理,實現
一、引入 1.一種新的需求產生了 隨著web網站的快速發展,網站已經不再用於單純的資訊展示,而是一個龐大的具有互動式的多網頁的應用。在web應用中,資訊的登入是一種很常見的功能,登入後頁面跳轉必須保持登入狀態,不能但是每一次頁面跳轉都需要重新登入。在這樣的需求下cookie應運而生。
cookie和session實現免登陸
Cookie的機制 Cookie是瀏覽器(User Agent)訪問一些網站後,這些網站存放在客戶端的一組資料,用於使網站等跟蹤使用者,實現使用者自定義功能。 Cookie的Domain和Path屬性標識了這個Cookie是哪一個網站傳送給瀏覽器的;Cookie的Expires屬性標識了Co
Cookie和Session實現儲存登入狀態免登入。
首先Cookie和Session都是為了狀態管理,HTTP協議是無狀態的,不能儲存每次提交的資訊,即當伺服器返回與請求相對應的應答之後,這次事務的所有資訊就丟掉了。 如果使用者發來一個新的請求,伺服器無法知道它是否與上次的請求有聯絡。 對於
用LinearLayout和RelativeLayout分別實現簡單的登陸介面
LinearLayout是最簡單也是最常用的一種佈局方式,它根據orientation 屬性值,將包含的所有控制元件或佈局物件排列在同一個方向:水平或垂直,在這種佈局中,所有的控制元件都是依序排列成一條線。線上性佈局中的控制元件允許有自己的margins和g
cookie和session的簡單理解和區別
cookie和session的簡單理解和區別 來源 cookie和session的定義 二者的機制 區別 本文只是對cookie和session一個簡單的理解與區分,更深入的理解請訪
cookie 和session的簡單比較
1、cookie資料存放在客戶的瀏覽器上,session資料放在伺服器上。 2、cookie不是很安全,別人可以分析存放在本地的COOKIE並進行COOKIE欺騙 考慮到安全應當使用session。 3、session會在一定時間內儲存在伺服器上。當訪問增多,會比較佔用你伺服器的效
Flask入門(四)~cookie和session的簡單使用
Cookie Cookie:指某些網站為了辨別使用者身份、進行會話跟蹤而儲存在使用者本地的資料(通常經過加密)。 複數形式Cookies。 Cookie最早是網景公司的前僱員Lou Montulli在1993年3月的發明。 Cookie是由伺服器端生成,傳送給客戶端瀏覽器,瀏覽器會將Cook
實現一週之內自動登入的 cookie和session還有localStorage的儲存機制
這三個應該是最讓程式設計師頭疼的了,我利用簡單的登入介面的username和password來說明一下吧. 1.cookie用來儲存使用者相關資料,儲存的位置在使用者本地: 首先是登入介面定義: <form action="server.php" method="po
登入時記住密碼——Filter、Cookie和Session的簡單應用
思路:當用戶進入某一頁面時,用過濾器進行預處理,判斷Session中是否有儲存使用者的登入資訊,如果沒有,則從Cookie中查詢是否有儲存使用者登入資訊的cookie,如果有將其取出,進行登入操作。 1. 使用者的登入頁面login.jsp: <%@ page la
購物車(cookie和session各自的優缺點)
cookie是由伺服器產生,儲存在客戶端的一段資訊。它定義了一種Web伺服器在客戶端儲存和返回資訊的機制,cookie檔案它包含域、路徑、生存期、和由伺服器設定的變數值等內容。當用戶以後訪問同一個Web伺服器時,瀏覽器會把cookie原樣傳送給伺服器。通過讓伺服器讀取原先儲存到客戶端的資訊,網站能夠為瀏覽者提
servlet-cookie和session應用示例:模擬購物車
思路分析: 1. 根據需求抽象出業務物件 User{ usrename; password; } ShoppingCarItem{ product; num; } ShoppingCar{ List<ShoppingCarItem> } 2. 寫Servlet處
cookie的儲存形式和session的實現機制
1.COOKIE分兩種儲存形式: 1.1:客戶端儲存形式--硬碟COOKIE: 儲存在硬盤裡,也就是在瀏覽器的安裝目錄下生成一個資料夾,有一個過期時間,除非使用者手工清理或到了過期時間,硬碟
購物車-Cookie和Session各自的優缺點
1. cookie cookie是由伺服器產生,儲存在客戶端的一段資訊。它定義了一種Web伺服器在客戶端儲存和返回資訊的機制,cookie檔案它包含域、路徑、生存期、和由伺服器設定的變數值等內容。當用戶以後訪問同一個Web伺服器時,瀏覽器會把cookie原樣傳送給伺服器
ASP.Net之使用Cookie和Session實現自動登入
一、UserLogin.aspx程式碼 <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="UserLogin.aspx.cs" Inherits="UserLoginNameSpace" %>
程式設計師過關斬將--cookie和session的關係其實很簡單
月高風下,下班路上.... 菜菜哥,告訴你一個祕密,但是不允許告訴任何人 這麼祕密,你有男票了?~ 不是,昨天我偷偷去面試了,結果掛了 這不是好事嗎,上天讓公司留住你..... 好吧,不過還是要請教你一個問題,cookie和session有什麼相同和不
cookie 和session 的區別詳解
重復 處理方式 一行 所有 有效 依據 是把 存儲 一個 二者的定義: 當你在瀏覽網站的時候,WEB 服務器會先送一小小資料放在你的計算機上,Cookie 會幫你在網站上所打的文字或是一些選擇, 都紀錄下來。當下次你再光臨同一個網站,WEB 服務器會先看看有沒有它上次留下的