Cookie和HttpSession

来源:互联网 发布:https协议端口 编辑:程序博客网 时间:2024/06/10 17:54
1. 什么是Cookie

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的状态为新。



0 0
原创粉丝点击