2017-06-20 69 views
0

我正在使用eclipse和tomcat进行开发。 似乎用户只能访问WebContent文件夹中的文件。
现在我需要在servlet中动态创建一个文件,但是我怎样才能获得WebContent文件夹的真实路径?
我试过getServletContext().getRealPath(""),但它返回日食工作区的道路,我的项目不是路径,它是这样的D:\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\
而我想这样的事情D:\git\Monitor\WebContent
任何人都知道该如何解决?〜非常感谢servlet如何创建用户可以直接访问的文件

回答

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获取文件〜

0

你不能那样做。 Web应用程序(WAR文件)可以部署为未提取,即作为压缩存档文件。

一般的解决方法是编写一个servlet,即让最终用户下载生成的文件。通过这种方式,你可以将你的文件放在服务器FS的任何地方...

+0

但是'Webcontent'文件夹中的html文件可以通过像'http:// localhost:8080/Monitor/html/index.html'这样的url访问。 – disinuo

+0

所以我认为关键问题是获取'WebContent'的真实路径,以便servlet可以向其写入文件。 – disinuo

+0

Eclipse的'WebContent'成为WAR存档的根。你不能写信给那里......设置一个配置属性,它包含一个安全可写的路径来存储你的文件。这取决于你的服务器的环境.... –

相关问题