2020国产成人精品视频,性做久久久久久久久,亚洲国产成人久久综合一区,亚洲影院天堂中文av色

分享

關閉瀏覽器后再次訪問session 保證是同一個sessionid

 一本正經(jīng)地胡鬧 2019-10-10

我們知道在正常情況下,發(fā)送http請求時,消息頭中會自動攜帶cookie信息這其中就會包括SESSIONID信息,所以只要我們沒有關閉瀏覽器,消息頭中都會自動攜帶這個信息,以供服務器訪問相應的session。 
但是如果我把瀏覽器關閉了呢?這樣的話,我該如何再次訪問相應的session呢?

我們可以這樣做,來實現(xiàn)這個需求(結合cookie)

//在servletA中設置cookie
public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        response.setContentType("text/html;charset=utf-8");
        PrintWriter out = response.getWriter();
        HttpSession session = request.getSession();
        session.setAttribute("name", "張三");
        out.println("創(chuàng)建一個session并放入姓名屬性");
        //手動添加cookie,保存JSESSIONID信息
        Cookie cookie = new Cookie("JSESSIONID", session.getId());
        cookie.setMaxAge(60*30);//設置cookie的生命周期為30min
    相應 給瀏覽器一個 session id response.addCookie(cookie);
} //在servletB中就可以正常訪問session了 public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=utf-8"); PrintWriter out = response.getWriter(); HttpSession httpSession = request.getSession(); String name = (String) httpSession.getAttribute("name"); out.println("name = "+name); }

 

 

我們來分析為什么可以這樣做?

首先,session的聲明周期是可以自己來設置的,默認的是30分鐘,那么當我們關閉瀏覽器之后,這個瀏覽器對應的session其實還沒有消亡,(如果我們需要它消亡的話,我們可以調(diào)用invalidate方法,這也是網(wǎng)站中的安全退出常見操作之一)。既然沒有消亡,為什么關閉瀏覽器之后,我們就訪問不到了呢?那是因為cookie中的JSESSIONID信息沒有了,不會自動攜帶這個session信息了,服務器找不到對應的session,就會自動添加新的session,這個新添加的session顯然不是我們需要的。所以,我們就可以利用cookie來實現(xiàn)這個需求。只要我們手動為cookie中添加JSESSIONID信息,那么不管你的瀏覽器是否關閉,我的cookie中都會攜帶JSESSION信息,這樣的話,服務器就一定能夠找到對應的session,而不會重新建立一個新的session,這樣只要session沒有消亡,就一定可以訪問到對應的session。

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內(nèi)容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多