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
新类。