我想在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>
答案 0 :(得分:1)
该参数没问题,即当你读它时,它仍然是一个值为的字符串:
/WEB-INF/classes/testitweb.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'