会话:用户打开浏览器,点击多个链接,访问服务器多个web资源,到关闭浏览器的过程称为一个会话。
会话产生的两种技术:Cookie和Session
- Cookie
Cookie客户端技术,程序把每个用户的数据以cookie的形式写本地浏览器。当用户使用浏览器再去访问服务器中的web资源时,就会带着各自的数据去。这样,web资源处理的就是用户各自的数据了。
CookieAPI:javax.servlet.http.CookieString getName(); //获得cookie名
String getValue(); //获得cookie值 void setValue(); //设置cookie值 void setMaxAge(int expiry) //设置cookie的有效期,默认一次会话有效。如果设置了有效期,关闭浏览器会把cookie信息保存到硬盘
// 若setMaxAge(0);表示关闭浏览器就删除此cookie
int getMaxAge() //获取有效期 void setPath(String url) //设置cookie的有效路径,只有访问这个路径时才会带上cookie String getPath() //获得有效路径 void setDomain(String pattern) //设置有效域 String getDomain() //获取有效域 request.getCookie() response.addCookie()
Cookie的注意事项:
1. 一个cookie只能表示一种信息
2. cookie大小限制为 4kb,浏览器一般只允许存放300个cookie
- Session
Session是服务器端技术,服务器在运行时可以为每一个用户的浏览器创建一个其独享的session对象,由于session为用户浏览器独享,所以用户在访问服务器的web资源时,可以把各自的数据放在各自的session中,当用户再去访问服务器中的其它web资源时,其它web资源再从用户各自的session中取出数据为用户服务。
一个session为一个用户浏览器服务
服务器创建session对应session的id号,以cookie的形式回写给客户端,只要客户端不关,再去访问服务器时,都会带着session的id号,服务器发现客户机浏览器带session id过来了,就会使用内存中与之对应的session为之服务
Session session = request.getSession(); String getId(); // void setAttribute(name,value); // Object getAttribute(); // void removeAttribute(); // invalidate(); //清空本次对话,删除session
生命周期:
创建:调用getSession方法时
销毁:Session存放在服务器的内存中,可以持久化
关闭服务器、会话过期(默认30min tomcat中可设置)
<session-config> <session-timeout>15session-timeout> session-config>