亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Java Web會(huì)話技術(shù)Session的簡單使用

 更新時(shí)間:2021年05月20日 09:20:15   作者:kongsam  
在請(qǐng)求需要傳遞的信息比較多,使用Cookie技術(shù)就會(huì)增大請(qǐng)求的難度。而Session可以存儲(chǔ)對(duì)象、數(shù)組等信息,并且Session是存儲(chǔ)到服務(wù)器端的,在客戶端請(qǐng)求時(shí)只需要將session id一并攜帶給服務(wù)器端。本文將簡單的介紹如何使用Session

什么是Session

Session技術(shù)是將信息保存在服務(wù)端,而客戶端需要接收、記錄和回送Session的ID,所以Session通常情況下是借助Cookie技術(shù)來傳遞ID給服務(wù)端的,服務(wù)端拿到session id之后查詢內(nèi)存中對(duì)應(yīng)的記錄。

一個(gè)客戶端對(duì)應(yīng)一個(gè)Session,而一個(gè)Session有多個(gè)Attribute,每一個(gè)Attribute有唯一的name。

編寫代碼證明提出的觀點(diǎn):

protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    HttpSession session = req.getSession();
    PrintWriter writer = resp.getWriter();
    // 給session綁定一個(gè)user對(duì)象
    session.setAttribute("user", new User(1, "kongsam"));
    List<String> users = new ArrayList<>();
    users.add("kongsam");
    users.add("xiaoming");
    users.add("xiaohong");
    // 給session綁定一個(gè)list數(shù)組
    session.setAttribute("list", users);
    // 最后打印輸出
    writer.println("JSESSIONID = " + session.getId());
    writer.println("object => user = " + session.getAttribute("user").toString());
    for (String user : users) {
        writer.println("list => user = " + user);
    }
}

兩個(gè)不同的瀏覽器就是兩個(gè)不同的客戶端,這兩個(gè)客戶端對(duì)應(yīng)不同的JSESSIONID。

Cookie的工作原理以及講解請(qǐng)見://chabaoo.cn/article/212734.htm

Session如何工作

在現(xiàn)實(shí)生活中,當(dāng)你去理發(fā)店理發(fā)時(shí),你可以選擇在前臺(tái)辦理一張會(huì)員卡,前臺(tái)工作人員將你的基本信息和之后的消費(fèi)信息等都存儲(chǔ)到店家電腦的硬盤上,在以后消費(fèi)的時(shí)候你僅憑一張會(huì)員卡就可以查詢到你所有的信息和消費(fèi)記錄。注意,這里的你是指客戶端,前臺(tái)(店家)指的是服務(wù)端。

結(jié)合代碼理解Session

SessionDemo01是用來創(chuàng)建一個(gè)假的數(shù)據(jù)庫,并且把這個(gè)數(shù)據(jù)庫存放到Session中進(jìn)行保管。

@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    HttpSession session = req.getSession();
    // 創(chuàng)建一個(gè)假數(shù)據(jù)庫
    Map<String, VipUser> vipUsers = new HashMap<>();
    vipUsers.put("kongsam", new VipUser(1, "kongsam", "123", 50));
    vipUsers.put("xiaoming", new VipUser(2, "xiaoming", "123", 100));
    vipUsers.put("xiaohong", new VipUser(3, "xiaohong", "123", 200));
    // 將假數(shù)據(jù)庫的數(shù)據(jù)存放到Session中
    session.setAttribute("vipUsers", vipUsers);
}

然后SessionDemo02用于訪問Session里vipsUsers數(shù)據(jù)庫,如果用戶沒有辦理或者不存在該用戶則為其注冊一個(gè)新VIP。

@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    req.setCharacterEncoding("utf-8");
    resp.setCharacterEncoding("utf-8");
    resp.setContentType("text/html;charset=utf-8");
    HttpSession session = req.getSession();
    // 獲取username
    String username = req.getParameter("username");
    // 從Session中取出數(shù)據(jù)庫
    Map<String, VipUser> maps = (Map<String, VipUser>) session.getAttribute("vipUsers");
    // 判斷數(shù)據(jù)庫中是否有和username匹配的用戶
    if (maps.get(username) != null && maps.get(username).getUsername().equals(username)) {
        resp.getWriter().println(maps.get(username).getUsername() + "您好,您目前的積分是: " + maps.get(username).getPoints());
    } else {
        resp.getWriter().println("您還沒有辦理會(huì)員卡,前臺(tái)正在為您辦理中...,請(qǐng)刷新頁面。");
        maps.put(username, new VipUser(1, username, "123", 50));
        session.setAttribute("vipUsers", maps);
    }
}

來看看效果吧!

