web工程中需要对一个保存user信息的XML文件进行增删改查操作。
(一) :刚开始的时候XML文件放在了src下,使用相对路径,若是直接读取,会提示找不到文件路径(因为这时候文件早飘到tomcat下面去了>_
于是就是用classloader读取:
static{
SAXReader reader = new SAXReader();
ClassLoader load = UserService.class.getClassLoader();
InputStream in = load.getResourceAsStream("user.xml");
Document document = reader.read(in);
}但在写入的时候,这个方式就不适用了。。于是乎就想到了用上下文对象来获取绝对路径,同时把XML文件放在了WEB-INF目录下。可在service中没有HttpServletRequest对象,所以就写了个上下文监听器,用于在web容器启动时就可以得到XML文件的绝对路径
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
public class ConfigListener implements ServletContextListener{
//用于存储用户的XML文件位置
public static String xmlPath;
@Override
public void contextDestroyed(ServletContextEvent sce) {
// TODO Auto-generated method stub
}
@Override
public void contextInitialized(ServletContextEvent sce) {
xmlPath = sce.getServletContext().getRealPath("/WEB-INF/user.xml");
}
}写好监听器后,把它配置在web.xml中就OK了。