freemarker的简单使用案例

互联网网站一般首页的访问量大,为提高首页的访问效率,首页的内容都可以实现静态化,在互联网项目中页面常用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>
原文地址:https://www.cnblogs.com/jincheng81/p/9104480.html