Session的原理

1.session技术的概述

* session是服务器端技术

* 服务器在运行时可以为每一个用户的浏览器创建一个其独享的session对象

* 由于session为用户浏览器独享,所以用户在访问服务器的web资源时,可以把各自的数据放在各自的session中

* 当用户再去访问服务器中的其它web资源时,其它web资源再从用户各自的session中取出数据为用户服务

* session也是基于cookie技术的,传递是session的id值

Session对象的API

1.session对象的方法

* void setAttribute(String name, Object value)

* Object getAttribute(String name)

* void removeAttribute(String name)

* String getId()                                        -- session的空间有唯一的id值,获取该id值的。

* void invalidate()                                     -- 销毁session对象

* ServletContext getServletContext()                    -- 获取ServletContext域对象

2.使用request对象来获取到session的对象

* request.getSession()                                  -- 返回HttpSession对象,第一次调用,为你创建session对象(空间)

Session的创建和销毁

1.session对象的创建

* 针对是每个用户的浏览器,为每一个浏览器都创建一个独享的session的对象。

* request.getSession()      -- 该方法可以创建session的对象,但是也可以来获取到session对象

* 根据cookie对象中是否有jsessionid的cookie,如果有,通过id值查找,找到了不用创建了,返回。如果没有找到,创建一个新的session对象。

2.session对象的销毁

* 关闭服务器销毁session

* 非正常的原因关闭服务器,销毁session

* 如果正常关闭服务器,session会被序列化到磁盘上。

* 配置session的默认销毁时间,默认值是30分钟

* 在tomcat/conf/web.xml文件中设置了session默认超时时间

<session-config>

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

</session-config>

* 设置session最大的存活的时间

*  void setMaxInactiveInterval(int interval)

* 直接使用方法,销毁session

* invalidate();

Session域对象

1.session的域对象

* 作用:用来传递数据

* 区别:每个域对象的存活时间不同!!

2.方法

* void setAttribute(String name, Object value)

* Object getAttribute(String name)

* void removeAttribute(String name)

3.域对象(3个域对象最重要的)

* request               -- 真是对象HttpServletRequest

* 代表的是一次请求的范围

* 在服务器端给客户度传递一些提示的信息和查询的数据

* session               -- 真实对象HttpSession

* 代表的是一次会话的范围(可以发送多次请求和得到多次响应)

* 保存的都是和每个用户相关的数据(登录后需要把用户的信息,购买商品需要保存起来)

* application           -- 真实对象ServletContext

* 代表的是一个WEB应用

* 保存全局共享的数据

简述Session的更多相关文章

  1. 简述Session 、Cookie、cache 区别

    区别: 1.session是把数据保存在服务器上,每一个用户都有自己的session. 2.cookie是保存在客户端(也就是本机电脑). 3.cache是保存在服务器上,每个用户都可以访问的对象. ...

  2. cookie和session笔记

    1.http协议是无连接的,即每一次http请求都是新的,和上一次没有联系,这不利于和用户的交互.针对这一缺点产生了cookie. 2.cookie是一段保存在客户端上的验证信息,同一个域使用同一个c ...

  3. Java面试必备知识2

    1 .三个Statment区别,用法 Statement,基本的:PreparedStatement是可编译的,提高效率,callablestatement,存储过程 2 .Cookie 答:临时co ...

  4. Webfrom基础知识

    MyBeNASP.NET内置对象 (1)简述ASP.NET内置对象. 答:ASP.NET提供了内置对象有Page.Request.Response.Application.Session.Server ...

  5. PHP 常识

    PHP常识 1.谈谈你对MVC的认识,介绍几种目前比较流行的框架 由Model(M),View(V),Cntroller(C) 组成的一种设计模式,Model 主要处理一些业务处理类,View是页面显 ...

  6. django入门基础

    首先要说的是django与其他的框架不同,django是一个封装的及其完善的框架,我们使用django也不会像之前写学生系统那样,django操作数据库使用自带的ORM来进行操作,Torando与Fl ...

  7. php面试题,百度答案

    一公司: 1.@当将其放置在一个PHP表达式之前有什么作用? 2.用foreach把$arr=array(1,2,3,4)每个values值乘2输出: 3.PHP定界符如何使用? 4.说出mysql_ ...

  8. SSH面试题目

    一简答 spring工作原理 为什么要用spring 3.请你谈谈SSH整合 4.介绍一下Spring的事务管理 5.Struct2基本流程 6.在Hibernate应用中Java对象的状态有哪些? ...

  9. .NET面试题(三)

    第1讲:面试前期准备 1.了解相关技术职务需要的技术人才                              2.准备一份出色的个人简历 第2讲:面试前期准备                   ...

随机推荐

  1. Java收藏

    1.某大神的cnblogs博客关于java的随笔分类:http://www.cnblogs.com/viviman/category/444566.html 2.某大神的cnblogs博客关于java ...

  2. 用docker toolBox 搭建 nginx + flask + redis 环境

    本篇博客,主要是了解一下docker-compose的使用,docker-compose是官方给出的同时部署多个容器的解决方案:当你需要多个容器同时运行作为你的解决方案时:比如构建一个网站,需要php ...

  3. 对Ajax的理解

    一.Ajax的工作原理: 1. Ajax的机制是:完成异步请求,实现页面的局部刷新. 2. 发送异步请求:通过xmlhttprequest方法. 3. 浏览器向服务器发送异步请求: 服务器接收处理请求 ...

  4. javac找不到或无法加载主类 com.sun.tools.javac.Main

    在安装jdk后或者以前安装了jdk某时使用javac编译java文件时出现找不到或无法加载主类com.sun.tools.javac.Main,这个问题时,网上一般都说是环境变量配置不对,这样的说法其 ...

  5. PHPstorm--ThinkStorm安装

    原文地址 http://www.thinkphp.cn/topic/34518.html​ QQ群: 320655679: 因为公司在使用Ide,来帮助开发,PHPstorm最近很流行,因为他有很多插 ...

  6. (zhuan)Python 虚拟环境:Virtualenv

    Python 虚拟环境:Virtualenv zhuanzi: http://liuzhijun.iteye.com/blog/1872241 virtualenv virtualenv用于创建独立的 ...

  7. github上下载的文件如何在本地运行

    最近想学习自己写插件,所以先下载大神写的插件膜拜下,下载下来以后,直接双击运行报错,大神怎么会犯这么低级的错误咧!所以在网上查资料,找到了解决方法. (1)上传到github上面的插件都很规范,文件根 ...

  8. Html 之div+css布局之css选择器

    CSS选择器 什么叫选择器?通俗的来说就是 我想改变html 中某个地方的  字体大小 或者背景色 或者其它属性 内边距 外边距,宽度高度 等等 一些Css 样式. 那么我们如何找到对应的 元素呢? ...

  9. 设置ubuntu 下git 的用户名和邮箱

    设置ubuntu 下git 的用户名和邮箱 摘自  慢慢修远路,上下求索心http://yanshaozhi.iteye.com/blog/386752 虽然我没看怎么明白 但我用第一总方法就设置好了 ...

  10. cocos2dx 之 android java 与 c++ 互相调用 代码(以百度定位为例子)

    在作cocosdx项目移植到android上时,预见各种头痛问题,今天首先就说说如何在 java 中调用c++ 代码. 这里就用百度定位为例吧,也是我项目中的一小块内容.首先,先百度一下 “百度定位s ...