gpt4 book ai didi

filter - 从与服务相同的目录提供静态内容 - Dropwizard

转载 作者:行者123 更新时间:2023-12-01 01:04:16 25 4
gpt4 key购买 nike

我正在构建一个 Dropwizard 应用程序来替换旧版网络服务器,由于有很多链接指向该服务器,我必须向后兼容并支持旧版服务器曾经提供的各种资源。

问题是我有一堆静态 JS 文件从与服务本身相同的目录/路径提供服务。显然,您不能从单个目录提供两种类型(服务和静态)。因此,如果我添加静态包(现在位于资源目​​录中),如下所示:

bootstrap.addBundle(new AssetsBundle("/javascript", "/media")); 

动态服务(从/media/提供)开始返回 404
如果我评论它,动态服务工作正常。

正如我所说,我无法更改任何链接,静态或动态...
有什么建议?

更新:

已解决,这是一个受@airborn 回答启发的工作示例,此 question这也指向我 this module ,它声称可以通用地解决这个问题。

此示例将过滤器应用于所有传入请求,并允许您重定向到您想要的任何位置(类似于 apache 上的 .htaccess 功能)。

将以下行放在您的主要 dropwizard 类的运行函数中(扩展 ** Service<AppConfiguration> **
environment.addFilter(new UrlRewriteFilter(),"/*");

把这个类放在上面类可以访问的地方
@WebFilter
public class UrlRewriteFilter implements Filter {

@Override
public void init(FilterConfig config) throws ServletException {
//
}

@Override
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws ServletException, IOException {
HttpServletRequest request = (HttpServletRequest) req;
String requestURI = request.getRequestURI();
// Place Redirection logic here (else continues the filter chain).
if (redirectConditionTrue)
String newURI = ""//New URl to do to;
req.getRequestDispatcher(newURI).forward(req, res);
} else {
chain.doFilter(req, res);
}
}

@Override
public void destroy() {
//
}
}

最佳答案

使用 Environment在您的 Service类,您应该能够向 Jetty 添加过滤器。在此代理过滤器中,您应该能够检测到这些 js 文件并将它们重定向到新位置。

关于filter - 从与服务相同的目录提供静态内容 - Dropwizard,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20076495/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com