- 浏览: 596004 次
- 性别:
- 来自: 厦门
文章分类
- 全部博客 (669)
- oracle (36)
- java (98)
- spring (48)
- UML (2)
- hibernate (10)
- tomcat (7)
- 高性能 (11)
- mysql (25)
- sql (19)
- web (42)
- 数据库设计 (4)
- Nio (6)
- Netty (8)
- Excel (3)
- File (4)
- AOP (1)
- Jetty (1)
- Log4J (4)
- 链表 (1)
- Spring Junit4 (3)
- Autowired Resource (0)
- Jackson (1)
- Javascript (58)
- Spring Cache (2)
- Spring - CXF (2)
- Spring Inject (2)
- 汉字拼音 (3)
- 代理模式 (3)
- Spring事务 (4)
- ActiveMQ (6)
- XML (3)
- Cglib (2)
- Activiti (15)
- 附件问题 (1)
- javaMail (1)
- Thread (19)
- 算法 (6)
- 正则表达式 (3)
- 国际化 (2)
- Json (3)
- EJB (3)
- Struts2 (1)
- Maven (7)
- Mybatis (7)
- Redis (8)
- DWR (1)
- Lucene (2)
- Linux (73)
- 杂谈 (2)
- CSS (13)
- Linux服务篇 (3)
- Kettle (9)
- android (81)
- protocol (2)
- EasyUI (6)
- nginx (2)
- zookeeper (6)
- Hadoop (41)
- cache (7)
- shiro (3)
- HBase (12)
- Hive (8)
- Spark (15)
- Scala (16)
- YARN (3)
- Kafka (5)
- Sqoop (2)
- Pig (3)
- Vue (6)
- sprint boot (19)
- dubbo (2)
- mongodb (2)
最新评论
session什么时候被创建
一个常见的错误是以为 session 在有客户端访问时就被创建,然而事实是直到某 server 端程序(如 Servlet )调用
要了解Session首先要知道一个概念:Session的销毁只有两种情况:
第一:session调用了 session.invalidate()方法。
第二:前后两次请求超出了session指定的生命周期时间。
其中Session的生命周期时间可以在web.xml配置。默认30分钟 在web.xml可以做如下配置:
如何来证明关闭浏览器的时候Session没有销毁呢? 我们可以创建一个SessionListener 此监听器专门用来监听Session的生命周期的.代码如下:
别忘记在web.xml中配置监听器, 配置完毕后 可以做个测试。当浏览器关闭后此监听器的 sessionDestroyed方法并没有执行,而是在5分钟左右(个人电脑没有那么精确) 才会触发sessionDestroyed ,当然 再打开浏览器的时候 sessionCreated 会自动调用 关闭5分钟后sessionDestroyed 又会自动调用, 通过getID方法大家可以判断是否为同一个Session. 所以网上说明的关闭浏览器Session就消失.其实并不正确。如果没有任何配置的情况下. 关闭浏览器30分钟后Session才会消失的。
我们可以利用这个概念做什么呢? 最典型的就是利用 SessionListener 的sessionDestroyed方法 来记录用户非正常退出的时间. 用户在访问某个网站的时候(目前的银行网站都有此功能) 显示了用户的最后登录时间. 此时间如何获取. 在这里分两种情况
如果用户按"退出" 按钮那就好说了. 跳转到action中.记录下用户退出的时间. 存储到持久层中。
如果用户非正常退出, 在没有配置Session的情况下 默认会在30分钟后调用sessionDestroyed 那么我们同样可以在此获取用户退出的时间,在sessionDestroyed 调用业务逻辑完成我们想要实现的功能。
一个常见的错误是以为 session 在有客户端访问时就被创建,然而事实是直到某 server 端程序(如 Servlet )调用
HttpServletRequest.getSession(true) //false 不会自动创建Session这样的语句时才会被创建。所以没有调用getSession方法则不会创建session。
要了解Session首先要知道一个概念:Session的销毁只有两种情况:
第一:session调用了 session.invalidate()方法。
第二:前后两次请求超出了session指定的生命周期时间。
其中Session的生命周期时间可以在web.xml配置。默认30分钟 在web.xml可以做如下配置:
<session-config> <session-timeout>5</session-timeout> </session-config>
如何来证明关闭浏览器的时候Session没有销毁呢? 我们可以创建一个SessionListener 此监听器专门用来监听Session的生命周期的.代码如下:
// 新建一个session时触发此操作 public void sessionCreated(HttpSessionEvent se) { System.out.println(se.getSession().getId()); } // 销毁一个session时触发此操作 public void sessionDestroyed(HttpSessionEvent se) { System.out.println(se.getSession().getId()); }
别忘记在web.xml中配置监听器, 配置完毕后 可以做个测试。当浏览器关闭后此监听器的 sessionDestroyed方法并没有执行,而是在5分钟左右(个人电脑没有那么精确) 才会触发sessionDestroyed ,当然 再打开浏览器的时候 sessionCreated 会自动调用 关闭5分钟后sessionDestroyed 又会自动调用, 通过getID方法大家可以判断是否为同一个Session. 所以网上说明的关闭浏览器Session就消失.其实并不正确。如果没有任何配置的情况下. 关闭浏览器30分钟后Session才会消失的。
我们可以利用这个概念做什么呢? 最典型的就是利用 SessionListener 的sessionDestroyed方法 来记录用户非正常退出的时间. 用户在访问某个网站的时候(目前的银行网站都有此功能) 显示了用户的最后登录时间. 此时间如何获取. 在这里分两种情况
如果用户按"退出" 按钮那就好说了. 跳转到action中.记录下用户退出的时间. 存储到持久层中。
如果用户非正常退出, 在没有配置Session的情况下 默认会在30分钟后调用sessionDestroyed 那么我们同样可以在此获取用户退出的时间,在sessionDestroyed 调用业务逻辑完成我们想要实现的功能。
发表评论
文章已被作者锁定,不允许评论。
-
html pre标签使用(保留空格和回车等操作)
2018-05-15 08:37 2437pre 元素可定义预格式化的文本。被包围在 pre 元素中的文 ... -
java RESTful 详解
2018-04-27 11:35 640(1)每一个URI代表一种资源,独一无二; (2)客户端 ... -
缓存穿透(预设值防止多个进程读取数据库)、缓存并发、缓存失效(过期时间用随机数)学习
2018-02-22 14:25 428一、缓存穿透 我们在项 ... -
web http协议学习
2017-11-15 15:15 511HTTP协议是web开发必须掌握的协议之一,文章的内容并没有按 ... -
spring boot进行mybatis和JPA的整合
2017-08-30 10:12 4674初识spring boot Spring框架功能很强大,但是就 ... -
如何解决常见的缓存穿透、并发和失效问题
2017-04-12 09:25 504缓存穿透与并发方案 相信不少朋友之前看过很多类似的文章,但是 ... -
系统架构设计理论与原则、负载均衡及高可用系统设计速记
2017-02-14 15:14 480一、系统架构设计理论与原则 这里主要介绍几种常见的架构设计理论 ... -
java Cookie操作总结
2017-02-04 09:14 470java对cookie的操作比较简单,主要介绍下建立cooki ... -
HTTP Cache机制学习(response meta标签)
2017-01-03 15:10 734HTTP Cache:response头部设置、http页面m ... -
java Statement和PreparedStatement的区别
2016-12-02 10:43 420第一 prepareStatement会先初始化SQL,先把这 ... -
java AtomicInteger基于CAS的乐观锁实现
2016-11-16 11:13 4581. 悲观锁与乐观锁 ... -
java Guava cache学习笔记
2016-11-15 18:26 728缓存,在我们日常开发中是必不可少的一种解决性能问题的方法。简单 ... -
公钥、私钥和SSL详细说明(生动例子)
2016-11-11 08:43 567一,公钥私钥 1,公钥 ... -
spring ehcache配置以及使用(afterPropertiesSet)
2016-11-08 19:24 1351spring 配置ehcache例子:http://blog. ... -
java 各个连接池学习总结(DBCP C3P0 PROXOOL)
2016-11-08 19:00 1239要了解Java连接池我们先要了解数据库连接池(conne ... -
java 过滤器、监听器和拦截器区别
2016-11-08 10:21 414过滤器 Servlet中的过滤器Filter是实现了javax ... -
web HTTP TCP UDP协议详情
2016-11-07 19:44 985TCP HTTP UDP HTTP/TCP/UDP 都是通信 ... -
web tomcat配置多个host实例
2016-06-02 14:08 602tomcat server.xml配置如下 <Hos ... -
web 项目访问D盘中的图片文件(tomcat配置虚拟目录)
2016-05-24 14:49 4408找到/conf/server.xml,(即tomcat的安装目 ... -
web JSP页面按钮权限控制(tld标签标签类实现BodyTagSupport)
2016-03-16 14:31 7361.xxx-tags.tld(关联具体的tag类) 放在WE ...
相关推荐
- **统计在线用户**:通过监听Session创建和销毁,可以实时统计网站上的在线用户数量。 - **资源释放**:在Session销毁时,可以清理与之关联的数据库连接或其他资源。 - **安全控制**:检测长时间未活动的Session...
5. **开发一个Session监听器**:实现Session创建和销毁时的监听逻辑。 #### 实验环境搭建 为了顺利进行实验,需要准备以下硬件和软件环境: - **硬件配置**:至少配备2GHz以上的CPU、1GB以上的RAM和1GB可用硬盘...
此外,这个类可能还会包含一些回调方法,如`onNewSession`和`onInvalidateSession`,用于在session创建和销毁时执行特定操作。 总的来说,SpringSession通过`CookieHeaderHttpSessionStrategy.java`这类策略类,...
监听器是Java Web应用程序中用于监听特定事件(如Session创建和销毁)的对象。对于Session,我们可以实现`HttpSessionListener`接口。 以下是一个简单的`SessionListener`示例: ```java public class ...
本次工程的目标是学习监听器,掌握监听三个对象的创建和销毁方法。 三个对象:rquest,session,ServletContext 实现的接口:ServletRequestListener,HttpSessionListener,ServletContextListener 工程的大致步骤...
3. 配置session监听器:可能需要创建一个实现了`javax.servlet.http.HttpSessionListener`接口的类,以便在session创建和销毁时进行相应操作,例如同步Redis中的session状态。 4. 重启Tomcat:完成上述配置后,重启...
用户登录时,调用LoginServlet,将用户名写入application的在线用户列表中,用户退出时,调用LogoutServlet,调用session.invalidate(),交给HttpSessionListener的sessionDestroyed()方法,将用户从在线列表中删除。...
4. **自定义Session监听器**:创建一个实现了`javax.servlet.http.HttpSessionListener`接口的类,用于在Session创建和销毁时,将Session数据存入或从Redis中取出。 5. **处理Session数据序列化**:由于Session数据...
监听器负责将session创建和销毁的事件映射到memcached操作。 4. **session管理策略**:在Tomcat的server.xml配置文件中,设置`<Manager>`元素来指定session管理策略,例如使用`org.apache.catalina.session....
如果当前没有Session,则创建一个新的Session。 - `setMaxInactiveInterval(int interval)`:该方法用于设置Session的非活动超时时间(单位为秒)。一旦超过这个时间且没有新的活动发生,Session将被自动销毁。 **...
`HttpSessionListener`是Servlet API中的一部分,它允许我们在session创建和销毁时执行自定义操作。在本例中,我们监听session的创建和销毁事件,以跟踪在线人数的变化。当用户首次访问网站并创建session时,我们...
3. **监听器接口**:例如,`javax.servlet.http.HttpSessionListener`接口中的`sessionCreated(HttpSessionEvent se)`和`sessionDestroyed(HttpSessionEvent se)`方法,分别在新的Session创建和销毁时被调用。...
当Session创建和销毁时,这个监听器可以执行相应的逻辑,如增加或减少在线用户计数。 在配置文件`web.xml`中,我们需要声明这个监听器,确保它在Web应用启动时被加载和注册。例如: ```xml <!-- ... --> ...
1. **HttpSessionListener**: 这个Listener可以监听用户的session创建和销毁事件。当用户打开浏览器并访问网站时,服务器为该用户创建一个session。我们可以在session创建时记录在线人数加一,session销毁(如超时或...
1. **创建会话监听器**:在Java Web应用中,可以创建一个实现了javax.servlet.HttpSessionListener的监听器类,用于在session创建和销毁时执行相应的操作。当新session创建时,增加在线人数;当session失效时,减少...
9. **过滤器(Filter)和监听器(Listener)**:如何使用Filter拦截请求并预处理,以及使用Listener监听特定事件,如session创建和销毁。 10. **Servlet 3.0新特性**:包括异步处理、注解配置、...
这里的`com.example.SessionCreationListener`和`com.example.SessionDestroyListener`分别对应Session创建和销毁的监听器实现类。 四、会话超时与错误页面 在`web.xml`中,我们可以设置默认的会话超时时间,以及...
1.何为session?相当于一个客户端(可以是浏览器、app、ftp等其他,而且同一个浏览器多开几个又算是不同的客户端)对...session_unset()释放当前在内存中已经创建的所有$_SESSION变量,但不删除session文件以及不释放对
7. **Filter和Listener**:学习使用Servlet Filter拦截和修改HTTP请求和响应,以及Servlet Listener监听Web应用中的事件,如session创建和销毁。 8. **Spring框架**:Spring是Java EE开发中广泛使用的轻量级框架,...
7. **Servlet监听器和过滤器**:监听器监听特定事件并作出响应,如session创建和销毁;过滤器在请求处理前后执行特定逻辑。两者的区别在于监听器关注事件,过滤器关注数据流。 8. **MVC模式**:模型-视图-控制器,...