且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

SpringBoot集成jsp

更新时间:2022-08-12 16:14:33

JSP (貌似Spring Boot官方不推荐,创建的项目会在src/main/resources 下有个templates 目录,这里就是让我们放模版文件的,然后并没有生成诸如 SpringMVC 中的webapp目录)

如果需要使用JSP怎么办呢?
最需注意的如下这个依赖,少了这一个不能使用jsp
(可以不指定版本)

1.在pom.xml中引入tomcat-embed-jasper依赖
<dependency>
    <groupId>org.apache.tomcat.embed</groupId>
    <artifactId>tomcat-embed-jasper</artifactId>
</dependency>
2创建目录webapp/WEB-INF/jsp来存放jsp页面
注意webapp和java是同级目录,都是main下的

创建个jsp页面名叫helloJsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
         pageEncoding="UTF-8" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>我是标题</title>
</head>
<body>
helloJsp
<hr>
${hello}
</body>
</html>
3.application.properties文件中配置jsp访问路径
# 页面默认前缀目录
spring.mvc.view.prefix=/WEB-INF/jsp/
# 响应页面默认后缀
spring.mvc.view.suffix=.jsp
# 自定义属性,可以在Controller中读取
application.hello=Hello World
4.创建测试controller
@Controller
public class HelloController {
    // 从 application.properties 中读取配置,如取不到默认值为Hello
    @Value("${application.hello:Hello}")
    private String hello;


    @RequestMapping("/helloJsp")
    public String helloJsp(Map<String, Object> map) {
        System.out.println("HelloController.helloJsp().helloWrold=" + hello);
        map.put("hello", hello);
        return "helloJsp";
    }
}

对应的访问路径是http://localhost:8080/helloJsp
(端口没改的话)
return "helloJsp"表明返回的是helloJsp.jsp,后缀已经配置好了,前缀是在/WEB-INF/jsp/目录下找

5.启动测试

如果出现说明有可能你的jsp依赖没有引入


Paste_Image.png

引入依赖后,成功显示出来


Paste_Image.png

说明下 我这里的IDEA版本是2017.1.4

springboot版本是1.5.4.RELEASE

如果是其他版本的话不知道还会有什么其他的错误