深入Spring Boot (十二):集成JSP

169 阅读3分钟
原文链接: mp.weixin.qq.com

之前在编写《深入Spring Boot (八):模板引擎使用详解》的时候有考虑过介绍如何集成JSP,但是在细看官方的文档及考虑实际使用情况后,将这个想法取消了,因为在使用嵌入式servlet容器时,会有一些已知的限制,所以Spring Boot不建议使用JSP,而且现在也很少用JSP作前端页面显示使用了。最近有朋友集成JSP时遇到了一些意想不到的问题,这里简单分享一下JSP的集成。

代码实践

话不多说,直接上代码。依赖管理pom.xml,需要添加servlet和嵌入式tomcat运行jsp需要的jar,详细依赖配置如下:

  1. <?xml version="1.0" encoding="UTF-8"?>

  2. <project xmlns="http://maven.apache.org/POM/4.0.0"

  3.         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

  4.         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

  5.    <modelVersion>4.0.0</modelVersion>

  6.    <groupId>springboot-jsp</groupId>

  7.    <artifactId>test</artifactId>

  8.    <version>1.0-SNAPSHOT</version>

  9.    <parent>

  10.        <groupId>org.springframework.boot</groupId>

  11.        <artifactId>spring-boot-starter-parent</artifactId>

  12.        <version>2.0.0.RELEASE</version>

  13.    </parent>

  14.    <dependencies>

  15.        <dependency>

  16.            <groupId>org.springframework.boot</groupId>

  17.            <artifactId>spring-boot-starter-web</artifactId>

  18.        </dependency>

  19.        <dependency>

  20.            <groupId>org.springframework.boot</groupId>

  21.            <artifactId>spring-boot-starter-tomcat</artifactId>

  22.        </dependency>

  23.        <dependency>

  24.            <groupId>org.apache.tomcat.embed</groupId>

  25.            <artifactId>tomcat-embed-jasper</artifactId>

  26.        </dependency>

  27.        <dependency>

  28.            <groupId>org.springframework.boot</groupId>

  29.            <artifactId>spring-boot-starter-test</artifactId>

  30.            <scope>test</scope>

  31.        </dependency>

  32.        <dependency>

  33.            <groupId>javax.servlet</groupId>

  34.            <artifactId>javax.servlet-api</artifactId>

  35.        </dependency>

  36.        <dependency>

  37.            <groupId>javax.servlet</groupId>

  38.            <artifactId>jstl</artifactId>

  39.        </dependency>

  40.    </dependencies>

  41. </project>


因为jsp资源的默认存放路径是webapp,所以需要新建webapp目录,示例是将jsp文件放到webapp/WEB-INF/jsp路径下,因此在webapp下新建WEB-INF目录,接着在WEN-INF目录下新建jsp目录,在jsp下新建hello.jsp,完整目录结构及代码如下:

  1.  <!DOCTYPE html>

  2. <%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>

  3. <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

  4. <html lang="en">

  5.    <body>

  6.    <br>

  7.        Message: ${message}

  8.    </body>

  9. </html>


在resources目录下新建application.properties,在其中添加jsp资源配置,具体配置如下:

  1. spring.mvc.view.prefix=/WEB-INF/jsp/

  2. spring.mvc.view.suffix=.jsp


新建HelloController.java,用于处理http请求,具体代码如下:

  1.  @Controller

  2. @EnableAutoConfiguration

  3. public class HelloController {

  4.    @RequestMapping("/hello")

  5.    public String hello(Map<String, Object> map) {

  6.        map.put("message", "HelloWorld");

  7.        return "hello";

  8.    }

  9.    public static void main(String[] args) throws Exception {

  10.        SpringApplication.run(HelloController.class, args);

  11.    }

  12. }


END 

如果觉得有收获,记得关注、点赞、转发。