1.JavaProject中使用FreeMarker:
1)创建Java项目,添加jar:

2)在项目根创建模板文件:

文件内容:
Hello ${user} !
Welcome ${person} !
3)执行类:

package cn.cvu.marker;
import freemarker.template.Configuration;
import freemarker.template.Template;
public class ActionFreeMarker{
public static void main(String[] args) throws Exception{
Map<String, String> map = new HashMap<String, String>();
map.put("user", "Pop king "); //对应模板中的 ${user}
map.put("person", "Beautifull lady"); //对应模板中的 ${person}
//1.模型实例
Configuration conf = new Configuration();
conf.setDirectoryForTemplateLoading(new File("templates"));
//2.加载模板
Template template = conf.getTemplate("FreeMarkerTest.ftl");
//3.输出地址(控制台)
template.process(map, new PrintWriter(System.out));
}
}
4)测试:

2.WebProject中使用FreeMarker:
1)web.xml:
<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">
<!-- 增加struts框架的一个服务 -->
<servlet>
<servlet-name>JspSupportServlet</servlet-name>
<servlet-class>org.apache.struts2.views.JspSupportServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
。。。
2)将struts的tag文件放入项目根:
3)模板文件index.ftl:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!-- 在此模板文件中使用struts的标签文件。已经放在项目根目录 -->
<#assign s=JspTaglibs["/WEB-INF/struts-tags.tld"]>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>index.jsp</title>
</head>
<body>
FreeMarker模板<br/>
<!-- 使用@s. 代替原 s: -->
<@s.form name="" namespace="/pkgFreeMarker" action="ActionFreeMarker" method="post">
<@s.textfield name="userName" label="用户"/>
<@s.textfield name="userPswd" label="密码"/>
<@s.submit type="input" label="登录"/>
</@s.form>
</body>
</html>
3)Action类:
package cn.cvu.action;
import ...
public class ActionFreeMarker extends ActionSupport implements ModelDriven<BeanPerson> {
//使用JavaBean封装数据。BeanPerson有userName、userPswd两个属性
private BeanPerson person = new BeanPerson();
public String test() throws Exception{
String name = (String) ServletActionContext.getRequest().getAttribute("userName");
String pswd = (String) ServletActionContext.getRequest().getAttribute("userPswd");
person.setUserName(name);
person.setUserPswd(pswd);
System.out.println("ActionFreeMarker.....");
return SUCCESS;
}
public BeanPerson getModel() {
return person;
}
}
4)success.jsp:
User: ${userName}
Pawd: ${userPswd}
5)struts.xml:
<struts>
<package name="pkgFreeMarker" namespace="/pkgFreeMarker" extends="struts-default">
<!-- 正常请求路径 -->
<action name="ActionFreeMarker" class="cn.cvu.action.ActionFreeMarker" method="test">
<result name="success">/success.jsp</result>
</action>
<!-- 模板文件请求路径。只有name -->
<action name="ActionFreeMarkerFTL">
<!-- 只有type。夹裹内容为模板路径 -->
<result type="freemarker">/index.ftl</result>
</action>
</package>
</struts>
6)测试:

- end
Java中FreeMarker模板引擎实战
本文介绍如何在Java项目及Web项目中使用FreeMarker模板引擎。内容涵盖配置环境、编写模板文件、处理数据模型及整合Struts框架等关键步骤。


被折叠的 条评论
为什么被折叠?



