1, 首先需要引入 freemarker.jar 包文件
2, 將struts-tags.tld文件複製到WEB-INF文件夾下,引入struts-tags.tld 文件可以在 FreeMarker模板中使用身體struts2的標籤 (文件在struts2-core-X.X.X.jar包中的META-INF文件夾下有)
[點擊下載freemarker.jar]
[點擊下載struts-tags.tld]
在web.xml文件中配置freemark同時啓動JSPSupportServlet.代碼如下:
<servlet>
<servlet-name>freemarker</servlet-name>
<servlet-class>freemarker.ext.servlet.FreemarkerServlet</servlet-class>
<!--下面的配置freemarke的ftl文件的位置 -->
<init-param>
<param-name>TemplatePath</param-name>
<param-value>/</param-value>
</init-param>
<!-- 是否和服務器(tommcat)一起啓動。-->
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>freemarker</servlet-name>
<url-pattern>*.ftl</url-pattern>
</servlet-mapping>
<servlet>
<!-- define a JspSupportServlet Object -->
<servlet-name>JspSupportServlet</servlet-name>
<servlet-class>org.apache.struts2.views.JspSupportServlet</servlet-class>
<!-- setting JspSupportServlet auto start -->
<load-on-startup>1</load-on-startup>
</servlet>
在FreeMarker模板中使用assign指令導入標籤庫如下代碼:
<#assign s=JspTaglibs[“/WEB-INF/struts-tags.tld”] />
注:這裏我把struts-tags.tld放在WEB-INF下,代碼如下
test_success.ftl 模板內容如下
<#assign s=JspTaglibs["/WEB-INF/struts-tags.tld"] /><#--這一句是爲了讓Freemarker識別struts2的標籤 -->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>123</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="description" content="This is my page">
</head>
<body>
<h1>${companyName}</h1>
<@s.form action="reg" >
<@s.textfield label="用戶名" name="uname" />
<@s.submit />
</@s.form>
</body>
</html>
action的代碼如下
package com.test;
import com.opensymphony.xwork2.ActionSupport;
public class TestAction extends ActionSupport {
private String companyName="張三";
public String getCompanyName() {
return companyName;
}
public void setCompanyName(String companyName) {
this.companyName = companyName;
}
//執行的方法
public String execute() throws Exception {
System.out.println("TestAction.execute()");
return SUCCESS;//跳轉到對應的模板中
}
}
struts.xml 文件內容如下:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
<constant name="struts.devMode" value="true" />
<constant name="struts.i18n.encoding" value="gbk" />
<constant name="struts.enable.DynamicMethodInvocation" value="true" />
<package name="default" extends="struts-default">
<action name="test" class="com.test.TestAction">
<result name="success" type="freemarker">test_success.ftl</result>
</action>
</package>
</struts>