我现在在做WebService,由于项目大体的框架都是用ssh,现在由于开发需要,我需要从java类里面调用一下WEB-INF下的一个文件,这个Java类就是一个普通的类,而且没有任何request或response传入。我使用.class.getResource("/")只能获得到"/WEB-INF/classes",但是我的文件在"/WEB-INF/xxx"下面,请问我该如何获取?

解决方案 »

  1.   

    你都得到了WEB-INF的路径,你再解析一下得到的字符串不就可以了呀
      

  2.   

    回1L:
    你的方法也不行,取到的跟我的一样file:/C:/Program%20Files/Tomcat5.5/webapps/MyDiary/WEB-INF/classes/路径是这样的,不好解析吧最好能直接获得到WEB-INF的路径
      

  3.   

    你这个问题可以从两个方面做.
    1. 如果你的项目不是Web应用.那么就必须解析你上述得到的地址.
     
     //ClassBean.class.getResource("/")获得到"/WEB-INF/classes"
     String path = ClassBean.class.getResource("/");
     path = path.subString(0,path.lastIndexOf("\/"));
     //利用你的path+你的XXX文件名2.如果你的项目是web项目.那就好办了.配置个Listener.把目录加载好.一般项目我想都会用到.就是一些项目中常用的常量值
     
     //先定义一个PdkListener extends HttpServlet implements ServletContextListener
     //如下所示
    package com.pdk.util;import javax.servlet.*;
    import javax.servlet.http.*;public class PdkListener extends HttpServlet implements ServletContextListener {
    private static final long serialVersionUID = 7000079562654260715L; //Notification that the web module is ready to process requests
        public void contextInitialized(ServletContextEvent sce) {
            try {
                String realpath = sce.getServletContext().getRealPath("WEB-INF");
    CommonData.setWEBPATH(realpath);
                 } catch (Exception ex) {
                ex.printStackTrace();
            }
            //throw new java.lang.UnsupportedOperationException(
            //        "Method contextInitialized() not yet implemented.");
        }    //Notification that the servlet context is about to be shut down
        public void contextDestroyed(ServletContextEvent sce) {
            //throw new java.lang.UnsupportedOperationException("Listener Shut Down");
        }
    }
    //上述只需配置到web.xml 的 Listener中.,如果作者是有经验的人,我想一看就明白了
    //然后上述的CommonData 就是一个普通的bean 用来存放web项目运行后的常量值.
    //over 祝你好运
     
      

  4.   

    补充一点.如果你按上述编码.当项目加载后.会自动生成CommonData数据.你只要在需要用到的地方调用
    CommonData.getWEBPATH();就可以得到你要的WEB-INF下面的地址了.那么加上你的文件夹或是文件名.,就可以了.
      

  5.   

    先谢谢4L的兄弟不过我不明白在web.xml中如何配置这个Listener能告诉一下吗
      

  6.   

    启动时加载是OK了,但读取为什么有问题呢,楼主怎么解决的,路径还是有问题吗
    SAXReader reader = new SAXReader();
            File file = new File(CommonData.getWebroot() + "/application/applicationContext_sysConfig.xml");
            
            try
            {
                Document doc = reader.read(file);
                Element root = doc.getRootElement();
            }
            catch (DocumentException e)
            {
                e.printStackTrace();
            }org.dom4j.DocumentException: Connection timed out: connect Nested exception: Connection timed out: connect