java - Spring 调度程序 servlet 中静态资源的路径别名

标签 java spring spring-mvc

我有一个 Spring Web 应用程序,其中调度程序 servlet 仅用于静态文件。还有一个 Jersey servlet,用于从 JavaScript 调用 API,映射到另一个 URL 模式,与我的问题不太相关。

目前我的整个调度程序配置如下所示:

@Configuration
@EnableWebMvc
public class DispatcherConfig extends WebMvcConfigurerAdapter {

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/**").addResourceLocations(
                "classpath:/www/");
    }
}

我的类路径中的 www 下有一个 main.html 文件。如果针对 /main.html 发出请求,则该文件将被正确提供。太棒了。

现在,我希望针对 //part 和许多其他路径上的请求返回相同的文件。基本上,我想要在这里使用某种路径别名,或者从路径到文件的直接映射。我怎样才能实现它?

最佳答案

您可以使用容器的默认 servlet 来提供静态资源:

<servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>*.html</url-pattern>
</servlet-mapping>

从路径到文件的映射可以这样定义:

@Configuration
@EnableWebMvc
public class DispatcherConfig extends WebMvcConfigurerAdapter {
...

    @Override
    public void addViewControllers(ViewControllerRegistry registry) {
        registry.addViewController("/pathToStatic").setViewName("/static.html");
    }
...

}

上面的映射会将 /pathToStatic 的请求转发到静态 View static.html

关于java - Spring 调度程序 servlet 中静态资源的路径别名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19069355/

相关文章:

java - HttpMediaTypeNotAcceptableException : Could not find acceptable representation spring mvc 4. 1.5 与 com.fasterxml 2.5.1

java - 动态注入(inject)属性到spring

java - Tapestry 5 和具有相同接口(interface)的 Spring bean

java - Spring MVC 中的 HibernateTransactionManager 错误

java - 测试方法返回特定对象junit

java - IndexOutofBoundsException:我无法解决它

java - Spring Android Framework - 通过 HTTP GET 检索 JSON 数据

java - Spring Web Socket Java 客户端

java - 将对象设置为 <form :option> in Spring MVC 的值

java - 无法为所有 url 设置 Spring 安全性