0

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

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

    <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>
4

1 回答 1

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'

于 2010-07-17T08:10:28.937 回答