首頁 > 軟體

SpringBoot如何用java生成靜態html

2022-06-29 18:02:35

SpringBoot整合Freemarker

  • 主要特徵:靜態頁面,無介面互動
  • 資料實時性不高且體量小的網站可採用生成靜態html的形式
  • 資料提前渲染至html內,若發生資料更新,則重新渲染資料
  • CDN加速讓網站不再龜速

1. 引入Maven依賴

<dependency>
    <groupId>org.freemarker</groupId>
    <artifactId>freemarker</artifactId>
    <version>2.3.28</version>
</dependency>

2. 建立ftl

<html>
    <head>
        <title>啦啦啦啦啦</title>
    </head>
    <body>
        <h1>俠客行</h1>
        <p>${author!}</P>
        <#if (poem?size)!=0>
            <#list poem as item>
                <p>${item.first!}${item.second!}</p></br>
            </#list>
        </#if>
    </body>
</html>

3. 建立freeMarker工具類

@Slf4j
@Component
public class FreeMarkerUtil {
    private static Configuration config;
    private static String serverPath;

    @Value("${spring.servlet.multipart.location:D:/static/}")
    public void setServerPath(String serverPath) {
        FreeMarkerUtil.serverPath = serverPath;
    }

/**
* 通過freemarker生成靜態HTML頁面
* @param templateName 模版名稱
* @param targetFileName 生成後的檔名
* @param ftlPath模板路徑
* @param htmlPathhtml路徑
* @param mapfreemarker生成的資料都儲存在MAP中,
*/
public static void createHtml(String templateName, String targetFileName, String ftlPath, String htmlPath, Map<String, Object> map) {
    try{    
        //建立fm的設定
        config = new Configuration();
        //指定預設編碼格式
        config.setDefaultEncoding("UTF-8");
        //設定模版檔案的路徑
        config.setDirectoryForTemplateLoading(new File(serverPath+ftlPath));
        //獲得模版包
        Template template = config.getTemplate(templateName);
        //從引數檔案中獲取指定輸出路徑
        String path = serverPath+htmlPath;
        //生成的靜態頁存放路徑如果不存在就建立
        File file = null;
        file=new File(path);
        if (!file.exists()){
            file.mkdirs();
        }
        //定義輸出流,注意必須指定編碼
        Writer writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(new File(path+"/"+targetFileName)), UTF_8));
        //生成模版
        template.process(map, writer);
    }catch (Exception e){
        log.error("生成異常:{}",e);
    }
}

4. 編寫Java的程式碼

構造實體類,通過freemarker將實體類的資訊渲染至html

@GetMapping("test")
public Object test() {
    Map<String,Object> map = new HashMap<>(16);
    List<Poem> list = new ArrayList<>();
    list.add(new Poem("趙客縵胡纓,", "吳鉤霜雪明。"));
    list.add(new Poem("銀鞍照白馬,", "颯沓如流星。"));
    list.add(new Poem("十步殺一人,", "千里不留行。"));
    list.add(new Poem("事了拂衣去,", "深藏身與名。"));
    map.put("author","李白");
    map.put("poem",list);
    FreeMarkerUtil.createHtml("poem.ftl","poem.html","俠客行/","俠客行/",map);
    return BackMessage.ok(map);
}

實體類:

@Data
public class Poem {
    private String first;
    private String second;

    public Poem(String first, String second) {
        this.first = first;
        this.second = second;
    }
}

5. Html輸出

<html>
<head>
    <title>啦啦啦啦啦</title>
</head>
<body>
    <h1>俠客行</h1>
    <p>李白</P>
    <p>趙客縵胡纓,吳鉤霜雪明。</p></br>
    <p>銀鞍照白馬,颯沓如流星。</p></br>
    <p>十步殺一人,千里不留行。</p></br>
    <p>事了拂衣去,深藏身與名。</p></br>
</body>
</html>

到此這篇關於SpringBoot如何用java生成靜態html的文章就介紹到這了,更多相關java生成靜態html內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com