最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Cookie在Java中的使用

 更新時間:2021年05月20日 09:19:13   作者:kongsam  
Cookie又稱“小甜餅”,類型為“小型文本文件”,指某些網(wǎng)站為了辨別用戶身份而儲存在用戶本地終端(Client Side)上的數(shù)據(jù)(通常經(jīng)過加密)。由用戶客戶端計算機(jī)暫時或永久保存的信息。本文將講解Cookie在Java中的使用,感興趣的朋友可以了解下

什么是Cookie

在現(xiàn)實生活中,當(dāng)顧客第一次在超市購物,通常服務(wù)員會詢問是否辦理一張會員卡來積分以便日后折扣等福利活動。會員卡會記錄顧客的姓名、積分、消費記錄等信息,如果顧客要參與超市的福利活動等都需要提供會員卡,服務(wù)員在后臺刷卡查詢即可知道是哪個用戶在使用會員卡。

現(xiàn)在將現(xiàn)實生活中的案例中的角色互換一下。

當(dāng)用戶沒有在Web服務(wù)器登記過用戶信息,而使用網(wǎng)站提供的需登錄的服務(wù)時,服務(wù)器會告知瀏覽器跳轉(zhuǎn)到登陸頁面進(jìn)行用戶信息的登記操作,登錄完成之后,瀏覽器向服務(wù)器發(fā)起一次登陸請求,服務(wù)器將用戶的信息存儲到Cookie中,并響應(yīng)給瀏覽器新的Cookie,瀏覽器得到Cookie之后將它存儲到緩存區(qū)。

當(dāng)用戶在Web服務(wù)器登記過用戶信息,而使用網(wǎng)站提供的需登錄的服務(wù)時,服務(wù)器會通過請求中攜帶的Cookie判斷此次請求時哪個用戶,并以這個Cookie的信息去查詢數(shù)據(jù)庫等操作,完成用戶需要的服務(wù)。

Cookie的必要

HTTP是無狀態(tài)協(xié)議,意味著服務(wù)器不會在兩個請求之間保留任何數(shù)據(jù)(狀態(tài))。由于Web服務(wù)器要面對很多用戶的并發(fā)訪問,為了提高Web服務(wù)器對并發(fā)訪問的處理能力,在設(shè)計HTTP協(xié)議時規(guī)定Web服務(wù)器發(fā)送HTTP應(yīng)答報文和文檔時,不保存發(fā)出請求的Web瀏覽器進(jìn)程的任何狀態(tài)信息,從而減輕服務(wù)器端的負(fù)載,同時無狀態(tài)也減小了HTTP請求的開銷。

但是在必要的場景,如登陸、購物等都需要保存用戶的狀態(tài)(信息),就不得不用到Cookie。

Cookie如何工作

第一次訪問服務(wù)器,沒有Cookie,向服務(wù)器登記新的Cookie。

第二次及以后訪問服務(wù)器,有Cookie,無需登記新的Cookie。

模擬用戶登錄

需求分析:

當(dāng)用戶訪問homepage.jsp時,判斷請求中是否攜帶username的Cookie,如果不存在就通知瀏覽器跳轉(zhuǎn)到登錄頁面進(jìn)行用戶信息的登記。當(dāng)用戶再次訪問homepae.jsp時,不會被攔截,可以讓用戶訪問個人主頁頁面。

編寫代碼:

個人主頁的Servlet

@WebServlet(name = "homepageServlet", urlPatterns = "/homepage")
public class HomePageServlet extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        Cookie[] cookies = req.getCookies();
        for (Cookie cookie : cookies) {
            if (!cookie.getName().equals("username")) {
                // 如果用戶是第一次訪問個人主頁,就通知瀏覽器跳轉(zhuǎn)到登陸頁面進(jìn)行登錄
                resp.sendRedirect(req.getContextPath() + "/login.jsp");
            }
        }
    }

}

用戶登錄的Servlet

@WebServlet(name = "loginServlet", urlPatterns = "/login")
public class LoginServlet extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // 獲取http請求參數(shù)username
        String username = request.getParameter("username");
        // 設(shè)置響應(yīng)內(nèi)容的類型
        response.setContentType("text/html;charset=utf-8");
        // 獲取Cookie值
        Cookie[] cookies = request.getCookies();
        for (Cookie cookie : cookies) {
            if (!cookie.getName().equals("username")) { // 用戶第一次訪問
                Cookie userCookie = new Cookie("username", username);
                userCookie.setMaxAge(300);
                response.addCookie(userCookie);
            }
            response.sendRedirect(request.getContextPath() + "/homepage.jsp");
        }
    }

}

