Spring Boot – 放置jsp文件的位置

我正在尝试使用MVC开发一个新的Spring启动应用程序,作为将现有的Spring MVC应用程序移动到Spring启动的第一步。

但是,我遇到了jsp文件映射的问题。

无法解析名为’dispatcherServlet’的servlet中名为’hello’的视图

我已经准备好了很多答案,但似乎没有解决我的问题 – 我不打算使用任何模板引擎,因为我会考虑很多jsps – 一旦设置了spring boot,可能是一个计划。

我有一个项目结构如下:

MyFirstApp --src/main/java --uk.co.company --MainApplication.java --ServletInitializer.java --uk.co.company.web --HelloController.java --src/main/resources --static --templates --application.properties --src --main --webapp --WEB-INF --jsp --hello.jsp --pom.xml 

放置以下代码:

MyFirstAppApplication.java

  @SpringBootApplication(exclude = { DataSourceAutoConfiguration.class, HibernateJpaAutoConfiguration.class }) @EnableWebMvc public class MyFirstAppApplication extends SpringBootServletInitializer { public static void main(String[] args) { SpringApplication.run(MyFirstAppApplication.class, args); } } 

ServletInitializer.java

  public class ServletInitializer extends SpringBootServletInitializer { @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { return application.sources(MyFirstAppApplication.class); } } 

HelloController.java

 @Controller public class HelloController { @RequestMapping("/hello") public String sayHello() { return "hello"; } } 

为hello.jsp

      Hello   hellooo   

的pom.xml

   4.0.0 uk.co.company MyFirstApp 1.0.0 war MyFirstApp Demo project for Spring Boot  org.springframework.boot spring-boot-starter-parent 1.5.3.RELEASE     UTF-8 UTF-8 1.8    org.springframework.boot spring-boot-starter-web   com.microsoft.sqlserver mssql-jdbc runtime   org.springframework.boot spring-boot-starter-tomcat provided   org.apache.tomcat.embed tomcat-embed-jasper provided   org.springframework.boot spring-boot-starter-test test   

application.properties

 spring.mvc.view.prefix=/WEB-INF/jsp/ spring.mvc.view.suffix:.jsp 

我创建了一个渲染jsp的演示项目

Git URL: https : //github.com/rksharma1401/spring-boot-war

拿出checkout然后mvn包java -jar target \ simple-web-app-tomcat-0.0.1-SNAPSHOT.war URL: http:// localhost:8081 / w

问题在于jar spring-boot-starter-parent 。 出于某种原因,这不适用于版本1.5.3 RELEASE 。 它一直工作到版本1.5.2 RELEASE

我更新了pom.xml的父标记,如下所示:

  org.springframework.boot spring-boot-starter-parent 1.5.2.RELEASE    

为什么有两个单独的java类(MyFirstAppApplication,ServletInitializer)扩展SpringBootServletInitializer类?

删除ServletInitializer.java并将configure方法从ServletInitializer移动到MyFirstAppApplication。

我面临同样的问题,我通过以下更改删除此问题:

 @SpringBootApplication public class MyFirstAppApplication extends SpringBootServletInitializer { public static void main(String[] args) { SpringApplication.run(MyFirstAppApplication.class, args); } } protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { return application.sources(MyFirstAppApplication.class); } 

无需使ServletInitializer新类。