4. 监听器Listener类的编写及其实施监听的配置(基于xml配置方式与@WebListener注解配)。
时间: 2024-12-15 08:23:06 浏览: 10
在Java Web开发中,监听器(Listener)主要用于接收特定类型的事件并在其发生时执行相应的操作。有两种常见的监听器实现方式:XML配置和注解方式。
**1. XML配置方式**
- **创建Listener类:** 首先创建一个实现了特定接口(如`ServletRequestListener`,用于处理HTTP请求的开始和结束)的Java类:
```java
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
public class MyListener implements ServletContextListener {
@Override
public void contextInitialized(ServletContextEvent sce) {
System.out.println("Context initialized");
}
@Override
public void contextDestroyed(ServletContextEvent sce) {
System.out.println("Context destroyed");
}
}
```
- **配置监听器:** 在web.xml中添加 `<listener>` 标签,指明监听器类和监听的事件类型:
```xml
<listener>
<listener-class>com.example.MyListener</listener-class>
</listener>
```
这表示MyListener将在web应用上下文初始化和销毁时触发相应的方法。
**2. @WebListener注解方式**
- **添加注解:** 如果使用Spring框架,可以直接在类上添加`@WebListener`注解,同时指定需要监听的事件类型:
```java
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import org.springframework.web.context.ContextLoaderListener;
@WebListener
public class MySpringListener extends ContextLoaderListener {
@Override
protected void contextInitialized(ServletContextEvent sce) {
super.contextInitialized(sce);
System.out.println("Context initialized (Spring)");
}
@Override
protected void contextDestroyed(ServletContextEvent sce) {
super.contextDestroyed(sce);
System.out.println("Context destroyed (Spring)");
}
}
```
Spring会自动注册这样的监听器。
**相关问题--:**
1. Java EE有哪些内置的监听器接口?
2. 如何在Spring Boot中使用@WebListener?
3. 监听器类的生命周期是什么时候?
阅读全文