struts2中整合FreeMarker案例

来源:互联网 发布:机票比价软件 编辑:程序博客网 时间:2024/05/25 16:40

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>    
原创粉丝点击