Javaweb学习笔记7 session

session:会话

a。浏览网站:开始-关闭

a。浏览、付款、退出

c。电子邮件:浏览、写邮件、退出

  开始-结束

 

session机制:

 

第一次         

      客户端第一次请求服务端时,(jsessionid和session匹配失败)服务端会产生一个session()对象

                    (该session对象可以用于保存该客户的信息)并且每个session对象都会有一个唯一的sessionID(用于区分)  

                     服务端又会产生一个cookie,并且该cookie的key和value已确定,为name=JSESSIONID,value=服务端sessionID的值,然后服务端会在响应客户端的同时将该cookie发送给客户端,至此客户端                       就有了一个cookie(该里面有一个JSSENSIONID)。因此客户端的cookie就可以和服务端的session一一对应(JSSENSIONID-sessionID)

第n次

      客户端第二/n次请求服务端时:服务端会先用客户端cookie中的JSESSIONID去服务端的session中匹配sessionid,如果匹配成功(cookie jsessionid和session sessionid),说明此用户不是第一                          次访问。

 

sessionID是session对象的唯一标记,在服务端中

JSESSIONID存储在cookie中,在客户端中,由服务端给客户端

 

 

例子:

服务端:    顾客(客户端)

服务端:存包处   商场(服务端)

顾客第一次存包 :商场判断此人是否之前已经存过包(通过你手里是否有钥匙)

如果是新顾客(没钥匙),分配一个钥匙给该顾客,钥匙会和柜子一一对应。

第二次/n次寸存包,商场判断此人之前是已经存过包的(通过你手里是否有钥匙)

如果是老顾客(有钥匙),则不需要分配,该顾客手里的钥匙会和柜子一一对应

 

 

session小结:

a.  session 对象存储在服务端

b.session是在同一个用户请求时共享

c. 实现机制:第一次客户请求时产生一个sessionid并复制给cookie的jsessionid然后发给客户端,最终通过sessionID与JSESSIONID匹配

 

session 方法

String getId()      获取sessionId (字符串)

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

void invalidate() 使session失效(退出登录,失效,相当于收回钥匙或者钥匙作废)

 

session里面可以放东西

void setAttribute()

object getAttribute()

void setMaxInactiveInterval(秒):设置最大有效非活动时间。在这么长的时间内没有操作,则再次使用还需登录验证,如果在这么长时 间内操作,则上次登录有效

int getMaxInactiveInterval()获取最大有效非活动时间

 

session实例

 

在浏览器内从login.jsp按照zs/abc登录入welcome.jsp页面后,即使在session有效期内从URL栏直接输入welcome.jsp会导致空指针错误,因为request内数据只在一次内有效,从地址栏回车相当于发送第二次请求。但是,如果登录入welcome.jsp后在页面按F5刷新,则还会出现之前的内容,因为如下,浏览器会重复之前的动作。

 

session内的属性是同一次会话共享,只要还没结束,就一直能获取里面的内容。但是更换浏览器则不行。

 

posted @ 2019-02-19 19:49  子汉疆南  阅读(163)  评论(0编辑  收藏  举报