目前我的项目中有以下需求:
功能组件中有些初始数据,没有必要再数据库中单独建个表来存储,因为这个功能组件会在多个系统中应用到,所使用的数据表在各个业务系统中都有一套,这样这个初始数据表就有些冗余,所以就改变了存储的策略,将这些初始数据放到xml中,在系统启动加载web.xml时,就加载该监听,解析xml取出数据,存放到内存当中,使用时,从内容中调用就可以了。
web.xml中配置如下
<listener>
<listener-class>cpcns.gongyongzujian.wenjianchuanshu.parsexml.ReadXml</listener-class>
</listener>
实现原理:
自定义的监听类要实现”ServletContextListener“
重写一下初始化和销毁方法
public void contextDestroyed(ServletContextEvent event) {
}
public void contextInitialized(ServletContextEvent event) {
}
业务的实现在contextInitialized()中实现
获取一些对象的方法:
final ServletContext servletContext =event.getServletContext();//通过event获得servlet上下文的对象
InputStream in = servletContext.getResourceAsStream(path);//通过servletContext获得文件流
path = /WEB-INF/classes/xmldata/BoFangFangShi.xml//path的值的写法,应该是已编译的class下的文件路径,否则找不到