`
iluoxuan
  • 浏览: 571210 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

freemarker的使用

 
阅读更多

1:freemarker eclipse插件安装方法:http://freemarker.org/editors.html,注意eclipse版本

 

2: 基本使用

   

<dependencies>
		<dependency>
			<groupId>org.freemarker</groupId>
			<artifactId>freemarker</artifactId>
			<version>2.3.9</version>
		</dependency>
		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>servlet-api</artifactId>
			<version>2.5</version>
		</dependency>
</dependencies>

 就依赖一个包;在resources下放一个test.ftl文件

 

3: 简单的java封装

   BaseServlet:

public class BaseServlet extends HttpServlet {

    private static final long serialVersionUID=1L;

    protected FreemarkUtil freemarkUtil;

    @Override
    public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
        HttpServletResponse response=(HttpServletResponse)res;
        freemarkUtil=FreemarkUtil.getInstance(response);
        super.service(req, res);
    }
}

 

FreemarkUtil.java:

   

public class FreemarkUtil {

    private static FreemarkUtil instance;

    private Configuration cfg;

    private HttpServletResponse response;

    private FreemarkUtil(HttpServletResponse response) {
        try {
            cfg=new Configuration();
            String dir=Test.class.getResource("/").getPath();
            System.out.println(dir);
            cfg.setDirectoryForTemplateLoading(new File(dir));
            cfg.setObjectWrapper(new DefaultObjectWrapper());
            this.response=response;
        } catch(Exception e) {
            e.printStackTrace();
        }
    }

    public static FreemarkUtil getInstance(HttpServletResponse response) {
        if(instance == null) {
            instance=new FreemarkUtil(response);
        }
        return instance;
    }

    public void process(Map<String, ?> data, String name) throws Exception {
        Template template=cfg.getTemplate(getName(name));
        Writer out=response.getWriter();
        template.process(data, out);
        out.flush();
    }

    private String getName(String name) {
        if(name == null) {
            return null;
        }
        if(name.indexOf(".ftl") > -1) {
            return name;
        } else {
            return name + ".ftl";
        }
    }
}

 

TestServlet.java:

    

package com.freemark.test;

import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class TestServlet
 */
public class TestServlet extends BaseServlet {

    private static final long serialVersionUID=1L;

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String uri=request.getRequestURI();
        if(uri.indexOf("test/") > -1) {
            System.out.println("--test -- here------");
            Map<String, Object> model=new HashMap<String, Object>();
            model.put("test", "welcome to use freemark ljq");
            try {
                freemarkUtil.process(model, "test");
            } catch(Exception e) {
                e.printStackTrace();
            }
        } else {
            System.out.println("error uri = " + uri);
        }
    }

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    }

}

 

 web.xml:

    

	<servlet>
		<servlet-name>test</servlet-name>
		<servlet-class>com.freemark.test.TestServlet</servlet-class>
	</servlet>
	<servlet-mapping>
		<servlet-name>test</servlet-name>
		<url-pattern>/test/*</url-pattern>
	</servlet-mapping>

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics