如何在Java

时间:2016-10-22 22:07:02

标签: java spring spring-mvc

我正在编写基于Spring MVC的Web应用程序(使用 war 文件进行部署)并尝试获取

的值

String rootDir = request.getSession().getServletContext().getRealPath("/");

我期待得到

"C:\user\projects\MyApp"

但实际值是

"C:\user\projects\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\MyApp\"

我尝试在Eclipse中更改源文件夹输出位置,但之后我的所有jsp文件,web.xml和文件夹\ WEB-INF都消失了。我该如何恢复它们?

我之所以这么说是因为我希望将上传的图片保存在&#34; MyApp \ webapp \ WEB-INF \ resources \ images \&#34; 文件夹中。< / p>

1 个答案:

答案 0 :(得分:0)

为什么您希望路径为"C:\user\projects\MyApp"

您正在使用Eclipse运行您的应用程序,Eclipse正在将其部署到C:\user\projects\.metadata\.plugins\org.eclipse.wst.server.core,而不是从项目源文件夹运行它,这就是您从getRealPath()调用获得"C:\user\projects\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\MyApp\"的原因。

来自ServletContext#getRealPath()

  

获取与给定虚拟路径对应的真实路径。对于   例如,如果path等于/index.html,则此方法将返回   请求的服务器文件系统上的绝对文件路径   形式为http://://index.html   映射,其中对应于此的上下文路径   ServletContext中。

     

返回的真实路径将采用适合计算机的形式   以及运行servlet容器的操作系统,   包括正确的路径分隔符。

     

JAR文件的/ META-INF / resources目录中的资源   必须考虑捆绑在应用程序的/ WEB-INF / lib目录中   仅当容器已从其包含的JAR中解压缩它们时   文件,在这种情况下,解压缩位置的路径必须是   返回。

     

如果servlet容器无法返回null,则此方法返回null   将给定的虚拟路径转换为真实路径。