以上就是Java Web會(huì)話技術(shù)Session的簡單使用的詳細(xì)內(nèi)容,更多關(guān)于Java Session的使用的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 深入探究Bean生命周期的擴(kuò)展點(diǎn)Bean Post Processor

    深入探究Bean生命周期的擴(kuò)展點(diǎn)Bean Post Processor

    在Spring框架中,Bean生命周期的管理是非常重要的一部分,在Bean的創(chuàng)建、初始化和銷毀過程中,Spring提供了一系列的擴(kuò)展點(diǎn),其中,Bean Post Processor(后處理器)是一個(gè)重要的擴(kuò)展點(diǎn),它能夠在Bean的初始化前后做一些額外的處理,本文就和大家一起深入探究
    2023-07-07
  • Spring多線程的使用以及問題詳解

    Spring多線程的使用以及問題詳解

    在我們開發(fā)系統(tǒng)過程中,經(jīng)常會(huì)處理一些費(fèi)時(shí)間的任務(wù)(如:向數(shù)據(jù)庫中插入大量數(shù)據(jù)),這個(gè)時(shí)候就就需要使用多線程,下面這篇文章主要給大家介紹了關(guān)于Spring多線程的使用以及問題的相關(guān)資料,需要的朋友可以參考下
    2022-05-05
  • Java攔截過濾器模式 (Intercepting Filter )實(shí)現(xiàn)方法

    Java攔截過濾器模式 (Intercepting Filter )實(shí)現(xiàn)方法

    攔截過濾器模式(Intercepting Filter Pattern)用于對(duì)應(yīng)用程序的請(qǐng)求或響應(yīng)做一些預(yù)處理/后處理,本文通過實(shí)例代碼介紹Java攔截過濾器模式 (Intercepting Filter )的相關(guān)知識(shí),感興趣的朋友跟隨小編一起看看吧
    2024-03-03
  • 使用Spring Initializr方式如何快速構(gòu)建Spring Boot項(xiàng)目

    使用Spring Initializr方式如何快速構(gòu)建Spring Boot項(xiàng)目

    Spring lnitializr是一個(gè)Web應(yīng)用,它提供了一個(gè)基本的項(xiàng)目結(jié)構(gòu),能夠幫助我們快速構(gòu)建一個(gè)基礎(chǔ)的Spring Boot項(xiàng)目,本文分步驟講解如何使用Spring Initializr方式構(gòu)建Spring Boot項(xiàng)目,感興趣的朋友跟隨小編一起看看吧
    2023-08-08
  • java實(shí)現(xiàn)Yaml轉(zhuǎn)Json示例詳解

    java實(shí)現(xiàn)Yaml轉(zhuǎn)Json示例詳解

    這篇文章主要為大家介紹了java實(shí)現(xiàn)Yaml轉(zhuǎn)Json示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-02-02
  • java實(shí)現(xiàn)雷霆戰(zhàn)機(jī)

    java實(shí)現(xiàn)雷霆戰(zhàn)機(jī)

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)雷霆戰(zhàn)機(jī),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • SpringBoot注入自定義的配置文件的方法詳解

    SpringBoot注入自定義的配置文件的方法詳解

    在實(shí)際的項(xiàng)目開發(fā)過程中,我們經(jīng)常需要將某些變量從代碼里面抽離出來,放在配置文件里面。今天,我們就一起來聊一聊SpringBoot加載配置文件的幾種玩法,需要的可以參考一下
    2022-09-09
  • Java利用Request請(qǐng)求如何獲取IP地址對(duì)應(yīng)的省份、城市詳解

    Java利用Request請(qǐng)求如何獲取IP地址對(duì)應(yīng)的省份、城市詳解

    之前已經(jīng)給大家介紹了關(guān)于Java用Request請(qǐng)求獲取IP地址的相關(guān)內(nèi)容,那么下面這篇文章將給大家進(jìn)入深入的介紹,關(guān)于Java利用Request請(qǐng)求如何獲取IP地址對(duì)應(yīng)省份、城市的相關(guān)資料,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-10-10
  • java中如何區(qū)分==和equals

    java中如何區(qū)分==和equals

    這篇文章主要介紹了java中如何區(qū)分==和equals,文中講解的非常細(xì)致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-07-07
  • Spring框架web項(xiàng)目實(shí)戰(zhàn)全代碼分享

    Spring框架web項(xiàng)目實(shí)戰(zhàn)全代碼分享

    這篇文章主要介紹了Spring框架web項(xiàng)目實(shí)戰(zhàn)全代碼分享,具有一定參考價(jià)值,需要的朋友可以了解下。
    2017-11-11

最新評(píng)論