Struts上路_17-FreeMarker模板引擎

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

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

转载于:https://my.oschina.net/vigiles/blog/175682

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值