a.Cookie是HTTP协议的规范之一,它是服务器和客户端之间传输的小数据。
b. 首先由服务器通过响应头把Cookie传输给客户端,客户端会将Cookie保存起来。
c.当客户端再次请求同一服务器时,客户端会在请求头中添加该服务器保存的Cookie,发送给服务器。
d. Cookie就是服务器保存在客户端的数据!
e
e.Cookie就是一个键值对!
2.Servlet中向客户端发送Cookie
Cookie cookie = new Cookie("key","value“);
response.addCookie(cookie);
3.Servlet获取客服端发来的Cookie
Cookie[] cookie = request.getCookies();
if(cookie != null) {
for(Cookie c : cookie ) {
System.out.println(c.getName() + "=" + c.getValue());
}
}
4.cookie最大生命
最大生命:setMaxAge()方法设置Cookie的最大生命;
5.Cookie不能直接保存中文,要通过编码实现
URLEncoder.encode(value, "utf-8");
--------------------------------------------------------------------------------------
HTTPSession
在JavaWeb中提供了HttpSession类,用来表示http会话,
1.获取HttpSession
HttpSession session = response.getSession();
2.域功能
setAttribute(),getAttribute();
3session的原理
session是依赖Cookie实现的。
session是服务器端对象
当用户第一次使用session时(表示第一次请求服务器),服务器会创建session,并创建一个Cookie,在Cookie中保存了session的id,发送给客户端。
客户端就有了自己session的id了。但这个Cookie只在浏览器内存中存在,在关闭浏览器窗口后,Cookie就会丢失,也就丢失了sessionId。
当用户第二次访问服务器时,会在请求中把保存了sessionId的Cookie发送给服务器,服务器通过sessionId查找session对象,然后给使用
4.设置session超时时间可以在XML下配置
<session-config>
<session-timeout>20</session-timeout>
</session-config>
5. session的方法
String getId():获取sessionId;
int getMaxInactiveInterval():获取session可以的最大不活动时间(秒),默认为30分钟。当session在30分钟内没有使用,那么Tomcat会在session池中移除这个session;
void setMaxInactiveInterval(int interval):设置session允许的最大不活动时间(秒),如果设置为1秒,那么只要session在1秒内不被使用,那么session就会被移除;
long getCreationTime():返回session的创建时间,返回值为当前时间的毫秒值;
long getLastAccessedTime():返回session的最后活动时间,返回值为当前时间的毫秒值;
void invalidate():让session失效!调用这个方法会被session失效,当session失效后,客户端再次请求,服务器会给客户端创建一个新的session,并在响应中给客户端新session的sessionId;
*boolean isNew():查看session是否为新。当客户端第一次请求时,服务器为客户端创建session,但这时服务器还没有响应客户端,也就是还没有把sessionId响应给客户端时,这时session的状态为新。