• ServletContext的事件监听器,创建:当前web应用被加载(或重新加载)到服务器中,销毁:当前web应用被卸载
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
/**
* ServletContext的事件监听器,创建:当前web应用被加载(或重新加载)到服务器中,销毁:当前web应用被卸载
*/
public class ApplicationListener implements ServletContextListener { @Override
public void contextInitialized(ServletContextEvent sce) {
System.out.println("当前web应用被加载到服务器中,创建ServletContextListener对象...");
} @Override
public void contextDestroyed(ServletContextEvent sce) {
System.out.println("当前web应用被卸载,销毁ServletContextListener对象...");
} }
  • HttpSession对象的监听器,创建:会话的开始,销毁:session调用invalidate()方法,或者会话时间到期
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
/**
* HttpSession对象的监听器,创建:会话的开始,销毁:session调用invalidate()方法,或者会话时间到期
*/
public class SessionListener implements HttpSessionListener { @Override
public void sessionCreated(HttpSessionEvent se) {
System.out.println("监听HttpSession对象的创建...");
} @Override
public void sessionDestroyed(HttpSessionEvent se) {
System.out.println("监听HttpSession对象的销毁...");
} }
  • HttpSession对象的监听器,创建:一次请求的开始,销毁:一次请求的结束
import javax.servlet.ServletRequestEvent;
import javax.servlet.ServletRequestListener;
/**
* HttpSession对象的监听器,创建:一次请求的开始,销毁:一次请求的结束
*
*/
public class RequestListener implements ServletRequestListener { @Override
public void requestDestroyed(ServletRequestEvent sre) {
System.out.println("监听ServletRequest对象的销毁...");
} @Override
public void requestInitialized(ServletRequestEvent sre) {
System.out.println("监听ServletRequest对象的创建...");
} }

页面:

demo1.jsp

<body>

    <h3>Demo1 Page</h3>
<!-- 1.请求页面 -->
<!-- 使用该方法无法跨页面传递参数 -->
<a href="demo2.jsp">To test Page</a> <%
//为request对象设置一个属性
request.setAttribute("name", "test1");
%> <!-- 使用forward方法可以跨页面传递参数 -->
<jsp:forward page="demo2.jsp"></jsp:forward> </body>

demo2.jsp

<body>

    <h3>销毁session</h3>
<%
session.invalidate();
%> name:<%=request.getAttribute("name") %>
<br><br>
<!-- 2.请求Servlet --> <a href="testServlet">TestServlet </a> </body>

demo3.jsp

<body>

    <h3>Demo3 Page</h3>

    name:<%=request.getAttribute("name") %>

</body>

session.jsp

<body>

    <h3>Session Page</h3>

    <%
//在page标签中禁用掉session,然后显式的创建一个session
HttpSession session = request.getSession(); //销毁session,1.设置过期时间,2.调用invalidate方法
session.setMaxInactiveInterval(10); //session.invalidate(); %> </body>

web.xml配置文件

<!-- 1.监听域对象自身的创建和销毁的事件监听器 -->
<listener>
<listener-class>com.test.demo1.ServletContextListener.ApplicationListener</listener-class>
</listener>
<listener>
<listener-class>com.test.demo1.HttpSessionListener.SessionListener</listener-class>
</listener>
<listener>
<listener-class>com.test.demo1.ServletRequestListener.RequestListener</listener-class>
</listener> <!-- 2.监听域对象中属性的增加和删除的事件监听器 -->
<listener>
<listener-class>com.test.demo2.HttpSessionAttributeListener.SessionAttributeListener</listener-class>
</listener>
<listener>
<listener-class>com.test.demo2.ServletContextAttributeListener.ApplicationAttributeListener</listener-class>
</listener>
<listener>
<listener-class>com.test.demo2.ServletRequestAttributeListener.RequestAttributeListener</listener-class>
</listener>

结果:

信息: Creation of SecureRandom instance for session ID generation using [SHA1PRNG] took [232] milliseconds.
当前web应用被加载到服务器中,创建ServletContextListener对象...
Application中添加属性:org.apache.jasper.compiler.TldLocationsCache :org.apache.jasper.compiler.TldLocationsCache@1bdb367
十一月 30, 2017 2:54:53 下午 org.apache.coyote.AbstractProtocol start
信息: Starting ProtocolHandler ["http-apr-8084"]
十一月 30, 2017 2:54:53 下午 org.apache.coyote.AbstractProtocol start
信息: Starting ProtocolHandler ["ajp-apr-8009"]
十一月 30, 2017 2:54:53 下午 org.apache.catalina.startup.Catalina start
信息: Server startup in 1386 ms
监听ServletRequest对象的创建...
Request中替代属性:org.apache.catalina.ASYNC_SUPPORTED :true
Application中添加属性:org.apache.jasper.runtime.JspApplicationContextImpl :org.apache.jasper.runtime.JspApplicationContextImpl@52ccef60
监听HttpSession对象的创建...
Request中添加属性:name :test1
监听HttpSession对象的销毁...
监听ServletRequest对象的销毁...
监听ServletRequest对象的创建...
Request中替代属性:org.apache.catalina.ASYNC_SUPPORTED :true
Request中添加属性:name :test2
监听ServletRequest对象的销毁...
监听ServletRequest对象的创建...
Request中替代属性:org.apache.catalina.ASYNC_SUPPORTED :true
监听HttpSession对象的创建...
监听ServletRequest对象的销毁...

