码迷,mamicode.com
首页 > 其他好文 > 详细

ServletContextListener简介

时间:2015-07-22 20:47:06      阅读:130      评论:0      收藏:0      [点我收藏+]

标签:

在 Servlet API 中有一个 ServletContextListener 接口,它能够监听 ServletContext 对象的生命周期,实际上就是监听 Web 应用的生命周期。当Servlet 容器启动或终止Web 应用时,会触发ServletContextEvent 事件,该事件由ServletContextListener 来处理。

在 ServletContextListener 接口中定义了处理ServletContextEvent 事件的两个方法:

/***当Servlet 容器启动Web 应用时调用该方法。在调用完该方法之后,容器再对Filter 初始化, * 并且对那些在Web 应用启动时就需要被初始化的Servlet 进行初始化。*/  

contextInitialized(ServletContextEvent sce)  

/***当Servlet 容器终止Web 应用时调用该方法。在调用该方法之前,容器会先销毁所有的Servlet 和Filter 过滤器。 */

contextDestroyed(ServletContextEvent sce)  

 

下面通过两个具体的例子来介绍 ServletContextListener 的用法。 

例一:在服务启动时,将数据库中的数据加载进内存,并将其赋值给一个属性名,其它的 Servlet 就可以通过 getAttribute 进行属性值的访问。有如下两个步骤:1 : ServletContext 对象是一个为整个 web 应用提供共享的内存,任何请求都可以访问里面的内容 2 :如何实现在服务启动的时候就动态的加入到里面的内容。

我们需要做的有:  

1 ) 实现 servletContextListerner 接口 并将要共享的通过 setAttribute ( name,data )方法提交到内存中去;

2 )应用项目通过 getAttribute(name) 将数据取到 。 

 

public class ServletContextLTest implements ServletContextListener {
// 实现其中的销毁函数
public void contextDestroyed(ServletContextEvent sce) {
System.out.println("this is last destroyeed");
}
// 实现其中的初始化函数,当有事件发生时即触发
public void contextInitialized(ServletContextEvent sce) { 
ServletContext sct=sce.getServletContext(); 
Map<Integer,String> depts=newHashMap<Integer,String>(); Connection connection=null; PreparedStatement
pstm=null; ResultSet rs=null; 
try{
connection=ConnectTool.getConnection(); String
sql="select deptNo,dname from dept";
pstm=connection.prepareStatement(sql); rs=pstm.executeQuery();
while(rs.next()){ depts.put(rs.getInt(1), rs.getString(2)); } 
// 将所取到的值存放到一个属性键值对中 
sct.setAttribute("dept", depts);
System.out.println("======listener test is beginning=========");
}catch(Exception e){ 
e.printStackTrace(); 
}finally{
ConnectTool.releasersc(rs, pstm, connection); 
} 
}
}


在完成上述编码后,仍需在 web.xml 中进行如下配置,以使得该监听器可以起作用。

 

 

<listener><listener-class>ServletContextTest.ServletContextLTest</listener-class></listener>   

 

在完成上述配置后, web 服务器在启动时,会直接加载该监听器,通过以下的应用程序就可以进行数据的访问。

ServletContextListener简介

标签:

原文地址:http://www.cnblogs.com/gjb724332682/p/4668354.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!