`
wanxiaotao12
  • 浏览: 476636 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

j2ee中Session详解

    博客分类:
  • J2ee
 
阅读更多

session的创建及销毁

1、创建:request.getsession()

2、销毁:session过期, session.invalidate();

 

"session的创建和销毁由服务器端控制",服务器端才有session,客户端只是通过sessionid来匹配session.
那服务器端session如何建的呢? 普通html不会创建,jsp默认是创建的,只要你访问任何一个jsp就会创建(不过只创建一次),你关闭浏览器重新访问又会创建一个,这些创建的session由服务器自己控制销毁,你也可以在服务器端代码中销毁。

所以 "一个浏览器就是一个新session,关了浏览器session就结束了", 这种方法是错误的。
session 是在服务器端建立的,浏览器访问服务器会有一个sessionid,浏览器端通过sessionid定位服务器端的session,session的创建和销毁由服务器端控制。当浏览器关闭后,session还存在在服务器端,只不过你新开的浏览器去访问服务器会创建另一个session,这个时候的 sessionid已经不一样了。也就不能访问上一次的哪个session里面的内容了。 

什么情况下需要用上这种服务器端的session方式? 
默认情况下,jsp被访问就会创建session(最开始是空的没有数据的),你的应用中的代码只是往session里面put数据。网上说可以 通过 <%@ page session="false"%>来不让jsp自动创session.我自己测试了一下(用sessionlistener),根本不起作用, session照样创建成功。
最后说一下,只有服务器端才有session.客户端被存到本地的是cookie.不过安全性低。所以不能放重要的数据。


============================================================================


sesion的创建:
1、先request.getsession(),

2、当已有一个session与前request相关时就返回对这个 session的引用,当没有时就生成一个.

3、一个session在server通过一个sessionid来标识的。也就是说在一个server是不会有 两个相同sessionid的session.

那麼session为什麼会和cookie扯在一起呢?

正如我所说对於一 个session来说它的sessionid就是其身份的标识。若我们将这个sessionid保存到用户端,当同一个会话的后序请求来时都将这个 sessionid放在request 的header中(也就是我们说的cookie)这样不就可以来验证这个request是否与之前的request是同一个会话了吗!

什麼是会话呢?
我们可以通俗一点理解。只要你的browers不关我们就称这一系列的request与response为一个会话。一断你close就称这个会话已结束。 虽然会话结束但并不代表你的session就被destroy.因为session是存活在server上的。它的生命完全由server来主宰 (web.xml中的设定).
虽然你的session还存活在server上但你已无法再取得它。因为j2ee的api只给我们一种方法来取得与当前会话相关的session的引用:request.getsession() or reqeust.getsession(boolean)
=======================================================================


一个常见的误解是以为session在有客户端访问时就被创建,然而事实是直到某server端程序调用HttpServletRequest.getSession(true)这样的语句时才被创建注意如果JSP没有显示的使用 <%@page session="false"%> 关闭session,则JSP文件在编译成Servlet时将会自动加上这样一条语句HttpSession session = HttpServletRequest.getSession(true);

这也是JSP中隐含的session对象的来历。

<**********************有点矛盾的地方,到底JSP显示的使用< %@page session="false"%>能不能让服务端不创建sessionid呢?试验下**************************&gt;
<%@ page session="false"%> 
不是不让页面创建Session,而是在此JSP页面无法使用session.可以减少网络数据传输.

转:http://www.cnblogs.com/tiechui/archive/2010/11/30/1892145.html

 

分享到:
评论

相关推荐

    J2EE应用开发详解

    EJB有三种主要类型:会话bean(Session Beans)处理客户端交互,实体bean(Entity Beans)映射数据库中的持久数据,消息驱动bean(Message-Driven Beans)处理JMS消息。 4. **JMS(Java Message Service)**:JMS...

    J2EE应用开发详解代码

    2. **EJB**:EJB是J2EE中的核心组件,分为三种类型:Session Beans(会话bean)处理客户端请求,Message-driven Beans(消息驱动bean)处理JMS消息,而Entity Beans(实体bean)代表持久化数据。EJB提供事务管理、...

    j2ee 经典实例详解

    在深入学习《J2EE经典实例详解》的过程中,你会遇到各种实际项目场景,如用户认证、权限管理、数据访问、缓存策略、负载均衡、集群部署等。通过这些实例,你可以理解如何将上述技术应用于实际工作,并提升你的Java ...

    J2EE 经典实例详解6

    本实例详解将深入探讨J2EE技术在实际项目中的应用,帮助开发者更好地理解和掌握其核心概念。 ### 1. J2EE架构概述 J2EE架构由多个层次组成,包括客户端层、Web层、业务逻辑层(EJB层)和数据库层。这种分层设计...

    J2EE应用开发详解(罗玉玲版)光盘内容(源代码)

    《J2EE应用开发详解(罗玉玲版)》是一本深入探讨J2EE平台下应用程序开发的专业书籍,其中的光盘内容包含了源代码,为读者提供了实践学习的宝贵资源。J2EE(Java 2 Platform, Enterprise Edition)是Java语言在企业...

    J2EE 经典实例详解13

    在“J2EE经典实例详解13”中,你可能会学到如何: - 使用Servlet和JSP开发动态网站。 - 配置和使用EJB进行模块化和分布式应用设计。 - 实现JMS消息队列和发布/订阅模式,提高系统的响应速度和可靠性。 - 使用JDBC...

    J2EE经典实例详解

    在《J2EE经典实例详解》中,可能会深入探讨这些组件的实际应用,通过具体的案例展示如何使用J2EE技术来解决实际问题。例如,可能会涉及如何使用Servlet和JSP创建动态网页,如何设计和实现EJB以处理复杂的业务逻辑,...

    J2EE 经典实例详解10

    2. **EJB(Enterprise JavaBeans)**:EJB是J2EE中的核心组件模型,分为三种类型:会话bean(Session Beans)处理客户端交互,实体bean(Entity Beans)持久化数据,消息驱动bean(Message-Driven Beans)用于处理...

    J2EE 经典实例详解12

    在《J2EE经典实例详解12》中,可能涵盖了这些技术的实战应用,例如如何使用Servlet处理用户请求,如何通过JSP创建动态网页,如何设计和实现EJB组件,以及如何利用JMS和JTA进行高效的数据交换和事务处理。文件列表中...

    J2EE 经典实例详解4

    《J2EE经典实例详解4》是一本深入探讨J2EE技术的专著,通过一系列经典实例,旨在帮助读者理解并掌握J2EE平台的核心技术和应用。J2EE(Java 2 Platform, Enterprise Edition)是Java开发企业级应用程序的框架,它提供...

    J2EE 经典实例详解(1-100)

    在《J2EE经典实例详解(1-100)》中,我们可以预想它将涵盖一系列实际问题的解决方案,通过100个不同的实例来深入讲解J2EE技术的应用。这些实例可能涉及了以下几个方面: 1. **Servlet编程**:Servlet是Java语言中...

    J2EE 经典实例详解7

    本实例详解将深入探讨J2EE在实际项目中的应用,通过一系列实例帮助开发者理解和掌握J2EE的关键技术。 **1. Web组件** Web组件是J2EE架构的基础,包括Servlet和JSP(JavaServer Pages)。Servlet是Java编写的服务器...

    J2EE 经典实例详解9

    在《J2EE经典实例详解9》中,可能涵盖了以下关键知识点: 1. EJB的详细使用:包括无状态会话bean、有状态会话bean、单例bean和消息驱动bean的创建、部署及调用过程。 2. JSP与Servlet的协同工作:如何在JSP中调用...

    j2ee 经典实例详解3

    《J2EE经典实例详解3》是一本深入探讨J2EE技术的书籍,其核心内容是通过具体的实例来解析J2EE平台上的开发实践。J2EE,全称为Java 2 Platform, Enterprise Edition,是Oracle公司提供的一个用于构建企业级分布式应用...

    J2EE 经典实例详解5

    在《J2EE经典实例详解5》中,你可能会学习到如何设计和实现上述组件的实例,涵盖从简单的用户登录系统到复杂的电子商务平台。例如,可能包含以下主题: - 如何使用Servlet和JSP创建一个用户注册和登录系统。 - 如何...

    J2EE 经典实例详解(151-200)

    3. **EJB**:EJB是J2EE中用于构建服务器端组件的模型,分为会话bean(Session Beans)和实体bean(Entity Beans)。这部分可能包含对EJB生命周期的理解,以及如何创建和使用会话bean进行业务逻辑处理和持久化操作。 ...

    J2EE 经典实例详解(101-150)

    这份《J2EE经典实例详解》可能涵盖了以上部分或全部知识点的实践应用,通过实际案例帮助读者掌握J2EE开发技能,提升其在企业级项目中的应用能力。每个PDG文件可能包含了详细的步骤、源代码示例以及可能的解决方案,...

    [程序天下:J2EE整合详解与典型案例.教程_光盘4.rar

    本教程《程序天下:J2EE整合详解与典型案例》旨在深入解析J2EE技术的集成和应用,特别关注光盘4中的内容。 在J2EE整合中,重点在于如何将不同组件有效地结合在一起,以实现高效、可扩展且可靠的业务解决方案。这...

Global site tag (gtag.js) - Google Analytics