• Freemarker 入门示例


    初步学习freemarker ,先做一个简单的HelloWord程序!

    新建一个WEB工程,下载(我使用的是freemarker-2.3.20)freemarker并导入freemarker.jar,在WEB-INF下新建文件夹templates用于存放模版文件
    在templates下新建test.ftl,这是示例模版文件。内容就是HTML内容,里面带有一个标记符,用于将来进行变量替换,内容如下:

    <html>
      <head>
            <title>freemarker测试</title>
        </head>
        <body>
            <h1>${message},${name}</h1>
        </body>
    </html>
    

      新建一个Servlet,用于请求设置变量,并处理模版的输出:

     1 package com.test.servlet;
     2 import java.io.IOException;
     3 import java.io.Writer;
     4 import java.util.HashMap;
     5 import java.util.Map;
     6 import javax.servlet.ServletException;
     7 import javax.servlet.http.HttpServlet;
     8 import javax.servlet.http.HttpServletRequest;
     9 import javax.servlet.http.HttpServletResponse;
    10 import freemarker.template.Configuration;
    11 import freemarker.template.Template;
    12 import freemarker.template.TemplateException;
    13 @SuppressWarnings("serial")
    14 public class HelloFreeMarkerServlet extends HttpServlet {
    15     // 负责管理FreeMarker模板的Configuration实例
    16     private Configuration cfg = null;
    17     public void init() throws ServletException {
    18         // 创建一个FreeMarker实例
    19         cfg = new Configuration();
    20         // 指定FreeMarker模板文件的位置
    21         cfg.setServletContextForTemplateLoading(getServletContext(),
    22                 "/WEB-INF/templates");
    23     }
    24     @SuppressWarnings("unchecked")
    25     public void doPost(HttpServletRequest request, HttpServletResponse response)
    26             throws ServletException, IOException {
    27         // 建立数据模型
    28         Map root = new HashMap();
    29         root.put("message", "hello world");
    30         root.put("name", "java小强");
    31         // 获取模板文件
    32         Template t = cfg.getTemplate("test.ftl");
    33         // 使用模板文件的Charset作为本页面的charset
    34         // 使用text/html MIME-type
    35         response.setContentType("text/html; charset=" + t.getEncoding());
    36         Writer out = response.getWriter();
    37         // 合并数据模型和模板,并将结果输出到out中
    38         try {
    39             t.process(root, out); // 往模板里写数据
    40         } catch (TemplateException e) {
    41             e.printStackTrace();
    42         }
    43     }
    44     public void doGet(HttpServletRequest request, HttpServletResponse response)
    45             throws ServletException, IOException {
    46         doPost(request, response);
    47     }
    48     public void destroy() {
    49         super.destroy();
    50     }
    51 }

    注意要在你的web.xml中配置该Servlet:

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
     3     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     4     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
     5     http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
     6     <servlet>
     7         <servlet-name>hello</servlet-name>
     8         <servlet-class>
     9             com.test.servlet.HelloFreeMarkerServlet
    10         </servlet-class>
    11     </servlet>
    12     <servlet-mapping>
    13         <servlet-name>hello</servlet-name>
    14         <url-pattern>/hello</url-pattern>
    15     </servlet-mapping>
    16     <welcome-file-list>
    17         <welcome-file>index.jsp</welcome-file>
    18     </welcome-file-list>
    19 </web-app>

    为了方便测试,访问工程直接跳转到Servlet,对主页index.jsp做一个简单修改:

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()
    +":"+request.getServerPort()+path+"/";
    %>
    <html>
      <body>
        <%
        String mypath = "hello";
        response.sendRedirect(basePath + mypath);
        %>
      </body>
    </html>

    部署工程到Tomcat,启动并访问http://localhost:8080/xx。

  • 相关阅读:
    专职DBA-MySQL主从延时复制
    专职DBA-MySQL主从异步复制
    专职DBA-MySQL连接启动与多实例数据库
    Java日期时间2
    Java日期时间
    763. Partition Labels
    377. Combination Sum IV
    459. Repeated Substring Pattern
    784. Letter Case Permutation
    526. Beautiful Arrangement
  • 原文地址:https://www.cnblogs.com/go-skill/p/5458095.html
Copyright © 2020-2023  润新知