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();

  1. 服务器增加cookie:response对象;客户端获取对象:request对象
  2. 不能直接获取某一个单独对象,只能一次性将全部的cookie拿到

通过F12可以发现 除了自己设置的Cookie对象外,还有一个name为JSESSIONNID的cookie

建议cookie只保存英文,数字,否则需要进行编码,解码

  1. 使用Cookie实现“记住用户名”功能
  2. session:会话
  1. 浏览网站:开始-关闭
  2. 购物:浏览,付款,退出
  3. 电子邮件:浏览,写邮件,退出

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:

  1. session存储在服务端
  2. Session是在同一个用户(客户)请求时共享
  3. 实现机制:第一次客户请求时产生一个sessionid并复制给cookie的jsessionid然后发给客户端。最终通过session的sessionid-cookie的jsessionid一一对应。

session方法:

String getId():获取sessionId

Boolean isNew():判断用户是否是第一次访问(新用户)

Void invalidate():使session失效(退出登录,注销)

Void setAttribute();

Object getattribute();

Void setMaxInactiveInterval():获取最大有效 非活动时间

经验分享 程序员 微信小程序 职场和发展