在web.xml中设置相对于WEB-INF的路径

时间:2010-07-17 03:59:02

标签: path web.xml web-inf

我想在web.xml中设置一个相对于WEB-INF或WEB-INF / classes的路径。

但是,以下代码(repository.home)似乎在我的Windows机器上选择了一个相对于c:root驱动器路径的路径。

    <servlet>
  <servlet-name>ContentRepository</servlet-name>
  <servlet-class>org.apache.jackrabbit.servlet.jackrabbit.JackrabbitRepositoryServlet</servlet-class>
  <load-on-startup>1</load-on-startup>
    <init-param>
      <param-name>repository.home</param-name>
      <param-value>/WEB-INF/classes/testit</param-value>
    </init-param>
</servlet>

<servlet>
  <servlet-name>JackrabbitServlet</servlet-name>
  <servlet-class>com.orsa.seam.JackrabbitServlet</servlet-class>
  <load-on-startup>2</load-on-startup>
</servlet>

1 个答案:

答案 0 :(得分:1)

该参数没问题,即当你读它时,它仍然是一个值为的字符串:

/WEB-INF/classes/testit
web.xml文件中的参数只是一个参数 - 它不是“路径”。

所以问题是你用这个参数做了什么?

由于您尝试访问servlet容器内的资源(文件),因此需要使用特定方法,例如

之类的东西
ServletContext#getRealPath()

获取例如/ WEB-INF / classes / testit,而不是

  • 向您追加您需要的内容(因此拥有该目录中的那些文件的完整路径),或从其他“完整路径”中减去它,从而具有相对路径。例如。如果您有'/testit/test1.txt''/ testit / test2.txt',您只需将它们附加到上面获得的真实路径即可访问这些文件。

  • 或者从其他“完整路径”中减去该路径,从而获得参数的相对路径。例如。如果您有完整路径(c:/tomcat/webapps/myapp/WEB-INF/data/testit/test.txt),那么您只需要减去参数的完整路径,这样您就可以获得相对路径: '/testit/test2.txt'