一、背景
springboot 支持 JSP(.jsp)、thymeleaf(.html)和 freemarker(.ftl)这三种前端界面展示形式。这篇文章简单讲述下 springboot 如何集成 jsp。
二、集成步骤
2.1 注意
如果想要 springBoot 支持 jsp 的话,需要将 jsp 的文件放到指定的目录下,毕竟约定大于配置嘛,因为新建的 maven 工程是没有 webapp 目录的,这里我们需要自己手动的去创建 webapp 目录来存放 jsp 界面。
2.2 添加 maven 依赖
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<scope>priveded</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
</dependency>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<scope>priveded</scope>
</dependency>
2.3 配置 application.properties
由于前端解析器返回界面的格式是 prefix+"controller 中返回页面的名称"+ suffix 构成,所以这块需要指定 jsp 文件的所在位置和后缀。
#指定jsp文件所在的路径
spring.mvc.view.prefix=/page/
#指定jsp文件的后缀
spring.mvc.view.suffix=.jsp
工程的目录结构如下:
2.3 创建 listUser.jsp 文件
<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<table align='center' border='1' cellspacing='0'>
<tr>
<td>id</td>
<td>name</td>
<td>age</td>
</tr>
<c:forEach items="${users}" var="s" varStatus="st">
<tr>
<td>${s.id}</td>
<td>${s.userName}</td>
<td>${s.age}</td>
</tr>
</c:forEach>
</table>
</body>
</html>
2.4 实现服务端代码
//model类
public class User {
private String id;
private String userName;
private String age;
// set get
}
//Controller类
@Controller
public class UserController {
@RequestMapping("/listUserIndex")
public String listUser(Model model) {
List<User> listUser = new ArrayList<>();
User user = null;
for(int i=0; i<10; i++) {
user = new User();
user.setId((i + 1) + "" );
user.setUserName("张三" + i);
user.setAge((20 + i) + "");
listUser.add(user);
}
model.addAttribute("users", listUser);
return "listUser";
}
}
@SpringBootApplication
public class App {
public static void main( String[] args ){
//将springboot应用驱动起来
SpringApplication.run(App.class, args);
}
}
在界面请求 http://localhost:8080/listUserIndex 即可