使用start.spring.io中的spring项目存根,在没有xml-conf的情况下提供jsp视图的最快方法

时间:2016-05-19 13:41:11

标签: java spring jsp spring-mvc spring-boot

我在较长时间后再次使用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'

中得到一个WARN

我错过了什么?我可以不使用任何xml配置吗?

这是我的主要应用程序类代码:

更新

@SpringBootApplication
public class ExperimentManagementPlatformApplication {

        public static void main(String[] args) {
            SpringApplication.run(ExperimentManagementPlatformApplication.class, args);
    }
}

4 个答案:

答案 0 :(得分:0)

尝试添加视图控制器:

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

Reference

答案 1 :(得分:0)

在我看来,您的控制器没有被检测到,我建议检查您的文件结构,是de.tuberlin.sense.emp包中的StaticPagesController控制器吗? (如:中所述)

@Configuration
@EnableWebMvc
@ComponentScan(basePackages = "de.tuberlin.sense.emp")
public class WebConfiguration

答案 2 :(得分:0)

只需将html文件添加到 static 目录,我就可以在不需要任何控制器的情况下提供静态页面。此外,我发现当应用程序部署为jar时,不包括整个 webapp 目录,这解释了无法找到其中文件的原因。

The Spring documentation

答案 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;
        }
    }