我在较长时间后再次使用spring,并且很高兴看到在每种情况下都不再需要xml配置。
我想构建一个RESTful应用程序,但我仍然需要提供前端应用程序。我认为最简单的方法是不使用像thymeleaf那样的其他模板引擎来提供静态的jsp。
我使用start.spring.io中的项目模板只使用spring-mvc作为依赖项,因此我也使用了spring boot。
我为了传递jsp而编写了一个控制器,但似乎必须首先配置视图的映射。
@Controller
public class StaticPagesController {
@RequestMapping(value = "/")
public String index(){
return "index";
}
}
所以我创建了一个配置类:
@Configuration
@EnableWebMvc
@ComponentScan(basePackages = "de.tuberlin.sense.emp")
public class WebConfiguration {
@Bean
public ViewResolver viewResolver() {
InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
viewResolver.setViewClass(JstlView.class);
viewResolver.setPrefix("/WEB-INF/views/");
viewResolver.setSuffix(".html");
return viewResolver;
}
}
index.html
位于main / webapp / WEB-INF / views /
当我向/发送请求时,我在日志No mapping found for HTTP request with URI [/WEB-INF/views/index.html] in DispatcherServlet with name 'dispatcherServlet'
我错过了什么?我可以不使用任何xml配置吗?
这是我的主要应用程序类代码:
更新
@SpringBootApplication
public class ExperimentManagementPlatformApplication {
public static void main(String[] args) {
SpringApplication.run(ExperimentManagementPlatformApplication.class, args);
}
}
答案 0 :(得分:0)
尝试添加视图控制器:
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/").setViewName("index");
}
答案 1 :(得分:0)
在我看来,您的控制器没有被检测到,我建议检查您的文件结构,是de.tuberlin.sense.emp包中的StaticPagesController控制器吗? (如:中所述)
@Configuration
@EnableWebMvc
@ComponentScan(basePackages = "de.tuberlin.sense.emp")
public class WebConfiguration
答案 2 :(得分:0)
只需将html文件添加到 static 目录,我就可以在不需要任何控制器的情况下提供静态页面。此外,我发现当应用程序部署为jar时,不包括整个 webapp 目录,这解释了无法找到其中文件的原因。
答案 3 :(得分:-1)
您的配置类应该扩展WebMvcConfigurerAdapter类
@Configuration
@EnableWebMvc
@ComponentScan(basePackages = "de.tuberlin.sense.emp")
public class WebConfiguration extends WebMvcConfigurerAdapter{
@Bean
public ViewResolver viewResolver() {
InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
viewResolver.setViewClass(JstlView.class);
viewResolver.setPrefix("/WEB-INF/views/");
viewResolver.setSuffix(".html");
return viewResolver;
}
}