`

原来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>

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.

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

    如果Session不存在,它会新建一个;如果已存在,就返回现有的Session。 4. **存储Session数据** 一旦有了Session对象,我们就可以使用 `setAttribute(String name, Object value)` 方法将数据存入Session。例如,...

    Session Cookie的HttpOnly和secure属性

    当设置为true时,表示创建的 Cookie 会被以安全的形式向服务器传输,也就是只能在 HTTPS 连接中被浏览器传递到服务器端进行会话验证,如果是 HTTP 连接则不会传递该信息,所以不会被窃取到Cookie 的具体内容。...

    报表session与应用session常识普及

    尽管如此,实际上很难做到在浏览器关闭时就删除session,因为浏览器关闭并不一定会触发服务器端的关闭session的代码。通常的做法是在客户端页面中使用JavaScript的window.onclose事件来尝试在浏览器关闭时向服务器...

    Session登录在线人

    4. **处理会话过期**:默认情况下,Session有一定的超时时间,超过这个时间没有接收到客户端的请求,Session会被自动销毁。可以自定义Session的超时时间,例如在Servlet中,使用`session.setMaxInactiveInterval(int...

    验证码校验servlet实现

    在本项目中,我们通过Servlet来实现验证码的校验功能,这是一个典型的Web开发中的验证流程。Servlet是Java中用于处理HTTP请求的服务端组件,它可以接收用户的请求并返回响应。 首先,我们需要理解验证码的基本原理...

    javaee-Session持久化小结

    当用户首次访问服务器时,如果没有Session,服务器会创建一个新的Session并返回一个唯一的Session ID,这个ID会被发送给客户端(通常是在Cookie中)。之后,客户端每次请求时都会携带这个Session ID,服务器根据ID...

    session的用法

    - Session机制是Web开发中不可或缺的一部分,它允许开发者创建个性化的用户体验,同时带来了状态管理的挑战。理解Session的工作原理,并熟练掌握其在Java Web中的应用,对于构建高效、安全的Web应用至关重要。在...

    web练习题 jsp servlet

    - 客户端发出`KILL-SESSION`请求通常是为了手动结束Session,但这不一定是标准的行为,因此可能不被所有服务器支持,选项d可能是特定环境下的行为。 2. **JSP生命周期方法**: - JSP引擎定义的方法中,`_jsp...

    java session判断用户登录时间和点击页面次数

    在Web应用中,Servlet常被用作控制器,负责接收、处理和转发用户请求。 **1. 用户登录时间记录** 当用户成功登录后,我们需要记录下登录的具体时间。这可以通过以下步骤实现: 1. 在用户验证通过(例如,用户名和...

    servlet多线程

    4. **避免在Servlet中创建额外线程**:由于Servlet本身已具备多线程特性,额外创建线程可能会引入复杂的线程安全问题,除非有特殊需求。 5. **对外部资源的线程安全操作**:在多个Servlet中对同一外部资源(如文件...

    Session的工作原理与概念详解

    在计算机科学中,特别是网络编程领域,“**Session**”一词被广泛使用,并且在不同的上下文中具有不同的含义。通常,Session指的是客户端与服务器之间的一次交互过程,即从客户端第一次发起请求到最后一次请求结束...

    servlet-3-1-specification.pdf

    文件提到Servlet容器会为每个请求创建新的线程,但并不一定为每个请求创建新的Servlet实例。实例数量取决于容器的实现和配置,允许开发者通过设置来控制实例化策略。 7. Servlet的请求处理 Servlet处理包括对HTTP...

    Session-JavaWeb专题

    - **产生**:当用户首次访问某个网站时,服务器会创建一个新的 Session 对象,并为这个对象分配一个唯一的 Session ID。然后,服务器将这个 Session ID 通过 Cookie 或 URL 重写等方式发送给客户端。 - **工作**:...

    jsp与servlet核心技术

    JSP(JavaServer Pages)和Servlet是Java EE平台上的重要技术,它们在构建动态网页和企业级应用中扮演着不可或缺的角色。 首先,我们来详细了解JSP。JSP是一种服务器端脚本语言,它允许开发者在HTML页面中嵌入Java...

    图形验证码(servlet实现)

    2. 生成验证码字符串和对应的图像,并将其保存在Servlet的session中。 3. 将图像以JPEG或PNG格式发送到客户端,通常通过设置HTTP响应的MIME类型为“image/jpeg”或“image/png”,并将图像数据作为响应体返回。 ...

    jsp的session介绍

    如果Session不存在,则创建一个新的Session。 - `session.setAttribute(name, value)`:在Session中设置属性。 - `session.getAttribute(name)`:从Session中获取属性。 - `session.invalidate()`:销毁Session。 #...

    JavaWeb 用session统计在线人数

    当用户打开一个网站并登录后,服务器会在其内存中创建一个与该用户关联的session对象,用来存储用户的登录信息和其他必要的数据。每次用户发送请求时,都会携带一个唯一的session ID,服务器通过这个ID找到对应的...

    B站韩顺平2011最细servlet笔记全

    8. **监听器Listener**:Servlet容器中的事件监听器,可以监听Servlet上下文、session和request事件,如监听session的创建和销毁,或者监听某个属性的变化。 9. **MVC模式与Servlet**:虽然Servlet本身不直接支持...

    基于servlet的用户信息管理

    Servlet是Java Servlet API的一部分,允许开发人员创建动态、交互式的Web应用程序。在这个"基于servlet的用户信息管理"项目中,我们主要关注的是如何使用Servlet来实现用户信息的增删改查操作,以及与前端JSP页面的...

Global site tag (gtag.js) - Google Analytics