Httpssiton(服務端)會話技術

一、Httpssiton(服務端)會話技術

1.服務器會爲每個用戶,創建一個獨立的Httpsession
2.原理:當用戶第一次訪問servlet時,服務器端會給用戶創建一個獨立的session並且生成一個sessionid,這個sessionid在相應的瀏覽器的時候,會被裝進cookie中,從而被保存到瀏覽器中,當用戶再一次訪問servlet的時候,請求中會攜帶着cookie中的sessionid去訪問,服務器會根據這個sessionid,去查看是否有對應的session對象,有就拿出來使用,沒有就創建一個(相當於用戶第一次訪問)
3.三個域的範圍:
Context域》Session域》Request域
Session域,只要會話不結束,就會存在,但是Session有默認的存活時間,30分鐘

二、Session鈍化

1.鈍化
服務器停止時,如果你的session中保存了對象,並且該對象是實現了序列化接口Serializable系統會把你保存的session序列化到服務器的work文件夾你的工程下一個文件
2.活化
當你重新啓動服務器,系統會重新把鈍化下來的那個文件加載回session中
// 獲取Session對象 並保存數據
public class Demo01 extends HttpServlet {
    public void doGet(HttpServletRequest request, 
HttpServletResponse response) throws ServletException, IOException {
        // 設置編碼格式
        response.setContentType("text/html;charset=UTF-8");
        request.setCharacterEncoding("UTF-8");

        // 獲取參數
        String username = request.getParameter("username");

        // 獲取session對象
        HttpSession session = request.getSession();
        // 保存數據
        session.setAttribute("username", username);
    }
    public void doPost(HttpServletRequest request, 
HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }
}

// 測試獲取session域中的數據
public class Demo02 extends HttpServlet {
    public void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        request.setCharacterEncoding("UTF-8");

        // 獲取session域中的數據
        HttpSession session = request.getSession();
        String username = (String)session.getAttribute("username");
        // 響應到網頁上
        response.getWriter().write(username + "   " + session.getId()); 
    }

    public void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章