會話跟蹤技術(shù)
定義和作用
作用是解決Http協(xié)議的無狀態(tài)性
1、客戶端技術(shù)
Cookie技術(shù)
URL重寫
隱藏表單域技術(shù)
2旦装、服務(wù)端技術(shù)
數(shù)據(jù)庫技術(shù)
(Http)Session技術(shù)(會話)
Cookie技術(shù)
瀏覽器有臨時目錄摊滔,有用于存放Cookie信息的文件(一個網(wǎng)站‘Web應(yīng)用’有獨立的Cookie文件)
瀏覽器接收到響應(yīng)后自動將響應(yīng)中的Cookie信息寫入Cookie文件(響應(yīng)頭的形式)
瀏覽器發(fā)送請求的時候,自動會將有效Cookie信息隨同請求一起提交給服務(wù)器(請求頭的形式)
protected void service(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
//讀取瀏覽器傳遞過來的Cookie信息
Cookie[] cookies = req.getCookies();
System.out.println("readCookie========");
if(cookies!=null)
{
for(Cookie cookie:cookies)
{
System.out.println(cookie.getName()+"-------->"+cookie.getValue());
}
}
//寫Cookie
//創(chuàng)建Cookie對象
Cookie cookie1 = new Cookie("username","aa");
Cookie cookie2 = new Cookie("age","20");//Cookie不支持漢字
cookie1.setMaxAge(300);//Cookie有效期單位秒呻袭,沒設(shè)置默認(rèn)瀏覽器關(guān)閉就消失
//將Cookie寫入res響應(yīng)對象,若傳輸很多個一樣的左电,只有最后一個有效
res.addCookie(cookie1);
res.addCookie(cookie2);
}
可用于單點登錄(多長時間不用再登陸)页响,示例代碼如下:
protected void service(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
//獲取登陸標(biāo)記,有則登陸闰蚕,無則獲取用戶名密碼
res.setContentType("text/html;charset=UTF-8");
PrintWriter out = res.getWriter();
Cookie[] cookies = req.getCookies();
if(cookies!=null&&containLoginFloag(cookies))
{
out.println("登陸成功");
}else
{
String name = req.getParameter("userName");
String pass = req.getParameter("passWord");
if(name!=null&&!"".equals(name))
{
Cookie cookie = new Cookie("YES", "1");
res.addCookie(cookie);
out.println("登陸成功");
}else{
out.println("登陸失敗");
}
}
Cookie cookie = new Cookie("YES", "1");
cookie.setMaxAge(24*60*60);
res.addCookie(cookie);
}
private boolean containLoginFloag(Cookie[] cookies)
{
boolean bool = false;
if(cookies!=null)
{
for(Cookie cookie:cookies)
{
System.out.println(cookie.getName()+"---------->"+cookie.getValue());
if("YES".equals(cookie.getName()))
{
bool = true;
break;
}
}
}
return bool;
}