天天看點

SpringBoot內建jsp

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

引入依賴後,成功顯示出來

說明下 我這裡的IDEA版本是2017.1.4

springboot版本是1.5.4.RELEASE

如果是其他版本的話不知道還會有什麼其他的錯誤