servlet如何创建用户可以直接访问的文件

时间:2017-06-20 02:12:53

标签: eclipse servlets realpath

我正在使用eclipse和tomcat开发。 似乎只有用户才能访问WebContent文件夹中的文件 现在我需要在servlet中动态创建一个文件,但是如何获得WebContent文件夹的真实路径呢? 我试过了getServletContext().getRealPath(""),但它返回了eclipse工作区的路径,而不是我项目的路径,就像这样D:\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\,我想要这样的东西{{1} }
有谁知道解决方案?〜非常感谢

2 个答案:

答案 0 :(得分:0)

你做不到。可以取消提取Web应用程序(WAR文件),即压缩存档文件。

一般的解决方法是编写一个servlet,让最终用户下载生成的文件。这样,您几乎可以将文件放在服务器FS的任何位置......

答案 1 :(得分: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获取文件〜