Jsp中Cookie与session的使用说明
1.Cookie的几种方法
Cookie :name =value
Javax.servlet.http.Cookie
Public Cookie (String name,String value)
String getName():获取name
String getValue():获取value
Void setMaxAge(int expiry);最大有效期(秒)
2.服务端准备Cookie:
response.addCookie(Cookie cookie)
客户端获取cookie: request.getCookie();
- 服务器增加cookie:response对象;客户端获取对象:request对象
- 不能直接获取某一个单独对象,只能一次性将全部的cookie拿到
通过F12可以发现 除了自己设置的Cookie对象外,还有一个name为JSESSIONNID的cookie
建议cookie只保存英文,数字,否则需要进行编码,解码
- 使用Cookie实现“记住用户名”功能
- session:会话
- 浏览网站:开始-关闭
- 购物:浏览,付款,退出
- 电子邮件:浏览,写邮件,退出
session机制示意图
session机制:
客户端第一次请求服务端时,(jsessionid -sessionid进行匹配)服务端会产生一个session对象(用于保护该客户的信息);
并且每个session对象都有一个唯一的sessionID(用于区分其他session);
服务端又会产生一个cookie,并且该cookie的name=JSESSIONID,value=服务端sessionID的值,然后服务端会在响应客户端的同时将该cookie发送给客户端,至此,客户端就有了一个cookie(JSESSIONID);因此,客户端的cookie就可以和服务端的session一一对应(JESSION - sessionID)
客户端第二/n请求服务端时:服务端先用客户端cookie中的JSESSIONID 去服务端的session中匹配sessionid,如果匹配成功(cookie jsessionid和session的sessionid)说明此用户不是第一次访问,无需登录。
例子:
客户端: 顾客(客户端)
服务端:存包处 - 商场(服务端)
顾客第一次存包:商场:判断此人之前是否存过包(通过你手里是否有钥匙)
如果是新顾客(没钥匙),分配一个钥匙给该客户;钥匙会和柜子一一对应;
第二/n次存包:商场判断此人之前是否之前已经存过包(通过你手里是否有钥匙)
如果是老顾客(有钥匙),则不需要分配:该顾客手里的钥匙会和柜子一一对应
Session:
- session存储在服务端
- Session是在同一个用户(客户)请求时共享
- 实现机制:第一次客户请求时产生一个sessionid并复制给cookie的jsessionid然后发给客户端。最终通过session的sessionid-cookie的jsessionid一一对应。
session方法:
String getId():获取sessionId
Boolean isNew():判断用户是否是第一次访问(新用户)
Void invalidate():使session失效(退出登录,注销)
Void setAttribute();
Object getattribute();
Void setMaxInactiveInterval():获取最大有效 非活动时间
