由于springboot内置的tomcat不支持jsp,所以需要引入外部Tomcat的支持。
在创建springboot整合jsp的项目时,需要注意项目类型一定为war类型,否则会找不到页面。因为JSP需要webapp的支持。二freemarker是在springboot内部已经支持了。
一、新建war类型的maven项目
二、pom文件中导入依赖:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.0.RELEASE</version>
</parent>
<dependencies>
<!-- springboot web核心组件 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- 引入springboot对Tomcat的支持 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</dependency>
<!-- springboot 外部tomcat支持,项目中如果使用jsp,就必须在这里添加此依赖 -->
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
</dependency>
</dependencies>
三、在src/main/resources下面新建application.properties文件并添加配置(springboot默认读取 名字为application.properties的文件里面的配置信息):
key是不可以自己乱写的,因为springboot定义好了这些Key,底层就是通过识别这些key去工作的。
注意我们在创建WEB-INF/jsp文件路径的时候不要建在resources文件下面,因为resources是springboot在读取jar包的时候读取配置文件用的,没有对jsp进行支持,反而会有jsp问价被别人访问到的风险。所以我们在src/main/webapp下面创建WEB-INF/jsp文件夹。
四、编写Controller代码:
/**
* <p>Title: JspController</p>
* <p>Description:JSP整合springboot </p>
* @author wyh
* @date Dec 1, 2018
*/
@Controller//使用Jsp想实现页面跳转,不需要返回json,所以此处仍使用@Controller,而不使用@RestController
public class JspController {
@RequestMapping("jspIndex")
public String jspIndex() {
return "jspSpringboot";//在application.properties中已经定义了视图路径的前缀和后缀,所以此处只需要根据完整路径及前缀和后缀来定义返回文件名
}
}
五、编写启动程序
扫描二维码关注公众号,回复:
4319175 查看本文章
@SpringBootApplication
public class JspApp {
public static void main(String[] args) {
SpringApplication.run(JspApp.class, args);
}
}
启动项目,访问成功: