博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JavaWeb——HttpSession
阅读量:5022 次
发布时间:2019-06-12

本文共 1683 字,大约阅读时间需要 5 分钟。

Session机制:

  • session机制采用的是在服务器端保持HTTP状态信息的方案
  • 如果需要创建session时,首先去在这个请求搜索session,如果有,不会去创建session,如果没有会去创建一个session

保存session id的几种方式:

  • 保存session id的方式可以采用cookie
  • 由于cookie可能被人为的禁用,为了在cookie被禁用时依然能够把session id传递回服务器,经常采用的一种技术叫做URL重写,就是把session id附加在      URL路径的后面(有两种附加方式1.URL路径的附加信息,2.查询字符串附加在URL后面

 

Session Cookie:

  session用过SessionID来区分不同的用户,session是以cookie或URL重写为基础的,默认使用cookie来实现,系统会创造一个名为JSESSIONID的输出cookie,这称之为session cookie,以区别pesistent cookies(cookie),session cookie是存储于浏览器内存中的,并不是写到硬盘上。

 

HttpSession的生命周期:

1.什么时候创建HttpSession对象

  ①是否浏览器访问服务端的任何一个JSP,服务器都会立即创建一个HttpSession对象呢?不一定。

  1.对于JSP:

    1)若当前的JSP是客户端访问的当前WEB应用的第一个资源,且JSP的page指定的session属性值为false,则服务器就不会为JSP创建一个HttpSession对象。

    2)若当前JSP不是客户端访问的当前WEB应用的第一个资源,且其他页面已经创建一个HttpSession对象,而不会创建一个新的HttpSession对象

  2.对于Servlet:若Servlet是客户端访问的第一个WEB应用的资源,则只调用了request.getSession()或request.getSession(true)才会创建HttpSession对象

 

    ②page指令的session="false" 到底是什么意思?

    > 当前JSP页面禁用session隐含变量,但可以使用其他的显式的HttpSession对象

 

  (3)在sevlet中如何获取HttpSession对象?

    > request.getSession(boolean create):

    create为false,若没有和当前JSP页面关联的HttpSession对象,则返回null;若有,则返回true

    create为true,一定返回一个HttpSession对象。若没有和当前JSP页面关联的HttpSession对象,则服务器创建一个新的HttpSession对象返回,若有,直接返回关联的。

         request.getSession()等同于request.getSession(true)

 

2.什么时候销毁HttpSession对象

(1).直接调用HttpSession的invalidate()方法:该方法使HttpSession失效

(2).服务器卸载了当前WEB应用。

(3).超过HttpSession的过期时间

session.getMaxInactiveInterval();获取过期时间默认1800s

    》设置HttpSession的过期时间:session.setMaxInactiveInerval(5);单位为秒

    》在web.xml文件中设置HttpSession的过期时间:单位为分钟

    <session-config>

      <session-timeout>30</session-timeout>

    </session-config>

(4).并不是关闭浏览器就销毁了session对象

转载于:https://www.cnblogs.com/yangHS/p/11164410.html

你可能感兴趣的文章
[APIO2010]特别行动队
查看>>
[SCOI2016]幸运数字
查看>>
SpringBoot 集成ehcache
查看>>
初步swift语言学习笔记2(可选类型?和隐式可选类型!)
查看>>
Nginx + Tomcat 反向代理 如何在高效的在一台服务器部署多个站点
查看>>
在Vs2012 中使用SQL Server 2012 Express LocalDB打开Sqlserver2012数据库
查看>>
在Macos下完美解决Adobe Dreamweaver CC 2018 汉化及操作方法
查看>>
【转】 Newtonsoft.Json高级用法
查看>>
CodeBlocks X64 SVN 编译版
查看>>
Excel催化剂开源第42波-与金融大数据TuShare对接实现零门槛零代码获取数据
查看>>
bug记录_signalr执行$.connnection.testhub结果为空
查看>>
【转】常用的latex宏包
查看>>
[TMS320C674x] 一、GPIO认识
查看>>
酷狗的皮肤文件存放在哪
查看>>
iOS RunLoop简介
查看>>
C++的引用
查看>>
T-SQL查询进阶--深入浅出视图
查看>>
MapKeyboard 键盘按键映射 机械革命S1 Pro-02
查看>>
Android读取url图片保存及文件读取
查看>>
完整ASP.Net Excel导入
查看>>