servlet如何创建用户可以直接访问的文件
How can servlet create a file that user can visit directly
我正在使用 eclipse 和 tomcat 进行开发。
用户似乎只能访问WebContent
文件夹中的文件。
现在我需要在servlet中动态创建一个文件,但是我怎样才能得到WebContent
文件夹的真实路径?
我试过 getServletContext().getRealPath("")
,但它 returns 是 eclipse 工作区的路径,而不是我项目的路径,它是这样的 D:\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\
,
而我想要类似的东西这个D:\git\Monitor\WebContent
有谁知道解决办法吗?~非常感谢
你不能那样做。 Web 应用程序(WAR 个文件)可以在未提取的情况下部署,即作为压缩存档文件。
一般的解决方法是编写一个servlet,让最终用户下载生成的文件。这样你就可以把你的文件放在你的服务器 FS 上几乎任何地方...
我在老师的帮助下找到了解决方案,不过是另一种方式。
由于我无法获得 WebContent
的真实路径,我可以修改 server.xml
以使本地路径可读 - end.This 配置文件位于 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
,在前端使用urllocalhost:8080/Monitor/logs/fileName
获取文件~
我正在使用 eclipse 和 tomcat 进行开发。
用户似乎只能访问WebContent
文件夹中的文件。
现在我需要在servlet中动态创建一个文件,但是我怎样才能得到WebContent
文件夹的真实路径?
我试过 getServletContext().getRealPath("")
,但它 returns 是 eclipse 工作区的路径,而不是我项目的路径,它是这样的 D:\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\
,
而我想要类似的东西这个D:\git\Monitor\WebContent
有谁知道解决办法吗?~非常感谢
你不能那样做。 Web 应用程序(WAR 个文件)可以在未提取的情况下部署,即作为压缩存档文件。
一般的解决方法是编写一个servlet,让最终用户下载生成的文件。这样你就可以把你的文件放在你的服务器 FS 上几乎任何地方...
我在老师的帮助下找到了解决方案,不过是另一种方式。
由于我无法获得 WebContent
的真实路径,我可以修改 server.xml
以使本地路径可读 - end.This 配置文件位于 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
,在前端使用urllocalhost:8080/Monitor/logs/fileName
获取文件~