加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – Tomcat使用DefaultServlet获取外部目录中的静态内容

发布时间:2020-12-15 02:09:23 所属栏目:Java 来源:网络整理
导读:我有一个简单的Web应用程序,允许用户上传和访问文件.当用户访问上载文件时,服务器需要支持所有标头类型,例如Accept-Ranges,以便可以对大型媒体文件进行部分内容响应. DefaultServlet(在Tomcat中)处理doGet()调用的 serveResource()方法中的所有内容,因此我想
我有一个简单的Web应用程序,允许用户上传和访问文件.当用户访问上载文件时,服务器需要支持所有标头类型,例如Accept-Ranges,以便可以对大型媒体文件进行部分内容响应. DefaultServlet(在Tomcat中)处理doGet()调用的 serveResource()方法中的所有内容,因此我想将DefaultServlet用于上传的文件.这在正常情况下很容易,因为它是DEFAULT servlet,但不幸的是,在我的情况下,我无法找到使用默认servlet的方法.

为了防止在重新部署webapp时删除上传的文件,我需要将它们存储在webapp目录之外.
这些文件只能由上传它们的用户访问,因此我创建了一个javax.servlet.Filter来处理资源访问授权.我知道如果我在server.xml中为外部资源目录添加一个新的上下文,它们将是可访问的,并且将使用DefaultServlet.

<Context docBase="/path/to/resources" path="/resource" />

但我不想这样做因为那时我需要有条不紊地修改不推荐使用的server.xml(for reasons),并且当/ resource路径存在上下文时,我不会调用该url-mapping的过滤器.因此,我不认为创建新的上下文是一个很好的解决方案.

我能想到的唯一其他解决方案是为扩展DefaultServlet的’/ resource / *’的所有请求创建一个servlet,并以某种方式覆盖将在其实际外部位置获取所请求文件而不是在其上返回404的功能. webapp中不存在的资源.
但是,我还没有找到一种简单的方法将DefaultServlet转换为可以获取webapp目录外部文件的方法.也许有办法?

我该怎么办呢?

解决方法

不是答案

In order to prevent the uploaded files from being deleted when the
webapp is redeployed

这意味着你正在重新部署你的东西错误(以非常糟糕的方式),可能使用war文件,或者更坏(最差)的tomcat管理器.

I know that if I add a new context in server.xml for the external
resource directory,they will be accessible,and the DefaultServlet
will be used.

你是对的,但你错了另一个背景,没有必要.

解决方案:

亲爱的Michael-O指出了最简单,也许是最好的答案.

你也可以实现像DefaultServlet这样的东西,有时候(不适合你的情况)最好从zer0实现一些东西,而不是配置和维护太多复杂的东西.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读