1. 程式人生 > >用Cookie和Session簡單實現購物車

用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展現的效果

這裡寫圖片描述

寶寶們,看到了吧! 購物車就這樣清空了!!

*

剁剁剁~~~

*

相關推薦

CookieSession簡單實現購物車

作為單身汪的小編,無法體會到被女神逼著清空購物車的那種”快感”!!,罷特!!我可以自己清空呀!! 傲嬌臉~~ 冰箱, 手機, 電視, 手電筒 來一套!!(ps:手電筒是什麼鬼!!) 下面我用Cookie和Session來清空購物車裡的這4樣東東!! 感覺

關於django戶登錄認證中的cookiesession

技術 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下,利用CookieSession來存儲戶信息

gin rect 開啟 cookie con _id session func Nid 利用tp5框架封裝好的Cookie類和Session類。若發現過期時間沒有生效,可以試試清除緩存。 登錄頁面Login.php <?php/** * Created by PhpS

cookiesession起源,原理,實現

一、引入 1.一種新的需求產生了 隨著web網站的快速發展,網站已經不再用於單純的資訊展示,而是一個龐大的具有互動式的多網頁的應用。在web應用中,資訊的登入是一種很常見的功能,登入後頁面跳轉必須保持登入狀態,不能但是每一次頁面跳轉都需要重新登入。在這樣的需求下cookie應運而生。

cookiesession實現免登陸

Cookie的機制 Cookie是瀏覽器(User Agent)訪問一些網站後,這些網站存放在客戶端的一組資料,用於使網站等跟蹤使用者,實現使用者自定義功能。 Cookie的Domain和Path屬性標識了這個Cookie是哪一個網站傳送給瀏覽器的;Cookie的Expires屬性標識了Co

CookieSession實現儲存登入狀態免登入。

  首先Cookie和Session都是為了狀態管理,HTTP協議是無狀態的,不能儲存每次提交的資訊,即當伺服器返回與請求相對應的應答之後,這次事務的所有資訊就丟掉了。   如果使用者發來一個新的請求,伺服器無法知道它是否與上次的請求有聯絡。   對於

LinearLayoutRelativeLayout分別實現簡單的登陸介面

        LinearLayout是最簡單也是最常用的一種佈局方式,它根據orientation 屬性值,將包含的所有控制元件或佈局物件排列在同一個方向:水平或垂直,在這種佈局中,所有的控制元件都是依序排列成一條線。線上性佈局中的控制元件允許有自己的margins和g

cookiesession簡單理解區別

cookie和session的簡單理解和區別 來源 cookie和session的定義 二者的機制 區別 本文只是對cookie和session一個簡單的理解與區分,更深入的理解請訪

cookie session簡單比較

1、cookie資料存放在客戶的瀏覽器上,session資料放在伺服器上。 2、cookie不是很安全,別人可以分析存放在本地的COOKIE並進行COOKIE欺騙   考慮到安全應當使用session。 3、session會在一定時間內儲存在伺服器上。當訪問增多,會比較佔用你伺服器的效

Flask入門(四)~cookiesession簡單使用

Cookie Cookie:指某些網站為了辨別使用者身份、進行會話跟蹤而儲存在使用者本地的資料(通常經過加密)。 複數形式Cookies。 Cookie最早是網景公司的前僱員Lou Montulli在1993年3月的發明。 Cookie是由伺服器端生成,傳送給客戶端瀏覽器,瀏覽器會將Cook

實現一週之內自動登入的 cookiesession還有localStorage的儲存機制

這三個應該是最讓程式設計師頭疼的了,我利用簡單的登入介面的username和password來說明一下吧. 1.cookie用來儲存使用者相關資料,儲存的位置在使用者本地: 首先是登入介面定義: <form action="server.php" method="po

登入時記住密碼——Filter、CookieSession簡單應用

思路:當用戶進入某一頁面時,用過濾器進行預處理,判斷Session中是否有儲存使用者的登入資訊,如果沒有,則從Cookie中查詢是否有儲存使用者登入資訊的cookie,如果有將其取出,進行登入操作。 1.  使用者的登入頁面login.jsp: <%@ page la

購物車cookiesession各自的優缺點)

cookie是由伺服器產生,儲存在客戶端的一段資訊。它定義了一種Web伺服器在客戶端儲存和返回資訊的機制,cookie檔案它包含域、路徑、生存期、和由伺服器設定的變數值等內容。當用戶以後訪問同一個Web伺服器時,瀏覽器會把cookie原樣傳送給伺服器。通過讓伺服器讀取原先儲存到客戶端的資訊,網站能夠為瀏覽者提

servlet-cookiesession應用示例:模擬購物車

思路分析: 1. 根據需求抽象出業務物件 User{ usrename; password; } ShoppingCarItem{ product; num; } ShoppingCar{ List<ShoppingCarItem> } 2. 寫Servlet處

cookie的儲存形式session實現機制

1.COOKIE分兩種儲存形式: 1.1:客戶端儲存形式--硬碟COOKIE: 儲存在硬盤裡,也就是在瀏覽器的安裝目錄下生成一個資料夾,有一個過期時間,除非使用者手工清理或到了過期時間,硬碟

購物車-CookieSession各自的優缺點

1. cookie   cookie是由伺服器產生,儲存在客戶端的一段資訊。它定義了一種Web伺服器在客戶端儲存和返回資訊的機制,cookie檔案它包含域、路徑、生存期、和由伺服器設定的變數值等內容。當用戶以後訪問同一個Web伺服器時,瀏覽器會把cookie原樣傳送給伺服器

ASP.Net之使用CookieSession實現自動登入

一、UserLogin.aspx程式碼 <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="UserLogin.aspx.cs" Inherits="UserLoginNameSpace" %>

程式設計師過關斬將--cookiesession的關係其實很簡單

月高風下,下班路上.... 菜菜哥,告訴你一個祕密,但是不允許告訴任何人 這麼祕密,你有男票了?~ 不是,昨天我偷偷去面試了,結果掛了 這不是好事嗎,上天讓公司留住你..... 好吧,不過還是要請教你一個問題,cookie和session有什麼相同和不

cookie session 的區別詳解

重復 處理方式 一行 所有 有效 依據 是把 存儲 一個 二者的定義: 當你在瀏覽網站的時候,WEB 服務器會先送一小小資料放在你的計算機上,Cookie 會幫你在網站上所打的文字或是一些選擇, 都紀錄下來。當下次你再光臨同一個網站,WEB 服務器會先看看有沒有它上次留下的