0

我正在尝试从 Tomcat Web 应用程序访问 conf 文件(位于 WEB-INF 文件夹中)。目前,我将文件的位置硬编码为String. String但是,当 tomcat/webapps 文件夹与我的硬编码指示的位置不同时,这不起作用。我在网上查看过,似乎使用该getResourceAsStream ()方法是我正在寻找的,但我很难让它发挥作用。当我调用该getServletContext ()方法时,我的应用程序不喜欢它。谁能帮我?

编辑:相关的代码块

BufferedReader myReader = new BufferedReader (new InputStreamReader (getServletContext ().getResourceAsStream ("/WEB-INF/conf.txt")));
4

4 回答 4

2

为了解决这个问题,我在 WEB-INF (path/to/app/WEB-INF/classes/mypackage/) 下创建了两个文件夹,然后将我的文件放在这个文件夹中。然后,我从我的 POJO 调用this.getClass.getResourceAsStream ("<filename>")打开一个流。为了得到一个字符串,它是我所做的文件的完整绝对路径名this.getClass.getResource ("<filename>").toString ().substring (5)

于 2012-08-27T17:15:27.543 回答
1

如果您尝试从 Tomcat 中的 WEB-INF 目录加载文件,请使用以下代码:

例如,对于 WEB-INF/config/config.xml 中的文件

ServletContext context = ....//get servlet context
InputStream is = context.getResourceAsStream("/WEB-INF/config/config.xml");
于 2012-08-22T21:27:49.523 回答
0

以下代码对我有用。我把我的config文件保存在WEB-INF/

web.xml 代码片段:

<servlet>
    <servlet-name>wizardcontroller</servlet-name>
    <servlet-class>com.sg.poc.wizard.controller.CustomerWizardController</servlet-class>
    <init-param>
        <param-name>plm-config</param-name>
        <param-value>plm-config.xml</param-value>
    </init-param>
</servlet>

Servlet 代码片段:

String configfile = config.getInitParameter("plm-config") ;
InputStream is = config.getServletContext().getResourceAsStream("/WEB-INF/"+configfile);
System.out.println("Resource Stream is : "+is);
于 2013-04-15T11:25:17.140 回答
0

如果您的配置文件位于 /WEB-INF/config.xml,您可以使用“../config.xml”而不是完整路径从 servlet 访问它。这是因为编译的应用程序类通常位于 /WEB-INF/classes 中。

于 2012-08-22T22:04:29.770 回答