我正在使用eclipse和tomcat进行开发。用户似乎只能WebContent
访问文件夹中的文件。
现在我需要在servlet中动态创建一个文件,但是我怎样才能得到WebContent
文件夹的真实路径呢?
我试过getServletContext().getRealPath("")
了,但它返回的是eclipse的工作区路径,而不是我的项目的路径,它是这样的D:\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\
,
而我想要这样的东西D:\git\Monitor\WebContent
有人知道解决方案吗?~非常感谢
问问题
24 次
2 回答
0
你不能这样做。Web 应用程序(WAR 文件)可以在未解压缩的情况下部署,即作为压缩存档文件。
一般的解决方法是编写一个 servlet,即让最终用户下载生成的文件。这样,您几乎可以将文件放置在服务器 FS 上的任何位置...
于 2017-06-20T02:20:37.960 回答
0
我在老师的帮助下找到了解决方案,不过以另一种方式。由于我无法获取 的真实路径WebContent
,我可以修改server.xml
以使前端可读的本地路径。此配置文件位于Servers
文件夹中。底部server.xml
是这样的。
<Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true">
<Context docBase="Monitor" path="/Monitor" reloadable="true" source="org.eclipse.jst.jee.server:Monitor"/>
</Host>
我添加了一个Context
节点,然后是这样的
<Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true">
<Context docBase="Monitor" path="/Monitor" reloadable="true" source="org.eclipse.jst.jee.server:Monitor"/>
<Context docBase="D:\environment\apache-tomcat-9.0.0.M21-dev\user\logs" path="/Monitor/logs" reloadable="true" debug="" crossContext="true"></Context>
</Host>
这样,我可以在servlet中写入文件,并在前端D:\environment\apache-tomcat-9.0.0.M21-dev\user\logs
使用url获取文件~localhost:8080/Monitor/logs/fileName
于 2017-06-20T09:47:26.190 回答