之前在编写《深入Spring Boot (八):模板引擎使用详解》的时候有考虑过介绍如何集成JSP,但是在细看官方的文档及考虑实际使用情况后,将这个想法取消了,因为在使用嵌入式servlet容器时,会有一些已知的限制,所以Spring Boot不建议使用JSP,而且现在也很少用JSP作前端页面显示使用了。最近有朋友集成JSP时遇到了一些意想不到的问题,这里简单分享一下JSP的集成。
代码实践
话不多说,直接上代码。依赖管理pom.xml,需要添加servlet和嵌入式tomcat运行jsp需要的jar,详细依赖配置如下:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>springboot-jsp</groupId>
<artifactId>test</artifactId>
<version>1.0-SNAPSHOT</version>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.0.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<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>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
</dependency>
</dependencies>
</project>
因为jsp资源的默认存放路径是webapp,所以需要新建webapp目录,示例是将jsp文件放到webapp/WEB-INF/jsp路径下,因此在webapp下新建WEB-INF目录,接着在WEN-INF目录下新建jsp目录,在jsp下新建hello.jsp,完整目录结构及代码如下:
image<!DOCTYPE html>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html lang="en">
<body>
<br>
Message: ${message}
</body>
</html>
在resources目录下新建application.properties,在其中添加jsp资源配置,具体配置如下:
spring.mvc.view.prefix=/WEB-INF/jsp/
spring.mvc.view.suffix=.jsp
新建HelloController.java,用于处理http请求,具体代码如下:
@Controller
@EnableAutoConfiguration
public class HelloController {
@RequestMapping("/hello")
public String hello(Map<String, Object> map) {
map.put("message", "HelloWorld");
return "hello";
}
public static void main(String[] args) throws Exception {
SpringApplication.run(HelloController.class, args);
}
}
END
如果觉得有收获,记得关注、点赞、转发。
image
网友评论