1. 程式人生 > >freemarker的簡單使用案例

freemarker的簡單使用案例

ping instance XML attr exception servle ons cache 導入

互聯網網站一般首頁的訪問量大,為提高首頁的訪問效率,首頁的內容都可以實現靜態化,在互聯網項目中頁面常用html。當瀏覽器訪問時,將瀏覽器的緩存策略和生成靜態頁面的周期設為一致,可使訪問效率大大提升,再同時配合CDN處理圖片、js和css等資源,可以在首頁訪問時,理論完全脫離數據庫降低應用壓力。

Freemarker 是目前流行的生成靜態頁面的模板引擎,使用預定義的模板ftl文件生成靜態的html。

這樣這個html既擁有頁面的樣式又擁有後臺數據,以達到靜態化訪問的目的。

原理圖

技術分享圖片

目錄結構

技術分享圖片

導入jar包

技術分享圖片

Servlet中的內容

public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        Map map 
= new HashMap(); map.put("url", "1.html"); map.put("name", "Free Marker Learning Document"); request.setAttribute("user", "Lucas Su"); request.setAttribute("doc", map); request.setAttribute("sex", ""); request.getRequestDispatcher("/ftl/test.ftl").forward(request, response); }

ftl文件

<html>
<head>
  <title>Welcome!</title>
</head>
<body>
  <h1>Welcome ${user?default(‘‘)}!</h1>
  <p>This is your document:</p>
  <a href="${doc.url?default(‘‘)}">${doc.name?default(‘‘)}</a>
  <p>性別:${sex}</p>
</body>
</html>

web.xml中的配置

<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://java.sun.com/xml/ns/javaee" 
    xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
    version="3.0">
  <display-name>FreemarkerTest</display-name>
 <servlet>
        <servlet-name>freemarker</servlet-name>
        <servlet-class>freemarker.ext.servlet.FreemarkerServlet</servlet-class>
        <init-param>
            <param-name>TemplatePath</param-name>
            <param-value>/</param-value>    <!--表示從上下文路徑根目錄尋找模板文件 -->
        </init-param>
        <init-param>
            <param-name>NoCache</param-name>
            <param-value>true</param-value> <!--不使用緩存 -->
        </init-param>
        <init-param>
            <param-name>ContentType</param-name>
            <param-value>text/html;charset=UTF-8</param-value>  <!--響應的數據類型 -->
        </init-param>
        <init-param>
            <param-name>template_update_delay</param-name>
            <param-value>0</param-value>
        </init-param>
        <init-param>
            <param-name>default_encoding</param-name>
            <param-value>UTF-8</param-value>
        </init-param>
        <init-param>
            <param-name>number_format</param-name>
            <param-value>0.########</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>freemarker</servlet-name>
        <url-pattern>*.ftl</url-pattern><!--所有ftl都經過該servlet -->
    </servlet-mapping>

    <servlet>
        <servlet-name>FMServlet</servlet-name>
        <servlet-class>Test1.FMServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>FMServlet</servlet-name>
        <url-pattern>/FMServlet.do</url-pattern>
    </servlet-mapping>
</web-app>

freemarker的簡單使用案例