JAVA Freemarker(1)--入门示例

ぐ巨炮叔叔 提交于 2019-12-03 18:59:15

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

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

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

package com.cloud.wyscha.servlet;

import freemarker.template.Configuration;
import freemarker.template.Template;
import freemarker.template.TemplateException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.HashMap;
import java.util.Map;

/**
 * freemarker测试
 *
 * @author charlin
 * @create 2017-09-27 10:07
 **/
public class HelloFreeMarkerServlet extends HttpServlet{
    // 负责管理FreeMarker模板的Configuration实例
    private Configuration cfg = null;
    @Override
    public void init() throws ServletException {
        super.init();
        cfg = Configuration.getDefaultConfiguration();
        cfg.setServletContextForTemplateLoading(getServletContext(), "/WEB-INF/templates");
    }

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        super.doGet(req, resp);
        doPost(req, resp);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        super.doPost(req, resp);
        try {
            // 建立数据模型
            Map root = new HashMap();
            root.put("message", "hello world");
            root.put("name", "java小强");
            // 获取模板文件
            Template template = cfg.getTemplate("test.ftl");
            // 使用模板文件的Charset作为本页面的charset
            // 使用text/html MIME-type
            resp.setContentType("text/html;charset=" + template.getEncoding());
            PrintWriter writer = resp.getWriter();
            // 往模板里写数据
            template.process(root, writer);
        } catch (TemplateException e) {
            e.printStackTrace();
        }
    }
}

3、注意要在你的web.xml中配置该Servlet:
Xml代码

<?xml version="1.0" encoding="UTF-8"?>  
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"  
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee   
    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">  
    <!-- freemarker测试 -->
    <servlet>
        <servlet-name>hello</servlet-name>
        <servlet-class>
            com.cloud.wyscha.servlet.HelloFreeMarkerServlet
        </servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>hello</servlet-name>
        <url-pattern>/hello</url-pattern>
    </servlet-mapping>
    <welcome-file-list>  
        <welcome-file>index.jsp</welcome-file>  
    </welcome-file-list>  
</web-app>  

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

<%@ 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>  

5、部署工程到Tomcat
启动并访问http://localhost:8080/freemarker ,这里我建立的工程名称就是 freemarker 。

—————————————————————————————————————————————————–

java架构师项目实战,高并发集群分布式,大数据高可用视频教程,共760G

下载地址:

https://item.taobao.com/item.htm?id=555888526201

01.高级架构师四十二个阶段高
02.Java高级系统培训架构课程148课时
03.Java高级互联网架构师课程
04.Java互联网架构Netty、Nio、Mina等-视频教程
05.Java高级架构设计2016整理-视频教程
06.架构师基础、高级片
07.Java架构师必修linux运维系列课程
08.Java高级系统培训架构课程116课时
+
hadoop系列教程,java设计模式与数据结构, Spring Cloud微服务, SpringBoot入门

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!