`
gaojingsong
  • 浏览: 1181695 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

【JAVA之Session基础】

阅读更多

一、Session简单介绍

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

 

HTTP协议 ( http://www.w3.org/Protocols/ )是“一次性单向”协议。 

服务端不能主动连接客户端,只能被动等待并答复客户端请求。客户端连接服务端,发出一个HTTP Request,服务端处理请求,并且返回一个HTTP Response给客户端,本次HTTP Request-Response Cycle结束。 

我们看到,HTTP协议本身并不能支持服务端保存客户端的状态信息。于是,Web Server中引入了session的概念,用来保存客户端的状态信息。 

这里用一个形象的比喻来解释session的工作方式。假设Web Server是一个商场的存包处,HTTP Request是一个顾客,第一次来到存包处,管理员把顾客的物品存放在某一个柜子里面(这个柜子就相当于Session),然后把一个号码牌交给这个顾客,作为取包凭证(这个号码牌就是Session ID)。顾客(HTTP Request)下一次来的时候,就要把号码牌(Session ID)交给存包处(Web Server)的管理员。管理员根据号码牌(Session ID)找到相应的柜子(Session),根据顾客(HTTP Request)的请求,Web Server可以取出、更换、添加柜子(Session)中的物品,Web Server也可以让顾客(HTTP Request)的号码牌和号码牌对应的柜子(Session)失效。顾客(HTTP Request)的忘性很大,管理员在顾客回去的时候(HTTP Response)都要重新提醒顾客记住自己的号码牌(Session ID)。这样,顾客(HTTP Request)下次来的时候,就又带着号码牌回来了。 

我们可以看到,Session ID实际上是在客户端和服务端之间通过HTTP Request和HTTP Response传来传去的。


 

 

二、Session和Cookie的主要区别

Cookie是把用户的数据写给用户的浏览器。

Session技术把用户的数据写到用户独占的session中。

Session对象由服务器创建,开发人员可以调用request对象的getSession方法得到session对象。

 

三、session实现原理

服务器是如何实现一个session为一个用户浏览器服务的?

服务器创建session出来后,会把session的id号,以cookie的形式回写给客户机,这样,只要客户机的浏览器不关,再去访问服务器时,都会带着session的id号去,服务器发现客户机浏览器带session id过来了,就会使用内存中与之对应的session为之服务。

 

 

1. session 过期情况:

1>. 客户端浏览器关闭:

2>. session 会话过期;

3>. 客户端会话调用了 .invalidate();

 

2. 浏览器关闭与session是否还在;

当客户端浏览器关闭后,session 在服务端还是会存在一定时间的,只是当浏览器器再次打开时,就会生成一个新的 session ,浏览器通过生成的 sessionid 属性来 匹配服务端的 session; 那上次的session 虽然还在,但是就访问不到了;

 

3. <% @ page session="false" %> 是什么情况?:

这句话的意思是,当前不能使用 session, 但是 页面 session 还是可以创建的;

 

4. session 在什么时候 被创建:

在 程序 调用 HttpServletRequest.getSession(true) 时创建;如果 页面没有使用 <%@ page session="false"%> 时,在 jsp 页面编译成 Servlet 时,会自动 加上 HttpSession session = HttpServletRequest.getSession(true);

 

 

关于 tomcat 集群中 session 共享的三种方法

前两种均需要使用 memcached 或redis 存储 session ,最后一种使用 terracotta 服务器共享。

1、使用 filter 方法存储

这种方法比较推荐,因为它的服务器使用范围比较多,不仅限于tomcat ,而且实现的原理比较简单容易控制。

可以使用memcached-session-filter

2、使用 tomcat sessionmanager 方法存储

3、使用 terracotta 服务器共享

  • 大小: 34.3 KB
0
0
分享到:
评论

相关推荐

    java购物车session

    在Java Web开发中,...而"java购物车session"这个资源则提供了一个基础的实现,适合初学者学习和练习。通过分析和修改这个项目,你可以深入理解session的用法,以及如何在Java Web环境中构建一个基本的购物系统。

    一个关于Session的小demo

    本小demo以JSP为基础,旨在帮助初学者理解并掌握Session的使用方法。 首先,我们来解释一下什么是Session。Session是服务器端存储的一个数据结构,用于保存用户特定的信息,比如用户的登录状态、购物车内容等。当...

    7、JAVA培训之JSP基础05_session对象笔记[整理].pdf

    Java Web开发中的Session对象是HTTP协议中用于跟踪用户状态的重要工具。在Web应用程序中,由于HTTP协议本身是无状态的,即服务器无法识别同一客户端的多次请求,因此无法实现如登录状态保持这样的功能。为了解决这个...

    Java+EE基础实用教程(电子教案+代码)

    3. EJB:EJB是Java EE中处理业务逻辑的核心组件,分为会话bean(Session Beans)和实体bean(Entity Beans)。会话bean负责业务逻辑,实体bean则对应数据库中的持久化对象。 4. JPA和Hibernate:JPA是Java规范,...

    tokenSession拦截器的使用

    在Java Web应用开发中,Struts2框架提供了一种非常实用的方法来解决这个问题——通过使用`tokenSession`拦截器。相比于传统的`token`拦截器,`tokenSession`提供了更加灵活和友好的用户体验。本文将深入探讨`token...

    java经典基础.txt

    根据提供的文件信息,我们可以从中提炼出以下关于Java的基础知识点: ### 1. Java 基础概念 在Java中,存在多种数据类型和结构,包括基本数据类型和引用类型。文件中提到了“圈子”(可能是指类或对象),以及初始...

    java笔试题大全(java笔试,面试笔试,逻辑题,各大公司题目,java基础)

    EJB(Enterprise JavaBeans)是Java EE平台的核心组件之一,用于构建可部署在服务器端的企业级应用。EJB包括Session Beans、Message-driven Beans和Entity Beans,分别处理业务逻辑、消息处理和持久化数据。"EJB方面...

    Java EE基础实用教程[郑阿奇]

    首先,Servlet是Java EE中的核心组件之一,它是一个服务器端的小型Java程序,用于接收和响应HTTP请求。Servlet可以处理动态内容,与静态HTML页面配合,构建功能丰富的Web应用。在郑阿奇的教程中,可能会详细讲解如何...

    java源码包---java 源码 大量 实例

     Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多的网络程序,这是最基础的部分。 递归遍历矩阵 1个目标文件,简单! 多人聊天室 3...

    JavaWeb基础-Cookie和Session的简单使用案例

    在JavaWeb开发中,Cookie和Session是两种常见的用户会话管理技术,用于在客户端和服务器之间传递信息。本文将深入探讨这两个概念,并通过一个简单的登录案例来阐述它们的使用。 首先,Cookie是服务器发送到用户...

    Java中设置session的详细解释.docx

    在Java编程中,Session是Web开发中的一个关键概念,它主要用于在客户端和服务器之间保持状态。...为了克服这个问题,Session机制应运而生。...理解并熟练掌握Session的使用,是每个Java Web开发者的基础技能。

    Java面试题必备——Java基础知识部分汇

    Java面试题必备——Java基础知识部分汇总 本文总结了Java基础知识部分的重要知识点,涵盖了Java面试中常见的问题,包括作用域、String类、int和Integer的区别、String和StringBuffer的区别、运行时异常与一般异常的...

    java基础面试题WORD

    Java 基础面试题 本资源摘要信息涵盖了 Java 基础知识点,包括面向对象的特征、String 和 StringBuffer 的区别、运行时异常与一般异常的区别、Servlet 生命周期、ArrayList、Vector 和 LinkedList 的存储性能和特性...

    tomcat7-redis-session-manager-java6-2.0.0.zip

    它提供了丰富的API,用于执行各种Redis命令,如设置和获取键值、订阅发布等,是我们实现Session存储在Redis中的基础。 2. commons-pool2-2.4.2.jar:Apache Commons Pool 2,是一个对象池库,用于管理资源,例如...

    java 2 EE基础笔记大全

    Java 2 EE 基础笔记大全 Java EE Web 开发中的 JSP 基础语法 在 Java EE Web 开发中,JSP(Java Server Pages)是一种动态网页技术,允许开发者在 HTML 中嵌入 Java 代码,以生成动态网页内容。JSP 语法是基于 ...

    java基础测试题目

    【Java基础测试题目详解】 1. **面向对象的特征** - **抽象**:抽象是面向对象编程的核心概念,它允许我们关注问题的关键部分,忽略不重要的细节。抽象分为过程抽象和数据抽象。过程抽象是将一个复杂的过程简化为...

    java基础知识点

    Java 基础知识点 Java 是一种面向对象的编程语言,它具有抽象、继承、封装、多态性等特征。下面是 Java 基础知识点的详细解释: 1. 面向对象的特征: 面向对象编程的四个基本特征是抽象、继承、封装和多态性。 *...

    java从零基础到精通的整个详细笔记(2012版)

    【Java基础】 Java是一种广泛使用的面向对象的编程语言,具有平台无关性、安全性、高效性和可移植性等特性。初学者需要理解Java的基本语法,包括变量声明、数据类型(如int、String、boolean等)、控制结构(if语句...

    java基础面试题合集.rar

    内容比较老,包含java面试基础题,包含java基础,语法redis,异常处理,IO,集合,多线程,java高级,http协议,cookie-session,jsonp,Linux常用命令,常用前端框架,mysql,oracle数据库,主流框架,quartz定时任务,...

    Tomcat+redis、session同步

    `Tomcat`是一款广泛应用的Java Servlet容器,它为运行Java Web应用程序提供了基础。而`Redis`则是一款高性能的键值存储系统,常用于缓存、会话共享等场景。本文将深入探讨如何将`Tomcat`与`Redis`结合,实现`session...

Global site tag (gtag.js) - Google Analytics