当web服务器启动后,它会去解析web.xml,如果我们需要在服务启动以后做一些初始化,那么可以在web.xml中配置ServeltContextListener来达到初始化,因为在Web应用程序的“初始阶段”,Servlet容器会调用ServletContextListener对象的contextInitialized()方法
public class MyWebContextListener implements ServletContextListener{
// @Override
public void contextDestroyed(ServletContextEvent event) {
}
// @Override
public void contextInitialized(ServletContextEvent event) {
SpringConfig.init(event.getServletContext());
DataManage.getInstance();
}
}
然后将这个WebContextListener配到web.xml中即可
<listener>
<listener-class>com.MyWebContextListener</listener-class>
</listener>
在初始化阶段,web容器(如tomcat)将会调用这个 contextInitialized方法,这时如果我们需要Spring的ApplicationContext对象时,就可以在init方法中实现:
public class SpringConfig {
private static ApplicationContext springContext;
public static void init(ServletContext servletContext) {
springContext=WebApplicationContextUtils.getWebApplicationContext(servletContext);
}
public static ApplicationContext getSpringContext(){
return springContext;
}
}
这样我们就可以通过单例模式得到的ApplicationContext对象springContext来随意地取得所需要的service bean了:
public class DataManage {
private static DataManage instance;
private TaskTypeService taskTypeSV=(TaskTypeService) SpringConfig.getSpringContext()
.getBean("taskTypeService");
private StageService stageSV=(StageService) SpringConfig.getSpringContext()
.getBean("stageService");
private ProjectService projectSV=(ProjectService) SpringConfig.getSpringContext()
.getBean("projectService");
// private ProjectTypeService projectTypeSV;
private UserService userSV=(UserService) SpringConfig.getSpringContext()
.getBean("userService");
private CategoryService categorySV=(CategoryService) SpringConfig.getSpringContext()
.getBean("categoryService");
web程序的初始化问题——ServletContextListener----调试成功
应用ServletContextListener接口,可以实现在web应用程序初始化时,自动运行一些初始化程序。
ServletContextListener接口定义的方法
方法名称 |
调用时机 |
Void contextInitialized(ServletContextEvent sce) |
在Web应用程序的“初始阶段”,Servlet容器会调用ServletContextListener对象的contextInitialized()方法 |
Void contextDestroyed(ServletContextEvent sce) |
在Web应用程序的“结束阶段”,Servlet容器会调用ServletContextListener对象的contextDestoryed()方法 |
应用此接口时,要在web.xml文件内定义“监听器类”的名称,此时要注意:
在Servlet规范中并未限制一个Web应用程序只能对应一个“监听器类”,但是在web.xml内定义<listener>元素时得注意下列两点:
<listener>元素必须出现在任何Context起始参数(由<context-param>元素所定义)之后。
<listener>元素必须出现在任何Servlet实体(由<servlet>元素所定义)之前。
举例:
web.xml:
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee web-app_2_4.xsd"
version="2.4">
<description>
test servlet listener
</description>
<display-name>testServletListener</display-name>
<listener>
<listener-class>com.chuyang.Test
</listener-class>
</listener>
</web-app>
Test.java:
package com.chuyang;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
public void contextInitialized(ServletContextEvent event) {
System.out.println("servlet initialized.........");
}
public void contextDestroyed(ServletContextEvent event) {
System.out.println("servlet destroyed..........");
}
}
相关推荐
在Java Web开发中,`ServletContextListener`是一个非常重要的接口,它是Servlet API的一部分,定义了两个方法:`contextInitialized`和`contextDestroyed`。这个接口的主要作用是监听Servlet上下文(`...
这些监听器允许开发者在Web应用程序的整个生命周期中执行特定的操作,如初始化和销毁。监听器可以监听到如上下文初始化(contextInitialized)和上下文销毁(contextDestroyed)等事件。工作流程如下: 1. Web应用...
案例-使用监听器完成定时生日祝福、,...a、初始化的工作:初始化对象 初始化数据 ---- 加载数据库驱动 连接池的初始 化 b、加载一些初始化的配置文件 --- spring的配置文件 c、任务调度----定时器----Timer/TimerTask
Java Web程序设计是开发互联网应用程序的关键技术,涵盖了诸如Servlet、JSP、JSTL、EL、Filter、Listener等核心概念。本教程源码10-15章的提供,为学习者提供了深入实践的宝贵资源,确保每一个示例都能运行,帮助...
Java Web程序设计是开发互联网应用程序的关键技术,涵盖了诸如Servlet、JSP、JSTL、过滤器、监听器、MVC模式、JDBC数据库连接、会话管理等多个核心概念。本教程源码3-9章提供了从基础到进阶的实例,帮助初学者深入...
综合以上内容,可以理解为:Web系统与技术实验十的核心在于学习和实践Java Servlet技术,特别是与Web应用环境相关的高级特性,比如监听器的使用、会话管理、Web应用的初始化和销毁过程等。通过这些实验,学习者能够...
- `<listener>`:定义监听器类,可以监听Web应用程序的特定事件,如`ServletContextListener`用于初始化和销毁上下文。 - `<session-config>`:配置会话的相关属性,如超时时间。 - `<mime-mapping>`:定义文件...
本文主要围绕"Spring源码学习七:web应用自动装配Spring配置文件1"这一主题,详细解析Web环境中Spring的初始化过程。 首先,我们注意到在传统的Java应用程序中,通常使用`ClassPathXmlApplicationContext`手动创建...
在Spring MVC框架中,应用程序启动时会执行一系列初始化操作,这些操作对于理解Spring MVC的工作原理至关重要。本篇文章将深入探讨Spring MVC启动时初始化的几个常用方法,并解释它们在实际开发中的作用。 首先,...
- ServletContextListener:这个接口包含两个方法,用于监听ServletContext对象的初始化和销毁: - contextInitialized(ServletContextEvent): 应用程序启动,Servlet上下文被创建时调用。 - contextDestroyed...
- 监听器可以监听Web应用程序中的特定事件,如会话创建、销毁,上下文初始化、销毁等。常见的监听器有`ServletContextListener`,`HttpSessionListener`等,可通过`@WebListener`注解配置。 5. **部署描述符(web....
web.xml文件,全称是Web应用部署描述符,是Servlet容器用来理解并初始化Web应用程序的关键配置文件。在该文件中,开发者可以定义Servlet、Filter、Listener、Session超时、错误页面、欢迎页面、MIME类型映射以及许多...
- **初始化**: 通过 `init()` 方法完成初始化。 - **服务**: 通过 `service()` 方法处理 HTTP 请求。 - **销毁**: 通过 `destroy()` 方法释放资源。 - **实现步骤**: - 创建 Servlet 类,继承 `HttpServlet` 类...
3. **上下文监听器**:`ServletContextListener`,当Web应用程序启动和停止时触发,用于初始化和清理工作。 4. **生命周期监听器**:如`ContainerListener`,可以监听到Servlet容器内部组件的生命周期变化。 三、...
首先,`ServletContextListener`是Java Servlet API中的一个接口,它允许我们监听Web应用程序的初始化和销毁事件。当Web应用启动时,服务器会自动调用实现了`ServletContextListener`接口类的`contextInitialized`...
9. **生命周期管理**:Servlet 3.0允许自定义Servlet、Filter和Listener的初始化和销毁逻辑,通过实现`ServletContextListener`接口中的相应方法。 `servlet.LICENSE.txt`文件通常包含了关于Servlet API 3.0的许可...
在Web应用启动时,容器(如Tomcat)会自动解析`web-config.xml`,并根据配置创建Servlet、过滤器和监听器实例,进行初始化和注册。这样,当请求到来时,容器能够根据配置执行相应的处理逻辑。 总结来说,解析`web-...
2. **监听器用途**:主要用于监控应用程序的状态,如跟踪用户会话、初始化和关闭应用上下文、管理缓存等。在GUI编程(如Java Swing、Android)中,监听器用于响应用户的交互事件。 3. **监听器术语**: - **事件源...
在Java中,ServletContextListener接口用于监听Web应用程序的初始化和销毁事件。正确实现监听器的类需要实现`contextInitialized(ServletContextEvent)`方法,而不是`contextCreated(ServletContext)`,因为`context...