zoukankan      html  css  js  c++  java
  • 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>
  • 相关阅读:
    SQL 生成可配置流水号
    安卓程序进入后台和前台的判断
    Android代码故事第一回,平均间隔的按钮
    安卓冷知识:LayoutParams
    初识Android NDK
    搬家
    LaTeX表格紧跟文字 (不影响下方文本对齐)
    FlagCounter被封杀?自己实现一个简单的多国访客计数器
    Python+OpenCV竖版古籍文字分割
    Ubuntu18.04 显卡驱动+Cuda安装踩坑记录 以及Ubuntu虚拟内存的添加
  • 原文地址:https://www.cnblogs.com/jincheng81/p/9104480.html
Copyright © 2011-2022 走看看