利用@SpringBootApplication找不到web目录下的jsp页面,但是用tomcat可以
时间: 2024-09-13 16:13:16 浏览: 48
解决SpringBoot启动过后不能访问jsp页面的问题(超详细)
在Spring Boot应用程序中,默认情况下,它通过内置的Actuator模块提供了一个轻量级的HTTP服务器,而不是传统的Tomcat服务器。这意味着,如果你试图在`src/main/webapp`目录下寻找JSP页面,它们并不会被自动扫描和处理,尤其是当你使用`@SpringBootApplication`注解启动项目时。
当你在命令行中直接运行`gradle bootRun`(或者`mvn spring-boot:run`)启动Spring Boot应用,它会使用内建的Reactive Web服务器(如果应用是异步的),或者是Servlet-free模式(如果应用是同步的),这可能导致无法找到和渲染JSP页面。
要让Spring Boot支持JSP,你需要手动配置Tomcat嵌入式服务器,步骤如下:
1. 添加依赖:在你的pom.xml或build.gradle中加入`spring-boot-starter-tomcat`或`spring-boot-devtools`(后者包含了Tomcat插件)。
2. 配置:在`application.properties`或`application.yml`中,指定Tomcat的相关属性,比如端口和静态资源路径,还有JSP的前缀和后缀:
```properties
server.port=8080
server.tomcat.embedded.path=/webapps/myapp
spring.mvc.view.prefix=/WEB-INF/views/
spring.mvc.view.suffix=.jsp
```
3. 如果你想让DevTools支持热部署,记得加上`spring.devtools.web.server.tomcat.basedir`配置。
4. 使用`WebMvcConfigurer`自定义视图解析器,就像之前提到的那样。
注意,虽然可以做到这一点,但还是建议尽量使用Spring Boot推荐的方式来处理HTML模板,比如Thymeleaf或FreeMarker,因为它们有更好的整合性和管理。
阅读全文