[Gradle中文教程系列]-跟我學Gradle-8.7.多模組專案之 - spring boot + gradle + 構建公共jsp頁面的多模組專案

PKAQ發表於2016-12-02

多模組專案之 - spring boot + gradle + 構建公共jsp頁面的多模組專案

標題黨!!!!

烹製原理

Servlet 3.1 規範裡 jar包中META-INF/resources/下的檔案會被視為根目錄檔案進行正常訪問 , 這也就意味著我們可以將某些 靜態頁面/圖片/樣式/js 等打到jar包裡當做依賴jar包引用 , 像webjars基本就是這麼搞的.當然 如果你在搞前後端分離、gulp、webpack什麼的這種方式基本也不用考慮了。

Servlet 3.1 中文譯本 張開濤 翻譯版下載 > 點傳送門 <

  • 引用.1

    除了 靜態資源和 WEB-INF/lib 目錄下打包在 JAR 檔案中 META-INF/resources 目錄下的 JSP 檔案之外,WEB-INF 目錄下包含的其他任何檔案都不能由容器直接提供給客戶端訪問。
    serverlet 3.1 規範 - 10.5

  • 引用.2

    1. 新增了從 JAR 檔案中載入靜態資源和 JSP 的支援,其包含在繫結在 WEB-INF/lib 目錄中的 JAR 檔案的 META-INF/resources 目錄中
      變更歷史 A.3

烹製方法

  1. 新增spring boot 依賴,如果不想用變數定義版本號可以直接擼版本號
    compile "org.springframework.boot:spring-boot-starter-web:${bootVersion}",
            "org.apache.tomcat.embed:tomcat-embed-jasper:${tomcat_embed}"
  1. 編寫controller
@Controller
@Slf4j
public class TigerCtrl {
    @RequestMapping("/")
    public ModelAndView tiger(){
        log.info("Soft kitty,warm kitty Little ball of fur .");
        return new ModelAndView("tiger","words","Roar ~ Roar ~ ");
    }
}
  1. 編寫頁面,當然 這裡的關鍵也就是本文的核心技術點就是要把頁面檔案放到正確的位置即src/main/resources/META-INF/resources下,如果你是傳統專案那麼META-INF應該在webroot或者webcontent下,當然這種非標準的目錄結構會引申出另外一個問題那就是需要通過修改專案屬性指定webapp目錄.  
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<img alt="j2ee" src="static/duke.jpg" width="190" height="253"/><br/>
<br/>
<%
    String words = String.valueOf(request.getAttribute("words"));
    out.println("Tiger said : " + words);
%>
</body>
</html>
  1. 新增公共jsp頁面模組依賴
  compile    project(":webpage")

完整程式碼

> 點選這裡看完整程式碼 <

相關文章