struts2中整合FreeMarker案例

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>    
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章