以前在树上看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的。
呵呵,有什么不对的地方大家请指出,谢谢了。
分享到:
相关推荐
如果Session不存在,它会新建一个;如果已存在,就返回现有的Session。 4. **存储Session数据** 一旦有了Session对象,我们就可以使用 `setAttribute(String name, Object value)` 方法将数据存入Session。例如,...
当设置为true时,表示创建的 Cookie 会被以安全的形式向服务器传输,也就是只能在 HTTPS 连接中被浏览器传递到服务器端进行会话验证,如果是 HTTP 连接则不会传递该信息,所以不会被窃取到Cookie 的具体内容。...
尽管如此,实际上很难做到在浏览器关闭时就删除session,因为浏览器关闭并不一定会触发服务器端的关闭session的代码。通常的做法是在客户端页面中使用JavaScript的window.onclose事件来尝试在浏览器关闭时向服务器...
4. **处理会话过期**:默认情况下,Session有一定的超时时间,超过这个时间没有接收到客户端的请求,Session会被自动销毁。可以自定义Session的超时时间,例如在Servlet中,使用`session.setMaxInactiveInterval(int...
在本项目中,我们通过Servlet来实现验证码的校验功能,这是一个典型的Web开发中的验证流程。Servlet是Java中用于处理HTTP请求的服务端组件,它可以接收用户的请求并返回响应。 首先,我们需要理解验证码的基本原理...
当用户首次访问服务器时,如果没有Session,服务器会创建一个新的Session并返回一个唯一的Session ID,这个ID会被发送给客户端(通常是在Cookie中)。之后,客户端每次请求时都会携带这个Session ID,服务器根据ID...
- Session机制是Web开发中不可或缺的一部分,它允许开发者创建个性化的用户体验,同时带来了状态管理的挑战。理解Session的工作原理,并熟练掌握其在Java Web中的应用,对于构建高效、安全的Web应用至关重要。在...
- 客户端发出`KILL-SESSION`请求通常是为了手动结束Session,但这不一定是标准的行为,因此可能不被所有服务器支持,选项d可能是特定环境下的行为。 2. **JSP生命周期方法**: - JSP引擎定义的方法中,`_jsp...
在Web应用中,Servlet常被用作控制器,负责接收、处理和转发用户请求。 **1. 用户登录时间记录** 当用户成功登录后,我们需要记录下登录的具体时间。这可以通过以下步骤实现: 1. 在用户验证通过(例如,用户名和...
4. **避免在Servlet中创建额外线程**:由于Servlet本身已具备多线程特性,额外创建线程可能会引入复杂的线程安全问题,除非有特殊需求。 5. **对外部资源的线程安全操作**:在多个Servlet中对同一外部资源(如文件...
在计算机科学中,特别是网络编程领域,“**Session**”一词被广泛使用,并且在不同的上下文中具有不同的含义。通常,Session指的是客户端与服务器之间的一次交互过程,即从客户端第一次发起请求到最后一次请求结束...
文件提到Servlet容器会为每个请求创建新的线程,但并不一定为每个请求创建新的Servlet实例。实例数量取决于容器的实现和配置,允许开发者通过设置来控制实例化策略。 7. Servlet的请求处理 Servlet处理包括对HTTP...
- **产生**:当用户首次访问某个网站时,服务器会创建一个新的 Session 对象,并为这个对象分配一个唯一的 Session ID。然后,服务器将这个 Session ID 通过 Cookie 或 URL 重写等方式发送给客户端。 - **工作**:...
JSP(JavaServer Pages)和Servlet是Java EE平台上的重要技术,它们在构建动态网页和企业级应用中扮演着不可或缺的角色。 首先,我们来详细了解JSP。JSP是一种服务器端脚本语言,它允许开发者在HTML页面中嵌入Java...
2. 生成验证码字符串和对应的图像,并将其保存在Servlet的session中。 3. 将图像以JPEG或PNG格式发送到客户端,通常通过设置HTTP响应的MIME类型为“image/jpeg”或“image/png”,并将图像数据作为响应体返回。 ...
如果Session不存在,则创建一个新的Session。 - `session.setAttribute(name, value)`:在Session中设置属性。 - `session.getAttribute(name)`:从Session中获取属性。 - `session.invalidate()`:销毁Session。 #...
当用户打开一个网站并登录后,服务器会在其内存中创建一个与该用户关联的session对象,用来存储用户的登录信息和其他必要的数据。每次用户发送请求时,都会携带一个唯一的session ID,服务器通过这个ID找到对应的...
8. **监听器Listener**:Servlet容器中的事件监听器,可以监听Servlet上下文、session和request事件,如监听session的创建和销毁,或者监听某个属性的变化。 9. **MVC模式与Servlet**:虽然Servlet本身不直接支持...
Servlet是Java Servlet API的一部分,允许开发人员创建动态、交互式的Web应用程序。在这个"基于servlet的用户信息管理"项目中,我们主要关注的是如何使用Servlet来实现用户信息的增删改查操作,以及与前端JSP页面的...