Listener 与 < context-param >
- Listener使用步骤
- Listener功能
- 初始化全局资源(读取配置文件)
- ServletContext读取配置参数
- context-param
一:Listener使用步骤
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;
@WebListener
public class MyServletContextListenerImpl implements ServletContextListener {
@Override
public void contextInitialized(ServletContextEvent sce) {
}
@Override
public void contextDestroyed(ServletContextEvent sce) {
}
}
二:Listener初始化全局资源
相关文章:
IO
MyServletContextListenerImpl.java
import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
@WebListener
public class MyServletContextListenerImpl implements ServletContextListener {
@Override
public void contextInitialized(ServletContextEvent sce) {
// 初始化全局资源
// 1. 获取配置文件中context-param参数
ServletContext servletContext = sce.getServletContext();
String configuration = servletContext.getInitParameter("configuration");
String configurationRealPath = servletContext.getRealPath(configuration);
System.out.println(configurationRealPath);
// 2. 获得输出流
FileInputStream fileInputStream = null;
try {
fileInputStream = new FileInputStream(configurationRealPath);
// 3. 将配置文件流添加到servletContext域中
// 4. 或者解析该全局配置文件后将有用信息存储在ServletContext域中
servletContext.setAttribute("configurationInputStream",fileInputStream);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
@Override
public void contextDestroyed(ServletContextEvent sce) {
FileInputStream configurationInputStream = (FileInputStream) sce.
getServletContext().getAttribute("configurationInputStream");
if(configurationInputStream!=null){
try {
configurationInputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
三:ServletContext读取配置参数
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<context-param>
<param-name>configuration</param-name>
<param-value>/WEB-INF/classes/configuration.xml</param-value>
</context-param>
</web-app>