struts2中使用FreeMarker

通过FreeMarker简介相信大家对于FreeMarker有了大概的认识,下面贴出来我的代码,来让他家对于FreeMarker有更清楚的认识
首先新建web工程,然后添加struts2支持,然后将freemarker.jar复制到WEB-INF/lib中,然后在WEB-INF中新建一个文件夹,命名为template,在里面新建test.ftl,这个就是FreeMarker的模板文件,内容如下

<html>
<head>
<title>freemarker</title>
</head>
<body>
${message}
</body>
</html>

然后是HelloServlet。java

package freemarker;
import java.io.IOException;
import java.io.Writer;
import java.util.HashMap;
import java.util.Map;

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

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

public class HelloServlet extends HttpServlet {
	// 初始化freemarker配置
	// 创建一个configuration实例
	private Configuration cfg;

	public void init() {
		cfg = new Configuration();
		// 设置freemarker模板位置
		cfg.setServletContextForTemplateLoading(getServletContext(),
				"WEB-INF/template");
	}

	// 生成用户响应
	public void service(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		// 创建数据模型
		Map root = new HashMap();
		root.put("message", "hello Freemarker");
		// 取得模板文件
		Template t = cfg.getTemplate("test.ftl");
		// 开始准备生成输入
		// 使用模板文件的charset作为本页面的charset
		// 使用text/html MIME-type
		response.setContentType("text/html;charset = " + t.getEncoding());
		Writer out = response.getWriter();
		try {
			t.process(root, out);
		} catch (TemplateException e) {
			throw new ServletException("处理template模板出现错误", e);
		}
	}
}

然后是在web.xml中配置上面的servlet

<?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_2_5.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>freemarker</display-name>
	<filter>
		<filter-name>struts2</filter-name>
		<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
	</filter>
	<filter-mapping>
		<filter-name>struts2</filter-name>
		<url-pattern>*.action</url-pattern>
	</filter-mapping>

	<servlet>
		<servlet-name>hello</servlet-name>
		<servlet-class>freemarker.HelloServlet</servlet-class>
	</servlet>
	<servlet-mapping>
		<servlet-name>hello</servlet-name>
		<url-pattern>/hello</url-pattern>
	</servlet-mapping>
</web-app>

发表评论

电子邮件地址不会被公开。 必填项已用*标注