web应用之监听器
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应用之监听器的更多相关文章
- web.xml中监听器配置
<!-- 监听器的配置:监听器配置完以后,应用系统在启动的时候就会开启这些监听器. 监听器的理解:监听器好比一个卫兵,卫兵一直站在那里等待长官的命令,当卫兵收到长官的命令以后,立即执行 之前已经 ...
- Web中的监听器【Listener】
Servlet监听器:Servlet规范中定义的一种特殊类,它用于监听Web应用程序中的ServletContext.HttpSession和ServletRequest等域对象的创建与销毁事件,以及 ...
- Web中的监听器【Listener】与过滤器【Filter】 实例
监听器实例: package com.gwssi.listener; import javax.servlet.http.HttpSession; import javax.servlet.http. ...
- java Web三大组件--监听器
监听器概述 监听器(Listener)是一种特殊的Servlet技术,它可以监听Web应用的上下文信息.Servlet请求信息和Servlet会话信息,即ServletContext.ServletR ...
- web.xml中监听器如何顺序加载
最近用到在Tomcat服务器启动时自动加载数据到缓存,这就需要创建一个自定义的缓存监听器并实现ServletContextListener接口, 并且在此自定义监听器中需要用到Spring的依赖注入功 ...
- Web过滤器和监听器
1.过滤器 1.1什么是过滤器 Filter也称之为过滤器,它是Servlet技术中最激动人心的技术,WEB开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servle ...
- web.xml上监听器作用
<!--Spring ApplicationContext 载入 --> <listener> <listener-class>org.springframewor ...
- 启动web项目,监听器、过滤器、拦截器启动顺序
启动顺序:监听器 > 过滤器 > 拦截器 记忆技巧:接到命令,监听电报,过滤敌情,拦截行动.
- srpingboot web - 启动(3) 监听器
接上一篇 一. getRunListeners() 在run() 方法中调用了 getRunListeners(args) 方法, 先看一下这个方法干了什么 private SpringApplica ...
随机推荐
- [LeetCode][Python]Regular Expression Matching
# -*- coding: utf8 -*-'''https://oj.leetcode.com/problems/regular-expression-matching/ Implement reg ...
- Cpp again
1,
- python IOError: invalid mode ('r') or filename
我想要用pandas.read_table()将数据表中的数据读到一个pandas DataFrame对象中: import pandas as pd unames = ['user_id', 'ge ...
- C#中经常使用的几种读取XML文件的方法
XML文件是一种经常使用的文件格式,比如WinForm里面的app.config以及Web程序中的web.config文件,还有很多重要的场所都有它的身影.Xml是Internet环境中跨平台的,依赖 ...
- android 抽屉式滑动demo
下载地址:https://github.com/asijack/AndroidDrawerDemo 直接上效果图如下: 是不是还不错的样子. 先看看布局文件吧 <android.support. ...
- JavaSE思维导图(八)
- android上传位置信息导致的流量大爆炸问题调查
原由:项目中有人写了个位置上传的服务,其实一直没问题,后来不知道什么时候出现了很多抱怨,是开着app流量一下子跑掉了几个G,差点就要卖房子还移动话费了,很多同事哭笑不得的找上门来,后来PM解决了,我一 ...
- Aho - Corasick string matching algorithm
Aho - Corasick string matching algorithm 俗称:多模式匹配算法,它是对 Knuth - Morris - pratt algorithm (单模式匹配算法) 形 ...
- VC++学习之GDI概述
VC++学习之GDI概述 图形设备接口(GDI)是一个可执行程序,它接受Windows应用程序的绘图请求(表现为GDI函数调用),并将它们传给相应的设备驱动程序,完成特定于硬件的输出,象打印机输出和屏 ...
- Groovy在不同JDK版本下的性能差异
Groovy作为一种动态语言,性能和JAVA比肯定是差不少,根据网友的测试,由于测试环境,场景和编译参数的不同,大概有差2到7倍的差距 那么同样的Groovy,在不同的JDK版本下,会有着怎样的差异呢 ...