真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網站制作重慶分公司

SpringBoot2怎么使用FreeMarker模板完成頁面靜態(tài)化處理

這篇文章主要介紹“SpringBoot2怎么使用FreeMarker模板完成頁面靜態(tài)化處理”,在日常操作中,相信很多人在SpringBoot2怎么使用FreeMarker模板完成頁面靜態(tài)化處理問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”SpringBoot2怎么使用FreeMarker模板完成頁面靜態(tài)化處理”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

我們注重客戶提出的每個要求,我們充分考慮每一個細節(jié),我們積極的做好成都網站制作、做網站服務,我們努力開拓更好的視野,通過不懈的努力,創(chuàng)新互聯(lián)公司贏得了業(yè)內的良好聲譽,這一切,也不斷的激勵著我們更好的服務客戶。 主要業(yè)務:網站建設,網站制作,網站設計,成都微信小程序,網站開發(fā),技術開發(fā)實力,DIV+CSS,PHP及ASP,ASP.Net,SQL數據庫的技術開發(fā)工程師。

一、頁面靜態(tài)化

1、動靜態(tài)頁面

靜態(tài)頁面

即靜態(tài)網頁,指已經裝載好內容HTML頁面,無需經過請求服務器數據和編譯過程,直接加載到客戶瀏覽器上顯示出來。通俗的說就是生成獨立的HTML頁面,且不與服務器進行數據交互。

優(yōu)缺點描述:

  • 靜態(tài)網頁的內容穩(wěn)定,頁面加載速度極快;

  • 不與服務器交互,提升安全性;

  • 靜態(tài)網頁的交互性差,數據實時性很低;

  • 維度成本高,生成很多HTML頁面;

動態(tài)頁面

指跟靜態(tài)網頁相對的一種網頁編程技術,頁面的內容需要請求服務器獲取,在不考慮緩存的情況下,服務接口的數據變化,頁面加載的內容也會實時變化,顯示的內容卻是隨著數據庫操作的結果而動態(tài)改變的。

優(yōu)缺點描述:

  • 動態(tài)網頁的實時獲取數據,延遲性低;

  • 依賴數據庫交互,頁面維護成本很低;

  • 與數據庫實時交互,安全控制的成本高;

  • 頁面加載速度十分依賴數據庫和服務的性能;

動態(tài)頁面和靜態(tài)頁面有很強的相對性,對比之下也比較好理解。

2、應用場景

動態(tài)頁面靜態(tài)化處理的應用場景非常多,例如:

  • 大型網站的頭部和底部,靜態(tài)化之后統(tǒng)一加載;

  • 媒體網站,內容經過渲染,直接轉為HTML網頁;

  • 高并發(fā)下,cdn邊緣節(jié)點代理的靜態(tài)網頁;

  • 電商網站中,復雜的產品詳情頁處理;

靜態(tài)化技術的根本:提示服務的響應速度,或者說使響應節(jié)點提前,如一般的流程,頁面(客戶端)請求服務,服務處理,響應數據,頁面裝載,一系列流程走下來不僅復雜,而且耗時,如果基于靜態(tài)化技術處理之后,直接加載靜態(tài)頁面,好了請求結束。

二、流程分析

靜態(tài)頁面轉換是一個相對復雜的過程,其中核心流程如下:

SpringBoot2怎么使用FreeMarker模板完成頁面靜態(tài)化處理

  • 開發(fā)一個頁面模板,即靜態(tài)網頁樣式;

  • 提供接口,給頁面模板獲取數據;

  • 頁面模板中編寫數據接口返參的解析流程;

  • 基于解析引擎,把數據和頁面模板合并;

  • 頁面模板內容加載完成后轉換為HTML靜態(tài)頁面;

  • HTML靜態(tài)頁面上傳到文件服務器;

  • 客戶端(Client)獲取靜態(tài)頁面的url加載顯示;

主流程大致如上,如果數據接口響應參數有變,則需要重新生成靜態(tài)頁,所以在數據的加載實時性上面會低很多。

三、代碼實現(xiàn)案例

1、基礎依賴

FreeMarker是一款模板引擎:即一種基于模板和要改變的數據,并用來生成輸出文本(HTML網頁、電子郵件、配置文件、源代碼等)的通用工具。


    org.springframework.boot
    spring-boot-starter-freemarker

2、頁面模板

這里既使用FreeMarker開發(fā)的模板樣式。



    PageStatic


主題:${myTitle}
<#assign text="{'auth':'cicada','date':'2020-07-16'}" /> <#assign data=text?eval /> 作者:${data.auth} 日期:${data.date}
                  規(guī)格描述         產品詳情                             <#list tableList as info>                                ${info.desc}                                                   
<#list imgList as imgIF>     

FreeMarker的語法和原有的HTML語法基本一致,但是具有一套自己的數據處理標簽,用起來不算復雜。

3、解析過程

通過解析,把頁面模板和數據接口的數據合并到一起即可。

@Service
public class PageServiceImpl implements PageService {
    private static final Logger LOGGER = LoggerFactory.getLogger(PageServiceImpl.class) ;
    private static final String PATH = "/templates/" ;
    @Override
    public void ftlToHtml() throws Exception {
        // 創(chuàng)建配置類
        Configuration configuration = new Configuration(Configuration.getVersion());
        // 設置模板路徑
        String classpath = this.getClass().getResource("/").getPath();
        configuration.setDirectoryForTemplateLoading(new File(classpath + PATH));
        // 加載模板
        Template template = configuration.getTemplate("my-page.ftl");
        // 數據模型
        Map map = new HashMap<>();
        map.put("myTitle", "頁面靜態(tài)化(PageStatic)");
        map.put("tableList",getList()) ;
        map.put("imgList",getImgList()) ;
        // 靜態(tài)化頁面內容
        String content = FreeMarkerTemplateUtils.processTemplateIntoString(template, map);
        LOGGER.info("content:{}",content);
        InputStream inputStream = IOUtils.toInputStream(content,"UTF-8");
        // 輸出文件
        FileOutputStream fileOutputStream = new FileOutputStream(new File("F:/page/newPage.html"));
        IOUtils.copy(inputStream, fileOutputStream);
        // 關閉流
        inputStream.close();
        fileOutputStream.close();
    }
    private List getList (){
        List tableInfoList = new ArrayList<>() ;
        tableInfoList.add(new TableInfo(Constant.desc1, Constant.img01));
        tableInfoList.add(new TableInfo(Constant.desc2,Constant.img02));
        return tableInfoList ;
    }
    private List getImgList (){
        List imgList = new ArrayList<>() ;
        imgList.add(Constant.img02) ;
        imgList.add(Constant.img02) ;
        return imgList ;
    }
}

到此,關于“SpringBoot2怎么使用FreeMarker模板完成頁面靜態(tài)化處理”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續(xù)學習更多相關知識,請繼續(xù)關注創(chuàng)新互聯(lián)網站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>
網頁題目:SpringBoot2怎么使用FreeMarker模板完成頁面靜態(tài)化處理
文章位置:http://weahome.cn/article/pcichh.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部