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

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

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

什么是Session

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

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

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

protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    HttpSession session = req.getSession();
    PrintWriter writer = resp.getWriter();
    // 給session綁定一個user對象
    session.setAttribute("user", new User(1, "kongsam"));
    List<String> users = new ArrayList<>();
    users.add("kongsam");
    users.add("xiaoming");
    users.add("xiaohong");
    // 給session綁定一個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);
    }
}

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

Cookie的工作原理以及講解請見://m.fzitv.net/article/212734.htm

Session如何工作

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

結(jié)合代碼理解Session

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

@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    HttpSession session = req.getSession();
    // 創(chuàng)建一個假數(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ù)庫,如果用戶沒有辦理或者不存在該用戶則為其注冊一個新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("您還沒有辦理會員卡,前臺正在為您辦理中...,請刷新頁面。");
        maps.put(username, new VipUser(1, username, "123", 50));
        session.setAttribute("vipUsers", maps);
    }
}

來看看效果吧!

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

相關(guān)文章

  • 如何解決java中遇到的for input string:

    如何解決java中遇到的for input string: "" 報(bào)錯問題

    在本篇文章里小編給大家整理的是一篇關(guān)于如何解決java中遇到的(for input string: "")報(bào)錯內(nèi)容,需要的朋友們可以學(xué)習(xí)下。
    2020-02-02
  • Java Chaos Game噪聲游戲?qū)嵗a

    Java Chaos Game噪聲游戲?qū)嵗a

    這篇文章主要介紹了Java Chaos Game噪聲游戲?qū)嵗a,具有一定借鑒價(jià)值,需要的朋友可以參考下。
    2017-12-12
  • 基于java file 文件操作operate file of java的應(yīng)用

    基于java file 文件操作operate file of java的應(yīng)用

    本篇文章介紹了,基于java file 文件操作operate file of java的應(yīng)用。需要的朋友參考下
    2013-05-05
  • 線程局部變量的實(shí)現(xiàn)?ThreadLocal使用及場景介紹

    線程局部變量的實(shí)現(xiàn)?ThreadLocal使用及場景介紹

    這篇文章主要為大家介紹了線程局部變量的實(shí)現(xiàn)?ThreadLocal使用及場景詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-01-01
  • springboot中JSONObject遍歷并替換部分json值

    springboot中JSONObject遍歷并替換部分json值

    這篇文章主要介紹了springboot中JSONObject遍歷并替換部分json值,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • eclipse啟動tomcat無法訪問的解決方法

    eclipse啟動tomcat無法訪問的解決方法

    這篇文章介紹了eclipse啟動tomcat無法訪問的解決方法,有需要的朋友可以參考一下
    2013-10-10
  • Java數(shù)據(jù)結(jié)構(gòu)之鏈表詳解

    Java數(shù)據(jù)結(jié)構(gòu)之鏈表詳解

    本篇文章我們將講解一種新型的數(shù)據(jù)結(jié)構(gòu)—鏈表,鏈表是一種使用廣泛的通用數(shù)據(jù)結(jié)構(gòu),它可以用來作為實(shí)現(xiàn)棧,隊(duì)列等數(shù)據(jù)結(jié)構(gòu)的基礎(chǔ).文中有非常詳細(xì)的介紹,需要的朋友可以參考下
    2021-05-05
  • Java中使用注解校驗(yàn)手機(jī)號格式的詳細(xì)指南

    Java中使用注解校驗(yàn)手機(jī)號格式的詳細(xì)指南

    在現(xiàn)代的Web應(yīng)用開發(fā)中,數(shù)據(jù)校驗(yàn)是一個非常重要的環(huán)節(jié),本文將詳細(xì)介紹如何在Java中使用注解對手機(jī)號格式進(jìn)行校驗(yàn),感興趣的小伙伴可以了解下
    2025-03-03
  • MyBatis 中 SqlMapConfig 配置文件詳解

    MyBatis 中 SqlMapConfig 配置文件詳解

    這篇文章主要介紹了MyBatis 中 SqlMapConfig 配置文件詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • BeanFactory和FactoryBean的區(qū)別示例詳解

    BeanFactory和FactoryBean的區(qū)別示例詳解

    這篇文章主要為大家介紹了BeanFactory和FactoryBean的區(qū)別示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-10-10

最新評論

古浪县| 德兴市| 布尔津县| 嘉禾县| 巴林左旗| 丰镇市| 玉林市| 石门县| 海宁市| 宁乡县| 长葛市| 图木舒克市| 衡山县| 满洲里市| 射洪县| 竹山县| 嵊州市| 化州市| 蒙山县| 内黄县| 龙川县| 锦州市| 胶南市| 贵溪市| 屯门区| 八宿县| 平乡县| 利川市| 连城县| 陆良县| 尉氏县| 石棉县| 绥芬河市| 宝清县| 安塞县| 义乌市| 科技| 图们市| 锦州市| 武城县| 澄迈县|