打開瀏覽器,實驗一下:

在第一次訪問homepage頁面時,看到瀏覽器緩存區(qū)并沒有名為username的Cookie,只有當(dāng)?shù)卿浿?,瀏覽器緩存區(qū)才有了這個Cookie。

以上就是Cookie在Java中的使用的詳細(xì)內(nèi)容,更多關(guān)于Cookie的使用的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • java利用DFA算法實現(xiàn)敏感詞過濾功能

    java利用DFA算法實現(xiàn)敏感詞過濾功能

    在最近的開發(fā)中遇到了敏感詞過濾,便去網(wǎng)上查閱了很多敏感詞過濾的資料,在這里也和大家分享一下自己的理解。下面這篇文章主要給大家介紹了關(guān)于java利用DFA算法實現(xiàn)敏感詞過濾功能的相關(guān)資料,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-06-06
  • 通過案例了解靜態(tài)修飾符static使用場景

    通過案例了解靜態(tài)修飾符static使用場景

    這篇文章主要介紹了通過案例了解靜態(tài)修飾符static使用場景,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-10-10
  • MyBatis處理CLOB/BLOB類型數(shù)據(jù)以及解決讀取問題

    MyBatis處理CLOB/BLOB類型數(shù)據(jù)以及解決讀取問題

    這篇文章主要介紹了MyBatis處理CLOB/BLOB類型數(shù)據(jù)以及解決讀取問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-04-04
  • Java實現(xiàn)身份證號碼驗證源碼示例分享

    Java實現(xiàn)身份證號碼驗證源碼示例分享

    本篇文章主要介紹了Java實現(xiàn)身份證號碼驗證源碼示例分享,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-10-10
  • java中Swing會奔跑的線程俠

    java中Swing會奔跑的線程俠

    本文通過代碼示例給大家詳細(xì)講解了java中Swing會奔跑的線程俠這個經(jīng)典的示例,有興趣的朋友學(xué)習(xí)下。
    2018-03-03
  • spring+maven實現(xiàn)郵件發(fā)送

    spring+maven實現(xiàn)郵件發(fā)送

    這篇文章主要為大家詳細(xì)介紹了spring+maven實現(xiàn)郵件發(fā)送,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-07-07
  • Spring依賴注入的三種方式詳解

    Spring依賴注入的三種方式詳解

    這篇文章主要給大家介紹了三種Spring依賴注入的方式,?settter方法注入,構(gòu)造器注入以及變量(filed)?注入這三種方式,文章通過代碼示例給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2023-11-11
  • java常用工具類 數(shù)字工具類

    java常用工具類 數(shù)字工具類

    這篇文章主要為大家詳細(xì)介紹了java常用工具類中的數(shù)字工具類,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-05-05
  • java 中數(shù)組初始化實例詳解

    java 中數(shù)組初始化實例詳解

    這篇文章主要介紹了 本文主要講數(shù)組的初始化方法、可變參數(shù)列表以及可變參數(shù)列表對函數(shù)重載的影響的相關(guān)資料,需要的朋友可以參考下
    2017-05-05
  • java連接mysql數(shù)據(jù)庫亂碼的解決方法

    java連接mysql數(shù)據(jù)庫亂碼的解決方法

    這篇文章主要介紹通過java連接mysql數(shù)據(jù)庫的時候,頁面出現(xiàn)亂碼,這里簡單分享下解決方法, 需要的朋友可以參考下
    2013-05-05

最新評論

平昌县| 栾城县| 西畴县| 中江县| 黔江区| 灵台县| 牙克石市| 思茅市| 仁布县| 腾冲县| 庆城县| 牟定县| 合川市| 永修县| 逊克县| 澄城县| 无棣县| 伊金霍洛旗| 兴隆县| 宽城| 安岳县| 石狮市| 望都县| 石泉县| 惠东县| 德令哈市| 元阳县| 化隆| 建阳市| 银川市| 大英县| 巩留县| 济源市| 富民县| 佛学| 固镇县| 陇川县| 唐山市| 根河市| 西华县| 开江县|