Servletcontext 相关监听器实例

1、ServletContext这个类代表的是整个应用,他的监听有两个: 整个应用生命周期的监听,以及属性值变更的监听

2、servletContext 的第一个监听:即生命周期的监听

(1)、实现ServletContextListener这个接口以及未实现方法

(2)、配置这个监听器,配置方式有两种:第一种就是使用javax.servlet.annotation.WebListener 这个类来注释

即:

@WebListener()

public classServletConL implements ServletContextListener{

第二种就是web.xml 中配置监听:

<listener>

<listener-class>soufun.com.ServletConL</listener-class>

</listener>

这样在这个 应用启动或停止的时候都会调用这个类的contextInitialized(ServletContextEvent arg0)方法和contextDestroyed(ServletContextEventarg0)这个方法。通过这个方法的两个参数可以获取ServletContext 对象

(3)、实例:

package soufun.com;

importjava.io.IOException;

importjava.util.logging.Logger;

importjavax.servlet.ServletContext;

importjavax.servlet.ServletContextEvent;

importjavax.servlet.ServletContextListener;

importjavax.servlet.annotation.WebListener;

/**

*@author WHD

*/

@WebListener()

public classServletConL implements ServletContextListener{

@Override

publicvoid contextDestroyed(ServletContextEvent arg0) {

//TODO Auto-generated method stub

ServletContextcon=arg0.getServletContext();

Strings1=con.getInitParameter("con1");

Strings2=con.getInitParameter("con2");

con.setAttribute("DATA","WHD");

System.out.print(s1+"   "+s2);

System.out.println("这个监听器就是这个应用生命周期的监听-结束");

}

@Override

publicvoid contextInitialized(ServletContextEvent arg0) {

LogFactory  factory=null;

Loggerlog=null;

try{

factory = new LogFactory();

log=factory.getLog("logs");

}catch (SecurityException e) {

//TODO Auto-generated catch block

e.printStackTrace();

}catch (IOException e) {

//TODO Auto-generated catch block

e.printStackTrace();

}

// 通过servletcontextEvent可以获取 servletcontext 对象

System.out.println("这个监听器就是这个应用生命周期的监听-开始");

log.info("web容器启动,context对象建立");

ServletContextcon=arg0.getServletContext();

log.info("beginget the  init param");

Strings1=con.getInitParameter("con1");

Strings2=con.getInitParameter("con2");

System.out.print(s1+"   "+s2);

//TODO Auto-generated method stub

log.info("beginset attribute in context");

con.setAttribute("DATA","WHD");

}

}

**************  日志文件****************

package soufun.com;

/**

*@author WHD

*data 2015年8月4日

*/

importjava.util.Date;

importjava.util.logging.*;

importjava.io.IOException;

importjava.text.SimpleDateFormat;

public classLogFactory {

// 在web容器启动的时候就创建日志

private  Logger log;

SimpleDateFormats= new SimpleDateFormat("yyyy-MM-dd");

Stringdata=s.format(new Date());

publicLogFactory(){}

publicLogFactory(String name) throws SecurityException, IOException{

log=Logger.getLogger(name+data+".log");

// 设置日志级别

log.setLevel(Level.INFO);

FileHandlerfhandler= new FileHandler("G:/test.log");

log.addHandler(fhandler);

}

public  Logger getLog(String name) throwsSecurityException, IOException{

if(null==log){

log=Logger.getLogger(name+data+".log");

log.setLevel(Level.INFO);

FileHandlerfhandler= new FileHandler("G:/test.log");

fhandler.setLevel(Level.INFO);

fhandler.setFormatter(newmyformat());

log.addHandler(fhandler);

}

returnlog;

}

}

class myformatextends Formatter{

@Override

publicString format(LogRecord record) {

//TODO Auto-generated method stub

return "级别"+record.getLevel()+" 信息"+record.getMessage()+"\n";

}

}

3、servletContext 的第二个监听:也就是属性变化的监听,当servletContext 中添加属性,替换属性或移除属性的时候会触发这个监听器

(1)、实现ServletContextAttributeListener 这个接口以及未实现的接口的方法

(2)、同上面一样配置监听有两种方式:第一种 使用javax.servlet.annotation.WebListener 这个类来注释:

@WebListener()

public classServletConAL  implementsServletContextAttributeListener {

第二种方式就是使用web.xml 配置

<listener>

<listener-class>soufun.com.ServletConAL</listener-class>

</listener>

(3)、实例:

package soufun.com;

importjavax.servlet.ServletContextAttributeEvent;

importjavax.servlet.ServletContextAttributeListener;

importjavax.servlet.annotation.WebListener;

/**

*@author WHD

*/

public classServletConAL  implementsServletContextAttributeListener {

@Override

publicvoid attributeAdded(ServletContextAttributeEvent arg0) {

Stringdata=String.valueOf(arg0.getServletContext().getAttribute("DATA"));

// 修改servletcontext属性的值来替换原有属性的值

arg0.getServletContext().setAttribute("DATA","whd");

// 删除这个属性值,触发下面的值

arg0.getServletContext().removeAttribute("DATA");

}

@Override

publicvoid attributeRemoved(ServletContextAttributeEvent arg0) {

//TODO Auto-generated method stub

System.out.println("context删除了属性");

}

@Override

publicvoid attributeReplaced(ServletContextAttributeEvent arg0) {

//TODO Auto-generated method stub

System.out.println("修改原来的值,触发这个函数");

}

}

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-04 00:19:45

Servletcontext 相关监听器实例的相关文章

基础篇:2.熟练掌握相关监听器的注册和使用

各类监听器的注册和使用 1.OnClickListener监听器:该监听器为单击事件监听器,常用于监听一些单击事件,如Button的单击事件.该监听器的事件监听在上一文章已介绍,在此不再赘述. 2.OnLongClickListener监听器:该监听器为长按时间监听器,与单击事件监听器的原理基本相同,该监听器的使用如下范例: button.SetOnLongClickListener(this);//注册监听 public boolean onLongClick(View v) { return

Servlet 监听器实例

1.简单介绍一下监听器 所谓监听器就是监听事件,然后针对相应的事件进行处理 监听器举例:ServletcontextListener.HttpSessionListener.HttpSessionAttributeListener 2.设计一个统计在线人数的实例 import java.util.LinkedList; import javax.servlet.ServletContext; import javax.servlet.ServletContextEvent; import jav

Maven---&gt;学习心得---&gt;maven的相关配置----&gt;概述 以及 相关配置实例

1.概述: 参考资料: 1)maven官网教程: See theGuide to Configuring Mavenfor more information. 2) The defaults for Maven are often sufficient[足够的,充分的], but if you need to change the cache location or are behind a HTTP proxy, you will need to create configuration. m

spring boot 监听器实例

在日常项目中订单创建成功后,会有类似各式各样的通知.有站内通知.短信通知.微信,app通知. 伪代码: 这里,只用伪代码示例.各式各样的通知 肯定不只一行代码.只是简化.如果后续还要增加各种各样的通知. 无疑增加了代码的耦合度.这里就可以直接采用spring 自带的监听器优化代码. 这里面只需要把相应的订单数据推送过去.spring会自动进行监听.相关资料可百度spring boot 事件监听 event类: 监听器类: 这里会有事务一致性的问题.做好相应的异常处理或是日志记录.重试机制.保证消

php删除指定目录下的相关文件实例

在php中删除文件最简单的办法直接使用unlink命令,但本文章介绍的是需要删除指定目录下的指定文件,所以我需要遍历删除了,具体看这个例子.  代码如下 复制代码 <?php //删除指定文件夹下的非法文件 function my_del($dir)  {     if(is_dir($dir)){         //打开指定文件夹         if($handle = opendir($dir))         {             while(false !== ($file

js相关小实例——进度条

代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Co

js相关小实例——滚动监听

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-

js相关小实例——滑动效果

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-

html 属性及相关应用-实例

<caption align="top"><h2>到达交接单</h2></caption> 显示效果: