ServletContextListener全局配置加载
写法:
@WebListener
public class contextListener implements ServletContextListener {
@Override
public void contextInitialized(ServletContextEvent servletContextEvent) {
}
@Override
public void contextDestroyed(ServletContextEvent servletContextEvent) {
}
}
实例————配置加载————(通过ServletContextListener将web.xml 中的配置信息加载到 ServletContext中 便于servlet 通过req.getServletContext().getAttribute(“xxx”)方法访问)
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>url</param-name>
<param-value>http://www.yspan.work</param-value>
</context-param>
<context-param>
<param-name>topic</param-name>
<param-value>javaweb监听器练习项目</param-value>
</context-param>
</web-app>
contextListener:
@WebListener
public class contextListener implements ServletContextListener {
@Override
public void contextInitialized(ServletContextEvent servletContextEvent) {
System.out.println(" contextListener contextInitialized");
ServletContext servletContext= servletContextEvent.getServletContext();
String url=servletContext.getInitParameter("url");
String topic=servletContext.getInitParameter("topic");
Config config=new Config();
config.setTopic(topic);
config.setUrl(url);
servletContext.setAttribute("config",config);
}
@Override
public void contextDestroyed(ServletContextEvent servletContextEvent) {
System.out.println(" contextListener contextDestroyed");
}
}
Cpnfig
public class Config {
private String url;
private String topic;
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public String getTopic() {
return topic;
}
public void setTopic(String topic) {
this.topic = topic;
}
}
testServlet:
@WebServlet("/testServlet")
public class testServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
Config config= (Config) req.getServletContext().getAttribute("config");
System.out.println(config.getTopic());
}
}
截图
未访问/testServlet
访问后
总结
-
什么是监听器:
监听器是一个实现了特定接口的普通Java类,用于监听其他对象的创建和销毁,监听其他对象的方法执行和属性改变; avaweb里面的监听器:
-
作用:监听域对象的创建和销毁,比如request/session/context
-
分类:
ServletContextLitener HttpSessionListener ServletRequestListener
-
监听器的实现步骤:
(1)创建一个普通的Java类 (2)让该类实现监听器的接口 (3)在该类中实现监听器接口的所有方法
(4)旧版的在web.xml文件中通过标签来配置监听器,新版使用 @WebListener