一、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中
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");
HttpSession session = request.getSession();
session.setAttribute("username", username);
}
public void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
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");
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);
}
}