Session技術(存放在服務器 基於cookie(存儲sessionId))html
每一個客戶端 第一次會話請求時 建立獨自的session域+JSESSIONIDweb
服務端 響應 set-cookie:JSESSIONID:xxxxx 存入客戶端 tomcat
客戶端 請求時 攜帶cookie:JSESSIONID:xxxxx去找對應的session域(內存)服務器
客戶端關閉 清除內存cookie / 保留硬盤cookiecookie
客戶端開啓 再次訪問 JSESSIONID沒有 session域還在session
Session對象的生命週期iphone
建立:第一次執行request.getSession()時建立spa
銷燬:xml
1)服務器(非正常)關閉時htm
2)session過時/銷燬(再也不請求,30分鐘(tomcat默認)後銷燬)
能夠在WEB項目下WEB-INF/web.xml中進行配置
<session-config>
<session-timeout>30</session-timeout>
</session-config>
3)手動銷燬session 退出時,刪除session內數據 不用銷燬
session.invalidate();
做用範圍:
默認在一次會話中,一次會話中任何資源公用一個session對象
public class Servlet01 extends HttpServlet {
public void doGet(...) throws ServletException, IOException {
//獲取每一個客戶端私有的session域(內存) 不存在 建立
HttpSession session=request.getSession();//獲取/建立session域
session.setAttribute("goods", "iphone"); //存儲數據
//String goods=(String)session.setAttribute("goods"); //取數據
//session.removeAttribute("goods"); //刪除數據
String id=session.getId(); //獲取JsessionId
response.getWriter().write("JsessionId:"+id); //網頁輸出id
}
public void doPost(...) {doGet(request, response);}
}
public class Servlet02 extends HttpServlet {//一次會話 任何資源共用session
public void doGet(...) throws ServletException, IOException {
HttpSession session=request.getSession();//獲取session對象
String value=(String)session.getAttribute("name");//("goods")
response.setContentType("text/html;charset=utf-8");//解決亂碼
response.getWriter().write("name:"+value);
}
public void doPost(...) {doGet(request, response);}
}
public class MyServlet extends HttpServlet {//session持久化
public void doGet(...) throws ServletException, IOException {
//獲取session對象
HttpSession session=request.getSession();
session.setAttribute("name", "小野豬");
String id=session.getId();//獲取JsessionId
//建立一個存儲JsessionId的cookie對象
Cookie cookie=new Cookie("JSESSIONID",id);
cookie.setPath("/WEB0005");
cookie.setMaxAge(60*3);//JSESSIONID 存儲時間
//發送cookie對象
response.addCookie(cookie);
response.getWriter().write("JSESSION:"+id);
}
public void doPost(...){doGet(request, response);}
}