package com.log.service;

import java.util.Enumeration;

import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener; import com.util.UtilPrint; /**
* 对应慕课网 3-1,http://www.imooc.com/video/5658,
* ServletContextListener的主要用途:
* 1 定时器
* 2 获取全局属性对象(设置全局属性对象)
* 3 获取web.xml中的初始化参数
* @author Wei
* @time 2016年10月4日 下午8:38:37
*/
public class WylContextListener implements ServletContextListener { public WylContextListener() {
System.out.println("com.log.service.WylContextListener()实例化,");
} @Override
public void contextInitialized(ServletContextEvent sce) {
System.out.println("com.log.service.WylContextListener.contextInitialized()...,");
ServletContext sc = sce.getServletContext();
/**
* 设置全局变量,然后再整个应用的生命周期里都可以获取到
*/
sc.setAttribute("theGlobalPara", "我是全局的属性对象,");
Enumeration<String> initparaNames = sc.getInitParameterNames();
if (initparaNames.hasMoreElements()) {
String name = initparaNames.nextElement();
/**
* 获取web.xml中的初始化参数,
* <context-param>
* <param-name>ctxName</param-name>
* <param-value>我是ctx的值</param-value>
* </context-param>
*/
String initValue = sc.getInitParameter(name);
UtilPrint.printWithSeparatorAndClass("------name:" + name + ",initValue:" + initValue,
WylContextListener.class);
} else {
UtilPrint.printWithSeparatorAndClass("com.log.service.WylContextListener.contextInitialized()...,没有获取到初始化参数", WylContextListener.class);
}
}
@Override
public void contextDestroyed(ServletContextEvent sce) {
// TODO Auto-generated method stub
System.out.println("com.log.service.WylContextListener.contextDestroyed()...,");
} }

  web.xml:

 <?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
id="WebApp_ID" version="2.5"> <!-- 配置 Struts2 的 Filter -->
<welcome-file-list> <!-- <welcome-file>index.jsp</welcome-file> 欢迎页改为MyTag.jsp -->
<welcome-file>MyTag.jsp</welcome-file>
</welcome-file-list> <listener>
<listener-class>com.log.service.WylSessionAttrbuteLister</listener-class>
</listener> <listener>
<listener-class>com.log.service.WylSessionListener</listener-class>
</listener>
<!-- ServletRequestListener -->
<listener>
<listener-class>com.log.service.WylServletRequestListener</listener-class>
</listener> <listener>
<listener-class>com.log.service.WylContextListener</listener-class>
</listener> <servlet>
<servlet-name>freemarker</servlet-name>
<servlet-class>freemarker.ext.servlet.FreemarkerServlet</servlet-class>
<!--下面的配置freemarke的ftl文件的位置 -->
<init-param>
<param-name>TemplatePath</param-name>
<param-value>/</param-value>
</init-param>
<!-- 是否和服务器(tommcat)一起启动。0为不。1为是 -->
<load-on-startup>1</load-on-startup>
</servlet> <servlet-mapping>
<servlet-name>freemarker</servlet-name>
<url-pattern>*.ftl</url-pattern>
</servlet-mapping> <servlet>
<!-- define a JspSupportServlet Object -->
<servlet-name>JspSupportServlet</servlet-name>
<servlet-class>org.apache.struts2.views.JspSupportServlet</servlet-class>
<!-- setting JspSupportServlet auto start -->
<load-on-startup>1</load-on-startup>
</servlet> <!-- <filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern>
</filter-mapping> -->
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter> <filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping> <!-- 我的自定义过滤器 --> <filter>
<filter-name>wylFiler3</filter-name>
<filter-class>com.test.javaAPI.servlet.MyFilter3</filter-class>
</filter> <filter-mapping>
<filter-name>wylFiler3</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping> <filter>
<filter-name>wylFiler4</filter-name>
<filter-class>com.test.javaAPI.servlet.MyFilterXX</filter-class>
</filter> <filter-mapping>
<filter-name>wylFiler4</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping> <filter>
<filter-name>wylFiler1</filter-name>
<filter-class>com.test.javaAPI.servlet.MyFilter1</filter-class>
</filter> <filter-mapping>
<filter-name>wylFiler1</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping> <filter>
<filter-name>wylFiler2</filter-name>
<filter-class>com.test.javaAPI.servlet.MyFilter2</filter-class>
</filter> <filter-mapping>
<filter-name>wylFiler2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping> <!-- 测试servlet用的,20161004 -->
<servlet>
<servlet-name>testMy</servlet-name>
<servlet-class>com.test.javaAPI.servlet.MyServlet</servlet-class> </servlet> <servlet-mapping>
<servlet-name>testMy</servlet-name>
<url-pattern>*.xxx</url-pattern>
</servlet-mapping> <!-- 测试servlet用的,20161004 -->
<servlet>
<servlet-name>testMy2</servlet-name>
<servlet-class>com.test.javaAPI.servlet.MyServlet2</servlet-class>
<!-- 设置 web容器已启动就实例化这个servlet,servlet一旦实例化就会调用初始化方法init(),而且生命周期里只会实例化一次 -->
<load-on-startup>1</load-on-startup>
</servlet> <servlet-mapping>
<servlet-name>testMy2</servlet-name>
<url-pattern>*.yyy</url-pattern>
</servlet-mapping>
<!-- 可以通过通过监听器来获取到,当然了,需要实现ServletContextListener接口 ,
见:com.log.service.WylContextListener-->
<context-param>
<param-name>ctxName</param-name>
<param-value>我是ctx的值</param-value>
</context-param> </web-app>