Listener(2)—案例的更多相关文章

  1. 面试题:filter过滤器 listener 监听器 案例有点用

    1.Filter工作原理(执行流程) 当客户端发出Web资源的请求时,Web服务器根据应用程序配置文件设置的过滤规则进行检查,若客户请求满足过滤规则,则对客户请求/响应进行拦截,对请求头和请求数据进行 ...

  2. 第7章 监听器Listener

    Listener概述 Listener的使用 使用Listener需要实现相应的Listener接口. public class SessionListenerTest implements Http ...

  3. Unity3D笔记二十 多媒体与网络

    1 游戏音频 1.游戏音乐:如游戏背景音乐 2.游戏音效:如开枪或打怪物时“砰砰”的游戏音效 Unity 3D游戏引擎共支持4种音乐格式的文件,具体如下. aiff:适用于较短的音乐文件,可用作游戏音 ...

  4. ros实例_百度语音+图灵

    1 百度语音模块 参考http://blog.csdn.net/u011118482/article/details/55001444 1.1 百度语音识别包 git clonehttps://git ...

  5. JavaWEB-01-MySQL基础

    JavaWeb内容 数据库 – 数据存储 MySQL JDBC Maven - 项目管理工具 Mybatis 前端 - 为了前端哥们沟通 HTML+CSS JavaScript Ajax + Vue ...

  6. Listener监听器使用小案例

    这里介绍的就是一个客户流失监听器案例 新建一个监听器实现ServletContextListener接口 覆写contextDestroyed和contextInitialized 方法 packag ...

  7. ORA-12514, TNS:listener does not currently know of service requested in connect descriptor案例2

    今天使用SQL Developer连接一台测试服务器数据库(ORACLE 11g)时,遇到了"ORA-12514, TNS:listener does not currently know ...

  8. java web Listener的简单使用案例

    1.web.xml的配置 <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi= ...

  9. EL&Filter&Listener:EL表达式和JSTL,Servlet规范中的过滤器,Servlet规范中的监听器,观察着设计模式,监听器的使用,综合案例学生管理系统

    EL&Filter&Listener-授课 1 EL表达式和JSTL 1.1 EL表达式 1.1.1 EL表达式介绍 *** EL(Expression Language):表达式语言 ...

随机推荐

  1. python全栈开发day68-ORM操作:一般操作、ForeignKey操作、ManyToManyField、聚合查询和分组查询、F查询和Q查询等

    ORM操作 https://www.cnblogs.com/maple-shaw/articles/9403501.html 一.一般操作 1. 必知必会13条 <1> all(): 查询 ...

  2. hdfs基本操作

    hdfs基本操作 1.查询命令 hadoop dfs -ls /   查询/目录下的所有文件和文件夹 hadoop dfs -ls -R 以递归的方式查询/目录下的所有文件 2.创建文件夹 hadoo ...

  3. Codeforces 865C Gotta Go Fast 二分 + 期望dp (看题解)

    第一次看到这种骚东西, 期望还能二分的啊??? 因为存在重置的操作, 所以我们再dp的过程中有环存在. 为了消除环的影响, 我们二分dp[ 0 ][ 0 ]的值, 与通过dp得出的dp[ 0 ][ 0 ...

  4. php第二天 开始连接数据库

    php连接数据库有三种方法,分别是mysqli面向对象,mysqli面向过程,pdo. 1.查了资料,最终选择则了mysqli面向过程的方式,运行效率应该要高一些. 代码如下 <?php $se ...

  5. AtCoder Regular Contest 100 (ARC100) E - Or Plus Max 其他

    原文链接https://www.cnblogs.com/zhouzhendong/p/9251448.html 题目传送门 - ARC100E 题意 给定一个正整数 $n(n\leq 18)$. 然后 ...

  6. 005 Numpy的基本操作

    一:数组与标量,数组与数组之间的运算 1.数组与标量之间的计算 2.数组之间的加减乘除 3.元素级运算 二:.矩阵积 1.说明 这个的意思是第一个数组的列,必须和第二个数组的行的大小相同 2.运算 3 ...

  7. HDU-2032解题报告

    Hdu-2032解题报告题意:实现给定行数的杨辉三角的输出. 杨辉三角的特点:每一行数据的开头和结尾是1,然后其他的数据是由其上一个数据与其左上角的数据之和组成11 11 2 11 3 3 11 4 ...

  8. HDU 6119 小小粉丝度度熊 (区间去重)【尺取】

    <题目链接> 度度熊决定每天都在星星小姐的贴吧里面签到. 但是度度熊是一个非常健忘的孩子,总有那么几天,度度熊忘记签到,于是就断掉了他的连续签到. 不过度度熊并不是非常悲伤,因为他有m张补 ...

  9. Springboot定时任务原理及如何动态创建定时任务

    一.前言 上周工作遇到了一个需求,同步多个省份销号数据,解绑微信粉丝.分省定时将销号数据放到SFTP服务器上,我需要开发定时任务去解析文件.因为是多省份,服务器.文件名规则.数据规则都不一定,所以要做 ...

  10. C#如何Json转字符串;字符串转Json;Newtonsoft.Json(Json.Net)

    Newtonsoft.Json,一款.NET中开源的Json序列化和反序列化类库(下载地址http://json.codeplex.com/). 下面是Json序列化和反序列化的简单封装: /// & ...