我知道这个问题有很多答案,但我无法解决我的问题,所以我决定提出这个问题 我想解决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
答案 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