ServletContextListener
<context-param>标签,
比如
<context-param>
<param-name>breed</param-name>
<param-value>test</param-value>
</context-param>
应用在容器中启动之后,整个应用任何一个servlet都可以通过getContextConfig获取breed的值。
但是如果我们需要在项目启动的时候获取一个对象呢,而不仅仅是一个字符串呢?
我们可以通过写一个类实现ServletContextListener接口实现这一点。
package javax.servlet;import java.util.EventListener;public abstract interface ServletContextListener extends EventListener
{public abstract void contextInitialized(ServletContextEvent paramServletContextEvent);public abstract void contextDestroyed(ServletContextEvent paramServletContextEvent);
}
在web.xml中配置
<listener>
<listener-class>
servlet.ServletContextListenerTest
</listener-class>
</listener>
ServletContextListenerTest实现一个ServletContextListener的接口
package servlet;import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;public class ServletContextListenerTest implements ServletContextListener {@Overridepublic void contextDestroyed(ServletContextEvent event) {}@Overridepublic void contextInitialized(ServletContextEvent event) {System.out.println("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa");ServletContext sc = event.getServletContext();String dogBreed = sc.getInitParameter("breed");System.out.println("aaaaaaaaaaaaaa"+dogBreed);Dog dog = new Dog(dogBreed);event.getServletContext().setAttribute("dog", dog);}}
上面的代码主要是实现了在应用启动的时候,将一个dog对象塞进ServletContext的attribute属性中,
这样应用的所有servlet就可以通过getAttribute共享这个dog对象了。
Dog类
package servlet;public class Dog {public String breed;public String getBreed() {return breed;}public void setBreed(String breed) {this.breed = breed;}public Dog(String breed) {this.breed=breed;}public void getDogBreed() {System.out.println("the breed of the dog is"+breed);}
}
写一个情景类
package servlet;import java.io.IOException;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet(urlPatterns={"/servletContextListenerTestClient"})
public class ServletContextListenerTestClient extends HttpServlet{private static final long serialVersionUID = -5169172101637034615L;@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {doPost(req, resp);}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {Dog dog = (Dog)this.getServletContext().getAttribute("dog");dog.getDogBreed();}}
转载于:https://my.oschina.net/liangzhenghui/blog/184468
ServletContextListener相关推荐
- 引入 ServletContextListener @Autowired null 解决办法
public class ScheduleController implements ServletContextListener {@Autowiredprivate ScheduleService ...
- java 日志输出 上下文_java – 使用ServletContextListener和SLF4J在contextDestroyed上没有日志输出...
我正在尝试向记录器写一条消息(Vaadin)servlet已停止,这使用SLF4J和Log4j2. 为此,我使用的是ServletContextListener,它在应用程序启动时记录消息.但是在co ...
- ServletContextListener接口用法
ServletContextListener接口用于tomcat启动时自动加载函数,方法如下: 一.需加载的类必须实现ServletContextListener接口. 二.该接口中有两个方法必须实现 ...
- Java ServletContextListener监听器的使用
ServletContextListener监听器的作用 用来监听ServletContext域对象的创建和销毁的监听器. ServletContext创建和销毁 ServletContext 创建: ...
- ServletContextListener 解析用法
ServletContext 被 Servlet 程序用来与 Web 容器通信.例如写日志,转发请求.每一个 Web 应用程序含有一个Context,被Web应用内的各个程序共享.因为Context可 ...
- 解决Tomcat下IntelliJ IDEA报错java.lang.NoClassDefFoundError: javax/servlet/ServletContextListener
解决Tomcat下IntelliJ IDEA报错java.lang.NoClassDefFoundError: javax/servlet/ServletContextListener 笔者在做代 ...
- Java ServletContextListener用法
ServletContext 被 Servlet 程序用来与 Web 容器通信.例如写日志,转发请求.每一个 Web 应用程序含有一个Context,被Web应用内的各个程序共享.因为Context可 ...
- ServletContextListener在Springboot中的使用
ServletContextListener是servlet容器中的一个API接口, 它用来监听ServletContext的生命周期,也就是相当于用来监听Web应用的生命周期.今天我们就来说说如何在 ...
- springboot ServletContextListener接口
常用于用来做一些项目启动时的初始化工作 实现ServletContextListener @WebListener 声明监听器 启动类添加@ServletComponentScan 或者直接用@Con ...
最新文章
- Oracle在线重定义
- [androd] android的在线源码网站,各个版本都有(目前已到俺android 4.2,但不包含kernel部分的代码)
- 还不懂你现在学习的编程语言能做什么?还不懂如何进阶?过来看图
- kafka调试工具kafkacat的使用
- 配置文件默认有项目路劲_SpringBoot 深度调优,让你的项目飞起来!
- 元旦,请查收程序员专属祝福礼!
- Linux学习笔记四:OTG方式为itop4412烧写安卓系统
- 年薪百万是社会认同,更是自身价值体现
- Windows mobile美化之-短信界面美化修改~
- Mysql查询某列最长字符串记录
- mac install torch0.4.1
- php 1==#039;a1#039;,关于新版本1.9.14.6 加固 dex version 为 039 导致9.0以下无法修复的问题及疑惑。...
- MSSQL 2000 不支持top 解决方法
- 在‘句子迷’爬取网友总结的方文山歌词并作词频统计
- Kotlin关键字总结
- ++a与a++、--a与a--
- 建立备份域控服务器,备份域控制器
- IEEE会议latex模板参考文献转为bibitem
- 软件测试常用的linux命令
- 海力士芯片 HY57V561620FTP-H 的内存容量问题