我得到这样的例外:
javax.servlet.ServletException: Could not resolve view with name 'htmlviews/index.html' in servlet with name 'dispatcher'
org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1211)
org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1011)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:955)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:877)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:961)
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:852)
javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:837)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
当我尝试连接到完全 java 配置的 spring web 服务时。
我的配置类:
@Configuration
@EnableWebMvc
@ComponentScan({"config", "controller"})
public class MyWebConfig extends WebMvcConfigurerAdapter {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/htmlviews/**").addResourceLocations("/htmlviews/");
}
}
初始化器:
public class WebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
protected Class<?>[] getRootConfigClasses() {
return new Class<?>[]{MyWebConfig.class};
}
protected Class<?>[] getServletConfigClasses() {
return null;
}
protected String[] getServletMappings() {
return new String[]{"/"};
}
}
和控制器:
@Controller
public class IndexController {
@RequestMapping(value = "/")
public String getIndexPage() {
return "htmlviews/index.html";
}
@RequestMapping(value = "/{[path:[^\\.]*}")
public String index() {
return "forward:/";
}
}
整个文件结构很简单:
我正在使用 Idea IDE(也在 eclipse 中尝试过,同样的异常)并尝试在 tomcat 上部署。在pom.xml
中,我添加了“jstl”依赖项,但这无助于解决问题。使用xml
配置一切正常。我不知道我的 spring java 配置有什么问题,它超级简单,也许我忘记了什么?
修复了
当我将 spring 版本从 更改为 时,一切都开始工作4.1.0.RELEASE
了4.2.3.RELEASE
。我不知道为什么它不能与4.1.0.RELEASE
. 也许有人可以解释一下,只是好奇。