一、Cookie(客户端)
1.基本概念:
Cookie(客户端,不是内置对象):Cookie是由 服务端生成的 ,再发送给客户端保存。(需要new Cookie())
相当于 本地缓存的作用;(不是内置对象),提高访问服务端的效率,但是安全性较差。
Cookie: name=value (kv对)
属于javax.servlet.http.Cookie类
综上:
a.Cookie不是内对对象,要使用必须new;
b.但是,服务端会 自动生成一个(服务端自动new一个cookie) name=JSESIONID的cookie 并返回给客户端;
2.提供常用的方法:
a.public Cookie(String name,String value)
b.String getName():获取name
c.String getValue():获取value
d.void setMaxAge(int expiry);最大有效期 (秒)
3.具体实例:
服务端准备Cookie:
response.addCookie(Cookie cookie)
服务端通过页面跳转(转发,重定向)客户端获取cookie:
request.getCookies();
a.服务端增加cookie :response对象;客户端获取对象:request对象
b.不能直接获取某一个单独Cookie对象,只能一次性将 全部的cookie拿到。
通过F12可以发现 除了自己设置的Cookie对象外,还有一个name为 JSESSIONID的cookie
建议 cookie只保存 英文数字,否则需要进行编码、解码。
4.用途:
通常使用Cookie实现 记住用户名功能。
二、session(服务端)
a.浏览网站:开始-关闭
b.购物: 浏览、付款、退出
c.电子邮件:浏览、写邮件、退出
一个会话的 开始-结束
1.基本概念:
session机制:
客户端第一次请求服务端时,(jsessionid-sessionid配对过程)服务端会产生一个session对象(用于保存该客户的信息);
并且每个session对象 都会有一个唯一的 sessionId( 用于区分其他session);
服务端由会 产生一个cookie,并且 该cookie的name=JSESSIONID ,value=服务端sessionId的值;
然后 服务端会在 响应客户端的同时 将该cookie发送给客户端,至此 客户端就有了 一个cookie(JSESSIONID);
因此,客户端的cookie就可以和服务端的session一一对应(JSESSIONID - sessionID)
客户端第二/n次请求服务端时:服务端会先用客户端cookie种的JSESSIONID 去服务端的session中匹配sessionid,如果匹配成功(cookie jsessionid和sesion sessionid),说明此用户 不是第一次访问,无需登录;
session:
a. session存储在服务端
b. session是在同一个用户(客户)请求时 共享
c. 实现机制:第一次客户请求时 产生一个sessionid 并复制给 cookie的jsessionid 然后发给客户端。最终 通过session的sessionid-cookie的jsessionid
2.提供常用的方法
a.String getId() :获取sessionId
b.boolean isNew() :判断是否是 新用户(第一次访问)
c.void invalidate():使session失效 (退出登录、注销)
d.void setAttribute()
e.Object getAttribute();
f.void setMaxInactiveInterval(秒) :设置最大有效 非活动时间
h.int getMaxInactiveInterval():获取最大有效 非活动时间
3.具体实例:
登录
客户端在第一次请求服务端时,如果服务端发现 此请求没有 JSESSIONID,则会创建一个 name=JSESIONID的cookie 并返回给客户端
&&cookie和session的区别:
session cookie
保存的位置 服务端 客户端
安全性 较安全 较不安全
保存的内容 Object String