Spring:在上下文根之外提供静态资源

时间:2011-03-28 08:54:46

标签: spring resources static

在Web应用程序中,我需要提供位于应用程序上下文目录之外的静态内容(图像)。整个应用程序架构要求我使用Tomcat来执行此操作。我想我可以从Spring的<mvc:resources>中受益,以配置应用程序URL和目录内容之间的映射。但是AFAIK它的mapping属性只处理上下文相关或类路径映射。因此,我想用什么:

<mvc:resources location="/images/**" mapping="/absolute/path/to/image/dir"/>

不起作用。因为我宁愿避免编写一个简单的文件传输servlet,如果有人能给我一些关于现有Spring解决方案/解决方法的建议,我会很高兴。

非常感谢。

荷马

2 个答案:

答案 0 :(得分:34)

<mvc:resources>可以从外部提供资源,您需要使用通常的Spring resource path syntax

<mvc:resources mapping="/images/**" location="file:/absolute/path/to/image/dir/"/> 

答案 1 :(得分:2)

还有一个简单的修正

代码应该是

<mvc:resources mapping="/images/**" location="file:/absolute/path/to/image/dir/"/>

你注意到了区别吗? 你需要把&#39; /&#39;在绝对路径的尽头。

或者您可以使用java配置

@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
    String rootPath = System.getProperty("user.home");
    String imagePath = "file:"+rootPath + File.separator + "tmpFiles/";
    System.out.println(imagePath);
    registry.addResourceHandler("/resources/**").addResourceLocations("resources/");
    registry.addResourceHandler("/tmpFiles/**").addResourceLocations(imagePath);
}

它为我工作。