如下图,已经获取到web.xml中的<context-param>标签中设置的值了,

web应用之监听器的更多相关文章

  1. web.xml中监听器配置

    <!-- 监听器的配置:监听器配置完以后,应用系统在启动的时候就会开启这些监听器. 监听器的理解:监听器好比一个卫兵,卫兵一直站在那里等待长官的命令,当卫兵收到长官的命令以后,立即执行 之前已经 ...

  2. Web中的监听器【Listener】

    Servlet监听器:Servlet规范中定义的一种特殊类,它用于监听Web应用程序中的ServletContext.HttpSession和ServletRequest等域对象的创建与销毁事件,以及 ...

  3. Web中的监听器【Listener】与过滤器【Filter】 实例

    监听器实例: package com.gwssi.listener; import javax.servlet.http.HttpSession; import javax.servlet.http. ...

  4. java Web三大组件--监听器

    监听器概述 监听器(Listener)是一种特殊的Servlet技术,它可以监听Web应用的上下文信息.Servlet请求信息和Servlet会话信息,即ServletContext.ServletR ...

  5. web.xml中监听器如何顺序加载

    最近用到在Tomcat服务器启动时自动加载数据到缓存,这就需要创建一个自定义的缓存监听器并实现ServletContextListener接口, 并且在此自定义监听器中需要用到Spring的依赖注入功 ...

  6. Web过滤器和监听器

    1.过滤器 1.1什么是过滤器 Filter也称之为过滤器,它是Servlet技术中最激动人心的技术,WEB开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servle ...

  7. web.xml上监听器作用

    <!--Spring ApplicationContext 载入 --> <listener> <listener-class>org.springframewor ...

  8. 启动web项目,监听器、过滤器、拦截器启动顺序

    启动顺序:监听器 > 过滤器 > 拦截器 记忆技巧:接到命令,监听电报,过滤敌情,拦截行动.

  9. srpingboot web - 启动(3) 监听器

    接上一篇 一. getRunListeners() 在run() 方法中调用了 getRunListeners(args) 方法, 先看一下这个方法干了什么 private SpringApplica ...

随机推荐

  1. html---textarea初始化时就有个table空格以及tab键操作无效

    1 初始化时就有一个tab空格 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvRnJlZUFwZQ==/font/5a6L5L2T/fontsize/400 ...

  2. 机器学习Matlab打击垃圾邮件的分类————朴素贝叶斯模型

    该系列来自于我<人工智能>课程回顾总结,以及实验的一部分进行了总结学习机 垃圾分类是有监督的学习分类最经典的案例,本文首先回顾了概率论的基本知识.则以及朴素贝叶斯模型的思想.最后给出了垃圾 ...

  3. HTML系列(六):划分文档结构

    常见的网页结构布局是酱紫的,真是美美哒^O^: 一.添加基本标题h1~h6(没什么好说的): 二.标题分组hgroup <hgroup>用来将标题和子标题进行分组.如果一篇文章articl ...

  4. java调试工具

    jps当前用户已启动的java进程信息,信息包括进程号和简短的进程command. jstat输出指定 jvm 实例的特定统计量:统计量:-class-compiler-gc-gccapacity-g ...

  5. Windows Server 2003 安装Sql Server 2005 问题处理

    安装途中遇到: 问题1.无法找到产品Microsoft SQL Server Native Client的安装程序包.请使用安装包sqlncli.msi的有效副本重新安装? 答:安装SQL Serve ...

  6. CXF 调用C#.net的WebService

    原文链接:http://hi.baidu.com/pengfeiiw/blog/item/3203e29065aa3a8aa977a4d0.html 1.编写C#.net的WebService Ser ...

  7. Hadoop经典面试题(转)

    单项选择题 1. 下面哪个程序负责 HDFS 数据存储. a)NameNode b)Jobtracker c)Datanode d)secondaryNameNode e)tasktracker 2. ...

  8. nginx+php的配置

    作了N多次php环境的搭建,网上的方法还真是多,但是实际操作起来总有一些大大小小的出入,很多错误经常让我纠结不已.久病成医,渐渐地我自己就总结出了一些经验.自我感觉良好. 这种方法并非以前所流行的ap ...

  9. js写的简单轮播图

    这个轮播图代码是从网上找来的,专门找了个写法简单的,只是作为一个小练习,大概原理如下: 1.首先是图片切换2.自动播放3.调用自动播放4.移动到容器上边停止播放,离开自动播放5.移动到导航上停止播放, ...

  10. jQuery Validate W3C内容

    导入 js 库 <script src="../js/jquery.js" type="text/javascript"></script&g ...