Struts上路_17-FreeMarker模板引擎

1.JavaProject中使用FreeMarker

1)创建Java项目,添加jar

Struts上路_17-FreeMarker模板引擎


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

Struts上路_17-FreeMarker模板引擎

文件内容:

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

1web.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)将strutstag文件放入项目根:

Struts上路_17-FreeMarker模板引擎 


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>


3Action类:

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;
	}
}


4success.jsp

User: ${userName}
Pawd: ${userPswd}


5struts.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)测试:

Struts上路_17-FreeMarker模板引擎

- end

你可能感兴趣的:(mvc,struts,struts2,javaweb,Webwork)