在不使用上下文的情况下访问 Webapp 文件夹中的文件

Posted

技术标签:

【中文标题】在不使用上下文的情况下访问 Webapp 文件夹中的文件【英文标题】:Access File in Webapp Folder Without Using Context 【发布时间】:2020-01-18 19:41:39 【问题描述】:

我正在尝试访问我的 Maven 项目中的 .jsp 文件。该文件夹的文件路径如下:

projectMainFolder ▸ ⁨src⁩ ▸ ⁨main⁩ ▸ ⁨webapp⁩ ▸ ⁨px⁩ ▸ ⁨basefolder⁩ 
▸ ⁨domain ▸ ⁨subdomain ▸ ⁨oco ▸ file.jsp

我尝试访问的文件位于以下文件路径中:

⁨projectMainFolder ▸ ⁨src⁩ ▸ ⁨main⁩ ▸ ⁨java⁩ ▸ ⁨com⁩ ▸ ⁨websiteName 
▸ ⁨sameNameAsProjectMainFolder ▸ ⁨helper⁩ ▸ file.java

我尝试过使用getServletContext(/src/.../oco/file.jsp).getResourceAsStream() 和其他使用servlet 上下文的方法,但它们总是以null 结束。我使用了错误的父目录吗?我尝试从 src、webapp、main 和 px 开始。 (当然,省略号并不是我实际传入的内容,而只是所有中间文件夹的占位符。)

现在,我只想像这样存储文件:

File resource = new File(/src/.../oco/file.jsp); 

但是资源总是空的。

编辑:

如果我为项目提供文件的确切路径(从 /Users/ 目录开始),它可以工作,但我当然打算将其部署为 webapp,所以这不是一个选项,但它至少证明了唯一的问题是我如何设置文件路径。

【问题讨论】:

你的目录全搞砸了。在您的项目中,根目录位于 webapp 中。将您的 jsp 文件放在 webapp 文件夹中。然后你可以这样做:File resource = new File(file.jsp); - 在移动文件和修改 web.xml 之后,你可能需要重新启动和清理项目+服务器 【参考方案1】:

webapp目录是公共资源的根目录,尝试访问⁨/px⁩/⁨basefolder⁩/domain/subdomain/oco/file.jsp

【讨论】:

以上是关于在不使用上下文的情况下访问 Webapp 文件夹中的文件的主要内容,如果未能解决你的问题,请参考以下文章

将 webapp 从 Eclipse 部署到 Tomcat 根上下文

有没有办法在不使用画布 API 的情况下从图像文件中获取二进制数据?

在不知道对象键的情况下访问对象值

如何在不调用渲染函数的情况下访问 Context 的值? [复制]

如何在不包含上下文根名称的情况下使用相对路径?

在不更改 url 的情况下访问脚本