SpringBoot(十五) JSP 页面支持

springboot内部对jsp的支持并不是特别理想,而springboot推荐的视图是Thymeleaf,对于java开发人员来说还是大多数人员喜欢使用jsp,接下来我们来讲解下springboot是如何支持jsp的。

SpringBoot默认不支持JSP,如果想在项目中使用,需要进行相关初始化工作。

构建项目

我们使用IntelliJ IDEA 工具来构建项目,首先我们需要创建一个springboot项目



可以看到项目中多出来了一个类文件,ServletInitlalizer,打开该类我们不难发现它继承了SpringBootServletInitializer这个父类,而SpringBootServletInitializer这个类是springboot提供的web程序初始化的入口,当我们使用外部容器(外部tomcat)运行项目时会自动加载并且装配。

实现了SpringBootServletInitializer的子类需要重写一个configure方法,方法内自动根据LessontwoApplication.class的类型创建一个SpringApplicationBuilder交付给springboot框架来完成初始化运行配置。

添加依赖

添加如下依赖:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<!--springboot tomcat jsp支持-->
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
</dependency>
<!--servlet容器支持-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
</dependency>
<!--jstl支持-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
</dependency>

注意:使用外置Tomcat部署的时候,需要将嵌入式容器调整为provided级别。(防止冲突)

配置视图

沿用eclipse的风格创建文件夹

目标文件夹:src/main/webapp/WEB-INF/jsp/

  1. 在main目录下创建webapp文件夹
  2. 在webapp下创建WEB-INF文件夹
  3. 在WEB-INF下创建jsp文件夹

修改application.yml

让springmvc支持视图的跳转目录指向为/webapp/WEB-INF/jsp

1
2
3
4
5
spring:
mvc:
view:
prefix: /WEB-INF/jsp/
suffix: .jsp

创建index.jsp

我们在webapp/WEB-INF/jsp目录下创建一个index.jsp用于测试我们的配置是否已经支持了jsp

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>jsp page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
</head>
<body>
This is index jsp page.
</body>
</html>

创建IndexController

1
2
3
4
5
6
7
8
9
10
11
12
/**
* @author Ray
* @date 2018/7/30 0030
*/
@Controller
public class IndexController {

@RequestMapping(value = "/index")
public String index(){
return "index";
}
}

测试程序

启动项目并访问地址: http://localhost:8080/index

完整项目结构

-------------- 本文结束  感谢您的阅读 --------------