Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring静态资源映射:控制器与addResourceHandler_Java_Spring_Spring Mvc - Fatal编程技术网

Java Spring静态资源映射:控制器与addResourceHandler

Java Spring静态资源映射:控制器与addResourceHandler,java,spring,spring-mvc,Java,Spring,Spring Mvc,我试图将一组特定的资源(音频)映射到控制器。但是resources/**映射到所有资源。如何隔离特定的资源请求,使其不经过Spring静态资源映射,而是到我的控制器?将音频资源移动到资源以外的其他文件夹是唯一的解决方案吗 例如: 文件夹结构: /resources/js /resources/css /resources/audio 使用Spring Web配置的资源映射: @Override public void addResourceHandlers(final ResourceHand

我试图将一组特定的资源(音频)映射到控制器。但是resources/**映射到所有资源。如何隔离特定的资源请求,使其不经过Spring静态资源映射,而是到我的控制器?将音频资源移动到资源以外的其他文件夹是唯一的解决方案吗

例如:

文件夹结构:

/resources/js
/resources/css
/resources/audio
使用Spring Web配置的资源映射:

@Override
public void addResourceHandlers(final ResourceHandlerRegistry registry)
{
   registry.addResourceHandler("/resources/**")
            .addResourceLocations("/resources/")
...
}
资源控制员:

public class ResourceController {

@RequestMapping(value = "/resources/audio",  
    method = RequestMethod.GET,
produces = MediaType.APPLICATION_OCTET_STREAM_VALUE)
@ResponseBody
public Resource getAudio(...) {
    }
   ....
}

正在将音频资源移动到其他文件夹,而不是 资源是唯一的解决方案吗


那有什么问题?看起来很完美:对我来说既传统又直观。如果它不是静态的,就不要使它成为静态的。

据我所知,没有办法在ant路径中指定排除。我认为基于ant路径匹配的许多实用程序都为此提供了包含和排除路径


但无论如何,从未来的发展角度来看,拥有由控制器提供的
/resources
数据将是危险的,正如Nimchinpsky所说。

在发布这篇文章之前,我的印象是控制器和资源处理程序之间会有冲突,因为它们都有相同的请求映射资源/。测试后,我发现没有冲突。但一般来说,这里的原则是什么,应该将它移到资源处理程序映射之外,因为它是由控制器处理的。