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

关于session的创建时间

阅读更多
今天看了Cookie和Session专题,里面讲到了session的创建时间。说直到server端调用HttpServletRequest.getSession(true)时才会创建session,并不是一有客户端访问时就创建。针对这一问题,以前也没深入研究,于是今天做了一个实验。如下所示:
TestServlet:
public class Test extends HttpServlet {

protected void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
System.out.println("test");
}

}

SessionListener:
public class SessionListener implements HttpSessionListener {
public void sessionCreated(HttpSessionEvent arg0) {

System.out.println("session is created");

}

public void sessionDestroyed(HttpSessionEvent arg0) {
System.out.println("session is destory");

}

}

当在浏览器中访问TestServlet时,并没有打印出session is created,说明此时session没有被创建,如果在TestServelt中加上HttpSession session = request.getSession(true);这句时,tomcat控制台打印出打印出session is created,说明此时已经创建了session。
而jsp和servlet也有不同的处理方式,我重启服务器,在浏览器访问index.jsp时,后台打印出了打印出session is created,说明客户端第一次访问jsp页面时就创建了session,原因是jsp的内置对象session,当容器把jsp翻译成servlet类时,会生成pageContext.getSession()代码。
下面是jsp对应servlet的部分源码
  public void _jspService(HttpServletRequest request, HttpServletResponse response)
        throws java.io.IOException, ServletException {

    PageContext pageContext = null;
    HttpSession session = null;.....


    try {
      response.setContentType("text/html;charset=UTF-8");
      pageContext = _jspxFactory.getPageContext(this, request, response,
      null, true, 8192, true);
      _jspx_page_context = pageContext;
      application = pageContext.getServletContext();
      config = pageContext.getServletConfig();
      session = pageContext.getSession();
      out = pageContext.getOut();
      _jspx_out = out;
......}

当我访问静态页面index.html时,session并没有创建。
分享到:
评论
2 楼 zhoujianghai 2011-03-24  
祝建国 写道
楼主,我专门查了相应的API,pageContext并不会创建session,这个一直是我的疑惑

pageContext有个getSession方法额,应该是在这个时候创建的吧,很久没做web了,很多知识点忘记了
1 楼 祝建国 2011-03-22  
楼主,我专门查了相应的API,pageContext并不会创建session,这个一直是我的疑惑

相关推荐

    JSP实验-购物车(用session实现)

    初学者可以学习一下,jsp写的购物车,没用到什么高深技术 我是用Eclipse+MyEclipse的,如果是用NetBeans的朋友新建一个项目,再把源文件和JavaBean复制过去相应位置

    session、cookie的跨域共享

    可以简单告诉你session不是我们大都认为的在登录时候,通过request.getSession()产生的,而是你在首次访问一个应用时候,就已经产生了,这个在我的代码里有ActiveUserListener.java这个session创建的监听器....

    创建带时间戳的session值,以及设置token

    创建带时间戳的session值,以及设置token,网上找了好多的资源,都没有现成的,都是一点点拼凑起来的为什么一定要分数才行呢?免费共享不好吗?

    JSP Session超时设置的实现方法

    Session超时理解为:浏览器和服务器之间创建了一个Session,由于客户端长时间(休眠时间)没有与服务器交互,服务器将此Session销毁,客户端再一次与服务器交互时之前的Session就不存在了。  设置Session超时时间...

    Cookie、Session、Token、JWT

    服务器在用户首次访问时为其创建一个唯一的会话标识符(Session ID),并将该标识符存储在服务器上。客户端在后续的请求中会将该 Session ID 作为 Cookie 发送给服务器。服务器使用 Session ID 来获取对应的用户信息...

    zf框架的session会话周期及次数限制使用示例

    复制代码 代码如下:<?...Zend_Loader::loadClass(“Zend_Session_Namespace”);$Session = new Zend_Session_Namespace(‘Db’);$Session ->host = ‘127.0.0.1’...//定义会话过期时间$Session ->setExpirationSecond

    php中session与cookie的比较

    本文较为详细的比较了php中...4、保存时间(生命周期),以20分钟为例 cookie的生命周期是累计的,从创建时就开始计算,20分钟后生命周期就结束,即cookie无效; session的生命周期是间隔的。从创建时开始计时,如果

    WEB16-session&cookie-源代码.rar

    1)创建Cookie: Cookie cookie = new Cookie(String cookieName,String cookieValue); 示例: Cookie cookie = new Cookie("username","zhangsan"); 那么该cookie会以响应头的形式发送给客户端: 注意:Cookie中...

    oracle 创建job实例

    Oracle 创建 Job 实例是指在 Oracle 数据库中创建一个计划任务,用于在特定的时间点执行特定的操作。以下是创建 Job 实例的详细过程和相关知识点: 一、创建 Job 实例 要创建一个 Job 实例,需要使用 dbms_job....

    Tomcat如何监控并删除超时Session详解

    偶然发现Tomcat会话时间的半小时,并不是说会话创建后,只有半小时的有效使用时间,而是说会话空闲半小时后,会被删除。索性就翻了一下源码。做了一番整理。 注:空闲时间,指的是同一个会话两次请求之间的间隔时间 ...

    django-session-cleanup:定期任务,用于从django_session表中删除过期的Django会话

    Django会话清理对于使用cached_db或db会话引擎的项目,一段时间后django_session表可能会变得很大。 Django提供了“ cleanup”管理命令,用于从此表中删除过期的会话,但是您必须手动运行此命令或设置cron作业。 ...

    SqlServer中如何解决session阻塞问题

    对于数据库运维人员来说创建session或者查询时产生问题是常规情况,下面介绍一种很有效且不借助第三方工具的方式来解决类似问题。 最近开始接触运维工作,所以自己总结一些方案便于不懂数据库的同事解决一些不太紧要...

    SessionManager

    会话管理器概述会话管理器实现,有助于开发令牌基础系统。 它还可以生成刷新令牌,访问令牌和一些安全检查。 生成的令牌可用于验证用户或连接的系统,并且具有到期时间,对于具有较短生存时间的访问令牌,您... 创建

    PHP中Session ID的实现原理实例分析

    Session 的工作机制是:为每个访问者创建一个唯一的 id (UID),并基于这个 UID 来存储变量。UID 存储在 cookie 中,亦或通过 URL 进行传导。 PHPSESSIONID的生产算法原理如下: hash_func = md5 / sha1 #可由php.ini...

    php自定文件保存session的方法

    主要介绍了php自定文件保存session的方法,详细讲述了session创建与使用的技巧,以及对应的作用范围分析,具有一定的参考借鉴价值,需要的朋友可以参考下

    详解PHP中cookie和session的区别及cookie和session用法小结

    具体来说 cookie 是保存在“客户端”的,而session是保存在“服务端”的 ...当程序需要为某个客户端的请求创建一个session时,服务器首先检查这个客户端的请求里是否已包含了一个session标识 (称为session id),

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

    显示出当前时间及年份,还可以选择年份及月份和日期 Java编写的HTML浏览器 一个目标文件 摘要:Java源码,网络相关,浏览器  Java编写的HTML浏览器源代码,一个很简单甚至不算是浏览器的HTML浏览器,使用方法:  可...

    Cookies 和 Session的详解及区别

    2.session其实指的就是访问者从到达某个特定主页到离开为止的那段时间。 Session其实是利用Cookie进行信息处理的,当用户首先进行了请求后,服务端就在用户浏览器上创建了一个Cookie,当这个Session结束时,其实就是...

    MobaXterm_21.1.rar

    secureCRT其实也是一款很强大的终端工具,良许也使用过它很长时间,但是,它毕竟是收费软件,在公司里不允许使用。而且在良许自己的电脑里一量输入大写,整个界面就乱了(原因未知,未深究),这是直接导致良许放弃...

Global site tag (gtag.js) - Google Analytics