无法解析Spring MVC中的静态资源

时间:2018-06-19 05:07:55

标签: java spring-mvc

我知道这个问题有很多答案,但我无法解决我的问题,所以我决定提出这个问题 我想解决jsp和html文件。下面是我的弹簧解析器配置

@Bean
public ViewResolver getViewResolver() {
    InternalResourceViewResolver resolver = new InternalResourceViewResolver();
    resolver.setPrefix("/WEB-INF/views/");
    resolver.setSuffix("");
    return resolver;
}

@Override
public void addResourceHandlers(final ResourceHandlerRegistry registry) {
    registry.addResourceHandler("/static/**").addResourceLocations("/WEB-INF/views/static");
}

和控制器类如下:

@RequestMapping("/testApi2")
@Controller
public class TestController2 
{
   @RequestMapping("/showHomePage")
    public ModelAndView showHome(){
      return new ModelAndView("/static/about.html");
    }

}

我还附上了我的目录结构的屏幕截图,每次请求都给出了404

enter image description here

2 个答案:

答案 0 :(得分:2)

我认为你应该在你的web解析器配置类中添加一个非常特殊的处理配置器:

@Override
public void configureDefaultServletHandling(

DefaultServletHandlerConfigurer configurer) {
configurer.enable();
}

此方法启用静态资源处理。

答案 1 :(得分:0)

经过一些努力,多亏了Spring上的大量文档,我才得以解决问题

我找到了一个解决方案(在网上搜索),我们可以使用它同时将 JSP和HTML用作视图

忘记问题,以下是新设置

静态资源(.css,.js,.jpg)位于 webapp / assets /

HTML文件位于 / WEB-INF / static /

这是我的配置文件:

@Bean
public ViewResolver getViewResolver() {
    InternalResourceViewResolver resolver = new InternalResourceViewResolver();
    resolver.setPrefix("/WEB-INF/views/");
    resolver.setSuffix("");
    return resolver;
}

@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {

    registry.addResourceHandler("/assets/**") //
            .addResourceLocations("/assets/").setCachePeriod(31556926);

}

@Override
public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
    configurer.enable();
}

请注意,我同时使用了resolver.setSuffix("") HTML和JSP

HTML代码:

<link rel="stylesheet" href="/taxi/assets/css/theme-pink.css" />

出租车是上下文根,表示项目名称

现在,如果我运行以下网址,它将获取js的图片或CSS

localhost:8080/taxi/assets/css/icons.css