Java 會話技術 之 session

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

2session過時/銷燬(再也不請求,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

//建立一個存儲JsessionIdcookie對象

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);}

}

相關文章
相關標籤/搜索