http會(huì)話
從打開一個(gè)瀏覽器訪問某個(gè)站點(diǎn),到關(guān)閉這個(gè)瀏覽器的整個(gè)過程,稱為一次會(huì)話。會(huì)話技術(shù)就是記錄這次會(huì)話中客戶端的狀態(tài)和數(shù)據(jù)的
cookie技術(shù)
public class CookieDemo extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
/*一、服務(wù)器發(fā)送給客戶端一個(gè)cookie*/
/*1.創(chuàng)建cookie,不能存儲(chǔ)中文 */
Cookie cookie = new Cookie("name","tom");
/*
* 2.設(shè)置cookie在客戶端持久化時(shí)間
* 注意:如果不設(shè)置持久時(shí)間,cookie數(shù)據(jù)存儲(chǔ)到瀏覽器內(nèi)存中,瀏覽器關(guān)閉,cookie信息銷毀
* 如果設(shè)置持久化時(shí)間,cookie信息就會(huì)持久化到瀏覽器的硬盤文件夾中
* 單位:秒,超過這個(gè)時(shí)間,瀏覽器自動(dòng)清除cookie信息
* 如果設(shè)置為0,且路徑和、同名鍵值的cookie相同,則為刪除cookie操作
* */
cookie.setMaxAge(10*60); //
/*
* 3.設(shè)置攜帶路徑
* 如果不設(shè)置,那cookie信息訪問產(chǎn)生該cookie的web資源的所有路徑都會(huì)有cookie
* */
cookie.setPath(request.getContextPath());
/*4.向客戶端發(fā)送cookie信息*/
response.addCookie(cookie);
/*二、服務(wù)器獲取客戶端cookie*/
Cookie[] cookies = request.getCookies();
for(Cookie c:cookies){
if(cookie.getName().equals("name")){
System.out.println(c.getValue());
}
}
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
super.doPost(request, response);
}
}
session技術(shù)(常結(jié)合cookie使用)
public class SessionDemo extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
/*得到session對(duì)象*/
HttpSession session = request.getSession();
/*第一次訪問,服務(wù)器創(chuàng)建新的session,如果存在則不會(huì)創(chuàng)建新的session*/
if(session.isNew()){
System.out.println("當(dāng)前session為服務(wù)器新創(chuàng)建的"+session.getId());
}
/*向session對(duì)象中放置數(shù)據(jù)*/
session.setAttribute("sex","男");
/*取session數(shù)據(jù)*/
String sex = (String)session.getAttribute("sex");
/*移除session中數(shù)據(jù)*/
session.removeAttribute("sex");
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
super.doPost(request, response);
}
}
session對(duì)象的生命周期
/*創(chuàng)建:第一次執(zhí)行request.getSession()時(shí)*/
request.getSession();
/*手動(dòng)銷毀*/
session.invalidate();
/*
* session過期/失效(默認(rèn)30分鐘,計(jì)算方式:從不操作服務(wù)器端資源開始計(jì)時(shí))
* session過期時(shí)間配置在web.xml中配置,配置如下
*/
<web-app>
...
<session-config>
<session-timeout>60</session-timeout>
</session-config>
...
</web-app>