【问题标题】:Spring mvc redirection pattern with parameters带参数的 Spring mvc 重定向模式
【发布时间】:2014-11-28 10:18:54
【问题描述】:

我正在尝试将资源处理程序添加到我的 Spring Boot 应用程序 (1.1.8.RELEASE) 中,它必须能够转换此示例。

//From: {HOST_PREFIX_1}/u/{1}/{2}/myimage.jpg
//To:   {CDN_PREFIX_2}/u/{1}/{2}/images/myimage.jpg

我不知道spring是否能够处理这种模式或者我必须创建一个自定义的resourceHandler。

@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) 
{
   registry.addResourceHandler("/u/{var1}/{var2}/{var3:.*}")
            .addResourceLocations("/u/{var1/{var2}/images/{var3:.*}")
            .addResourceLocations(cdnPrefix);

    super.addResourceHandlers(registry);
}

Spring 没有检测到任何类型的模式错误,但重定向不起作用。

有什么帮助吗?

谢谢!

【问题讨论】:

  • 我终于成功地将请求发送到一个控制器,该控制器产生了重定向逻辑,但如果有人有更优雅的解决方案,那就太好了。
  • “主机前缀”和“cdn 前缀”是什么意思;是像 example.org 和 mycdn.com 这样的实际域吗?
  • 是的,我就是这个意思

标签: java spring spring-mvc spring-boot spring-4


【解决方案1】:

ResourceHandler 旨在提供来自应用程序的资源,而不是发送 HTTP 重定向。

如果您想根据模式发送重定向,那么有几种解决方案:

使用自定义控制器逻辑

这就是你最终要做的;如果您还需要其他功能(例如身份验证等),这很有用。

使用过滤器

URLRewriterFilter

最好在模板中写下这些链接

使用 HTTP 重定向有什么特殊原因吗?这对您的 HTTP 客户端来说是一个巨大的性能问题,并且以某种方式抵消了 CDN 提供的性能提升。

根据您使用的模板引擎,您可以在模板级别执行此操作。

【讨论】:

  • 我们的应用程序是一个简单的缩略图器,被一堆不推荐使用的旧系统使用,因此第三种方法不符合我们的要求。感谢您提供完整的答案。
  • 那是有道理的!
猜你喜欢
  • 2013-10-30
  • 1970-01-01
  • 2013-12-28
  • 2011-09-28
  • 2018-09-11
  • 2016-05-15
  • 2011-04-30
  • 1970-01-01
  • 2014-06-20
相关资源
最近更新 更多