Session定义

Session技术学习:

问题:
一个用户的不同请求的数据处理的共享怎么办。
解决:
使用session技术
原理:
用户第一次访问服务器,服务器会创建一个session对象给用户,并将该
Session对象的JSESSIONID使用cookie技术存在浏览器中,保证用户的其他
请求能够获取到同一个session对象,也保证同一个用户得不同请求能共享数据。
一个用户只能有一个session对象。(保存数据有两种方式—1.变量—2.对象)这里选择对象。数据共享。

一个网站不可能只有一个人访问,然而每个人对网站的操作都存在不同请求之间存在着数据的共享行为。–所有就有了session对象(能够共享数据)

场景一:当用户A访问网站时,服务器由于网页需求需要客户不同请求之间共享数据。所有服务器为每个用户创建一个session对象。

场景二:用户B也访问了该网站。同样为其生成一个session对象。

场景三:该网页的服务器端就会存在针对用户的很多session对象。

场景四:当A的第一次请求生成一个sesssion对象时。同样针对服务器的第二次请求到来时。需要第一次的数据。即需要他自己的session对象。他怎么拿到属于他自己的那个session对象。
方法有两种:
1 联合数据库验证用户名得到他自己的session对象。缺点:频繁对接数据库-不可取
2 采用客户端(浏览器)存储技术cookie。
每当创建一个session对象时,并提交响应的同事。服务器会把生成session对象的附带id使用cookie客户端存储技术保存在客户端。()

Session的特点和使用:

  作用域:一次会话(关闭浏览器之前)
  服务器创建
  服务器春存储
 1.依赖cookie技术

Request.getSession();返回一个HttpSession对象/该方法即使获取session又是创建session。

返回的HttpSession对象 session.getId();返回一个JSESSIONID–******36位

HttpSession session = request.getSession();内机制

  1. 生成一个session对象,并附带生成一个id。
  2. 生成一个cookie,并通过cookie技术把id添加到浏览器cookie
  3. 还会根据浏览器返回的JSESSIONID返回相应的session对象。
    以上都是那一行代码封装的集合功能。
    关闭浏览器-----浏览器本来存在的set-cookie会被销毁,失效。重新访问网站将创建一个
    新的session以及id。重复第一次请求。原来的session对象根据有效期。30分钟内误操作也会失效。关闭服务器。服务器内所有的seesion对象都将会失效。

Session的强制失效:

   应用场景:当你登入网站时,想退出的时候。就会强制销毁你的ssession。留着也没用啊。

Session怎末实现数据共享:

   服务器session没有失效;浏览器cookie没有失效。就会找到你原先存储数据的session对象。

当你的seesion失效时,(30分钟没有操作)一般网站你点击任何地方。服务器把你请求转发到登入界面。重新登入—重新造就浏览数据。因为以前的数据随着session和cookie的销毁而失效了。

一般登入web项目时,会把登入信息存储在session,供其他请求共享信息。一般是操作的安全验证。验证是否是但前用户的访问。

**

Session的失效处理:

**

  某网站的某网页中。30分钟没操作了。当前网页因为需要共享数据。所以有

Request.getSession();方法,该方法内机制判断当原先session失效时,浏览前携带JSESSIONID去服务器查询查不到的话就会生成一个新的session。这是可以根据请求里的JSEESIONID和可能会出现的新的session进行比对。如果不一致,代表原先session失效。服务器重定向,把他发配到登入界面。重新重置浏览数据。

但这不是维一判断sesssion失效的处理机制。

可以通过getSession(false)判断是否维null判断器是否失效。

**

Session的数据流转—用户登入实例

**
俩个位置可能报空指针异常:
在三天免登入的前提下

  1. 请求获取数据时。Session失效。由于数据丢失,在新的session查找不到指定的value会返回null值。Null对象获取属性值。会报null指针异常
  2. 挂你把浏览器。Cookie失效。同样上面。

Cookie可以设置有效期。默认关闭游览器,失效。

有效期设置3天。3天免登入。
给cookie设置有效期。Session绑定的cookie技术随着浏览器的关闭而失效。
可以通过cookie cookie = new cookie(“session”,session.getId());保存原来的id不是效。下次访问获取请求通过携带的id。找到对应的session。服务器无法获取。不是他标准。得自己建立一个链接。GetServletContext.setAttribute(session.getId(),session);

你可能感兴趣的:(session基本理解)