Springboot 集成jsp 以及多模块下jsp页面找不到问题解决
概述:
Springboot集成jsp主要有以下几个步骤:
1、在pom.xml中添加依赖
2、新建web路径
3、配置application.properties支持jps
Springboot集成JSP步骤详细:
1、引入依赖:
主要引入以下几个依赖项:
<!--jsp支持-->
<!-- servlet 依赖. -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
</dependency>
<!-- tomcat 的支持.-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</dependency>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
</dependency>
2、新建webapp/WEB-INF目录:
在src/main下新建目录 webapp/WEB-INF/jsp,目录结构如下图:
3、配置application.properties:
# 页面默认前缀目录
spring.mvc.view.prefix=/WEB-INF/jsp/
# 响应页面默认后缀
spring.mvc.view.suffix=.jsp
4、编写测试Controller:
@Controller
public class StudentController {
@RequestMapping("ee")
public String tt(Map<String, Object> map){
map.put("name", "SpringBoot");
map.put("date", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
return "stu";
}
@RequestMapping("jtest")
public String mm(Model mode){
mode.addAttribute("name", "This is a Test");
mode.addAttribute("date", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
return "stu";
}
}
注意:使用@Controller注解 而不是@RestController,另外 以上两个接口都可以使用
理论上按上面步骤,一个简单的web工程就可以使用jsp了,但是如果项目工程是使用多模块方式,则需要另外的配置。
多模块项目中使用JSP:
比如有下面一个多模块工程,需要在其中一个模块中使用jsp:
解决方法1:
在edit configuration中配置模块的工作路径,具体如下:
解决方法2:
@Configuration
public class GlobalConfig {
@Bean
public WebServerFactoryCustomizer<TomcatServletWebServerFactory> customizer() {
return (factory) -> {
factory.addContextCustomizers((context) -> {
//模块中webapp相对路径
String relativePath = "tt-web/src/main/webapp";
File docBaseFile = new File(relativePath);
// 路径是否存在
if (docBaseFile.exists()) {
context.setDocBase(docBaseFile.getAbsolutePath());
}
}
);
};
}
}