参考:http://c5ms.iteye.com/blog/1260593

servlet中的session不一定会被创建

以前在树上看session的生命周期,都知道session的生命周期是在客户第一次访问(即打开浏览器输入地址,成功访问)的时候创建。

同时HttpSessionListener接口(实现的监听器)的sessionCreated方法会被调用。

等到用户关闭浏览器,或者服务器重启的时候session被关闭,并且HttpSessionListener接口的sessionDestroyed方法会被调用。

但是我一直没有想过session是否一定会被创建,这个创建具体是在什么时候,今天写了一段代码。想做个异想天开的实验,就是用户请求的时候再后台创建GUI界面可视化管理前台用户。这时候想到的是用session创建事件管理,但是没想到则么测试也不行,最后查询API发现,session并不是一定被创建。

 HttpSession getSession() 
          Returns the current session associated with this request, or if the request does not have a session, creates one.
 HttpSession getSession(boolean create) 
          Returns the current HttpSession associated with this request or, if there is no current session and create is true, returns a new session.

   getSession有这两个方法。

第一个就是默认在没有session的时候新建(new)一个session,第二个方法就是指定布尔型(boolean)确定是否创建session。第二个方法要注意的是。

<!-- Generated by javadoc (build 1.6.0_07) on Wed Jun 24 15:16:29 PDT 2009 -->

<noscript></noscript>

HttpSessiongetSession(boolean create)
Returns the current HttpSession associated with this request or, if there is no current session andcreate is true, returns a new session.

If create is false and the request has no valid HttpSession , this method returns null .

To make sure the session is properly maintained, you must call this method before the response is committed. If the container is using cookies to maintain session integrity and is asked to create a new session when the response is committed, an IllegalStateException is thrown.

Parameters:
create - true to create a new session for this request if necessary; false to return null if there's no current session
Returns:
the HttpSession associated with this request or null if create is false and the request has no valid session
See Also:
getSession()
粗体字示意说:如果create参数传入false,并且request范围内没有HttpSession对象,则此方法会返回null
由此看来,必须在调用getSession() 的时候才能创建session否则默认是不存在session的。
呵呵,有什么不对的地方大家请指出,谢谢了。 

servlet中的session不一定会被创建相关推荐

  1. Servlet中(Session、Cookies、Servletcontext)的基本用法

    //req: 用于获得客户端(浏览器)的信息 //res: 用于向客户端(浏览器)返回信息 1.session的设置:              //得到和req相关联的session,如果没有就创建 ...

  2. Servlet中的Session

    默认的情况下一个浏览器独占一个Session对象.在需要保存用户数据时,服务器程序可以把用户数据写到用户浏览器 独占的session中,当用户使用浏览器访问其他程序是,其他程序可以从用户的Sessio ...

  3. Servlet中关于Session数据存储遇到的数据转换问题

    首先我们先通过前端jsp传值给后台servlet 代码: <a href = "servlet/S1?number=1">数据转换</a> 我们向servl ...

  4. Servlet中的Session使用方法

    步骤 获取session对象 通过setAttribute写入session 获取session的值 session销毁(手动销毁和自动销毁) 设置session package com.demo;i ...

  5. php获取jsp的session的值,在JSP或Servlet中获取session数量

    enums=ul.getUserList(); int i=0; while(enums.hasMoreElements()) { out.println(enums.nextElement()); ...

  6. 利用抽象工厂创建DAO、利用依赖注入去除客户端对工厂的直接依赖、将有关Article的各种Servlet封装到一个Servlet中(通过BaseServlet进行

    利用抽象工厂创建DAO.利用依赖注入去除客户端对工厂的直接依赖.将有关Article的各种Servlet全部封装到一个Servlet中(通过BaseServlet来进行ArticleServlet方法 ...

  7. Tomcat5集群中的SESSION复制详解

    Tomcat 5服务器为集群和SESSION复制提供了集成的支持.本系列的第一篇文章将为大家提供SESSION持久性以及TOMCAT集群中SESSION复制的 内在工作机制一个概要认识.我将会讨论SE ...

  8. servlet单实例多线程 ---线程安全问题是由实例变量造成的,只要在Servlet里面的任何方法里面都不使用实例变量,那么该Servlet就是线程安全的。(所有建议不要在servlet中定义成员变

    Servlet 单例多线程 Servlet如何处理多个请求访问? Servlet容器默认是采用单实例多线程的方式处理多个请求的: 1.当web服务器启动的时候(或客户端发送请求到服务器时),Servl ...

  9. Tomcat中的Session小结

    什么是Session 对Tomcat而言,Session是一块在服务器开辟的内存空间,其存储结构为ConcurrentHashMap: Session的目的 Http协议是一种无状态协议,即每次服务端 ...

最新文章

  1. mysql create table()_MySQL Create Table创建表
  2. 《51单片机应用开发从入门到精通》——2.2 跑马灯实例
  3. CodeLobster PHP Edition v4.5.3 Professional 注册码
  4. iOS 修改搜索框的样式为白色
  5. Seq2Seq之双向解码机制 | 附开源实现
  6. pHp中文网零基础,零基础编程
  7. VS或编译的时候不生成Release文件夹
  8. LeetCode 401. 二进制手表
  9. windows运行linux脚本命令,Windows PowerShell:通过命令而不是脚本完成操作
  10. win10下使用DuetDisplay有线/无线连接,推荐通过爱思助手(非iTunes)更新驱动
  11. python的开发环境
  12. 安永计划在印度雇佣2000人,扩大区块链等数字解决方案服务
  13. 身份证有效验证方法,
  14. Linux系统swap分区扩容,swap分区扩容
  15. 如何对计算机进行磁盘整理,WinXP电脑磁盘碎片怎么整理,教您如何给XP系统电脑进行磁盘碎片整理...
  16. python语句print(type(1j))的输出结果_Python 语句print(type(1J))的输出结果是:_学小易找答案...
  17. mysql ddl脚本_MySQL在线DDL gh-ost使用总结
  18. element-ui换肤,全局换肤
  19. 密码学——现代密码体制总结(别再管哈希叫加密了噢~)
  20. 淘宝/天猫邻家好货 API 返回值说明

热门文章

  1. php soecket服务器搭建_Linux系统编程(32)—— socket编程之TCP服务器与客户端
  2. cakephp 安装mysql_CakePHP的安装的简单方法
  3. mysql 多配置文件实例安装_mysql安装之多实例多配置文件安装
  4. java监视器_监视和管理备份系统
  5. 如何生成表_SPSS简单操作 | 如何生成交叉表?
  6. 每日一皮:终于明白女朋友挂在嘴边的“鸽子蛋”为什么那么贵了...
  7. 10年布局,这道题都不懂就别想进阿里
  8. 每日一皮:我觉得明明很好用啊,谁知道客户是这样用的呢?
  9. 【DD推荐】还用翻译工具给参数和方法取名?装个插件快速搞定!
  10. 世界很大,先从这几个公众号看起!