一、Session的介绍

在Web开发中,服务器可以为每个用户浏览器创建一个会话对象(session对象),注意:一个浏览器独占一个session对象(默认情况下)。因此,在需要保存用户数据时,服务器程序可以把用户数据写到用户浏览器独占的session中,当用户使用浏览器访问其它程序时,其它程序可以从用户的 session中取出该用户的数据,为用户服务。

Session是另一种记录客户状态的机制,不同的是Cookie保存在客户端浏览器中,而Session保存在服务器上。客户端浏览器访问服务器的时候,服务器把客户端信息以某种形式记录在服务器上。这就是Session。客户端浏览器再次访问时只需要从该Session中查找该客户的状态就可以了。

  如果说Cookie机制是通过检查客户身上的“通行证”来确定客户身份的话,那么Session机制就是通过检查服务器上的“客户明细表”来确认客户身份。Session相当于程序在服务器上建立的一份客户档案,客户来访的时候只需要查询客户档案表就可以了。

当程序需要为某个客户端的请求创建一个session时,服务器首先检查这个客户端的请求里是否包含了一个session标识(即sessionId),如果已经包含一个sessionId则说明以前已经为此客户创建过session,服务器就按照session id把这个session检索出来使用(如果检索不到,可能会新建一个,这种情况可能出现在服务端已经删除了该用户对应的session对象,但用户人为地在请求的URL后面附加上一个JSESSION的参数)。如果客户请求不包含sessionId,则为此客户创建一个session并且生成一个与此session相关联的sessionId,这个session id将在本次响应中返回给客户端保存。

二、Session的生命周期

1.Session的创建

一个常见的误解是以为session在有客户端访问时就被创建了,然而事实是直到某Server端程序调用了下列代码是才被创建:

HttpSession session = request.getSession(true);

注意

(1)如果JSP没有显示使用<% page session="false"%>关闭session,则JSP文件在编译成Servlet时会自动加上上面的一句代码,这也是JSP隐含的session对象的来历。

(2)访问.html静态资源因为不会被编译为Servlet,也就不涉及session的问题。

(3)当JSP页面没有显式禁止session时,在打开浏览器第一次请求该JSP时服务器会自动创建一个session,并赋予一个sessionId,发送给客户端浏览器。以后客户端接着请求本应用其他资源时会自动在请求头添加。

2.Session的销毁

(1)直接的调用HttpSession的invlidate()方法,该方法使session失效。

(2)超出HttpSession的过期时间。

第一种设置HttpSession的过期时间。

session.setMaxInactiveInterval(60); //单位为秒

第二种在Tomcat设置HttpSession的过期时间: 单位为分钟。

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

(3)服务器卸载了当前Web应用。

转载于:https://www.cnblogs.com/yangang2013/p/5387915.html

JavaWeb总结(六)—Session相关推荐

  1. JavaWeb中的Session、SessionListener、在线人数统计

    2019独角兽企业重金招聘Python工程师标准>>> JavaWeb中的Session 在JavaWeb中使用HttpSession(以下简称session)对象来表示一个会话. ...

  2. JavaWeb中使用session保持用户登录状态

    使用session保持用户登录状态 // 登录 成功// 保存用户登录的信息到Session域中req.getSession().setAttribute("user", logi ...

  3. JavaWeb: Redis存储Session方案

    2019独角兽企业重金招聘Python工程师标准>>> 所有支持Servlet规范的容器都自带session管理,于是大多数人都使用HttpSession接口存放状态信息.事实上, ...

  4. JavaWeb学习:session

    关于Session: 图1 session的话,是将数据保存在服务端的,是服务端的会话跟踪技术.关于session的原理,其实session是基于cookies实现的. 假设服务端写了两个servle ...

  5. JAVAWEB开发之Session的追踪创建和销毁、JSP详解(指令,标签,内置对象,动作即转发和包含)、JavaBean及内省技术以及EL表达式获取内容的使用

    Session的追踪技术 已知Session是利用cookie机制的服务器端技术,当客户端第一次访问资源时 如果调用request.getSession() 就会在服务器端创建一个由浏览器独享的ses ...

  6. JAVAWEB开发之Session的追踪创建和销毁、JSP具体解释(指令,标签,内置对象,动作即转发和包括)、JavaBean及内省技术以及EL表达式获取内容的使用...

    Session的追踪技术 已知Session是利用cookie机制的server端技术.当client第一次訪问资源时 假设调用request.getSession() 就会在server端创建一个由 ...

  7. JavaWeb _ 07 session、Cookie和七天免登陆

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 一.会话管理 二.cookie 三.session 四.cookie与session的区别 五.七天免登陆 一.会话管理 概 ...

  8. JavaWeb:掌握Session的使用,完善用户登录注册案例的功能

    ↑↑Java语法基础 -> 小型项目练习 -> MySQL 更多学习内容均更新在专栏了,记得关注专栏哦 ↑↑

  9. javaWeb基础六:JQuery—Ajax异步请求

    JQuery 之 Ajax 异步请求 1.1 Ajax简介 1.1.1 不使用Ajax存在的问题 在发送请求得到响应时,我们常常只需要刷新网页局部的数据,而不是整个网页的资源(在网页资源过大时,效率会 ...

最新文章

  1. 区块链的安全软肋是什么?
  2. 和对象一起运动更快乐!看完这篇正经研究,找对象的理由又多了一个
  3. 黄金三月,掌握这些,在六十万iOS程序员中脱颖而出
  4. JAVA 的 Date、Calendar的常用用法
  5. Oracle Proc开发之Makefile的编写模板
  6. C语言实现UDP网络通信(附服务端和客服端完整源码)
  7. Android 开发之多线程处理、Handler 详解
  8. 如何做到自动化运营--数据驱动
  9. XML解析-Dom4j的DOM解析方式更新XML
  10. php会话控制区别和流程,PHP会话控制:cookie和session区别与用法深入理解_后端开发...
  11. ActiveMQ_2安装
  12. H5清理微信缓存的方案
  13. Windows中通过命令行新建文件夹、新建文件
  14. 捋一捋Android的转场动画
  15. 一文搞定 Spring Security 异常处理机制!
  16. dubbo中文官方文档(新地址)
  17. 《软件工程导论》期末复习知识总结
  18. PaddleOCR 文字检测部分源码学习(8)-损失函数(4)
  19. 《一名网络工程师的自我修养》--子网划分
  20. HTML 视频(Videos)播放

热门文章

  1. Linux静态IP设置
  2. java多线程实现归并排序_利用多线程对数组进行归并排序
  3. 奖励名单表格模板_员工出勤工薪记算表(行政人事模板)
  4. 3.5.5 CSMA/CA 协议
  5. CAMB中查看波矢的取值范围
  6. 从源码分析DEARGUI之add_input_text
  7. 人工智能研究人员都忽略的问题
  8. 做了一个动态代理 IP 池项目,邀请大家免费测试~
  9. #51CTO学院四周年# 成长路上的我和你
  10. CAS SSO使用指南