【FreeMarker模板引擎】5.freemarker结合Struts2使用

上一篇讲解了Freemarker与Servlet的结合,这里我们讲解一下Freemarker与Struts2的结合。

同样首先创建一个Web Project工程:
【FreeMarker模板引擎】5.freemarker结合Struts2使用_第1张图片
将Struts2的相关核心jar包和Freemarker的jar包放置在lib下,并添加至编译环境。然后将struts2的标签说明文件struts-tags.tld(解压struts2-core-X.X.X.jar文件,在META-INF文件夹下)放置在WEB-INF下,让Freemarker也可以使用相关的标签文件,然后在WEB-INF文件夹下创建template文件夹用于放置模板文件:
【FreeMarker模板引擎】5.freemarker结合Struts2使用_第2张图片

然后在WEB-INF下创建或编辑web.xml,设置“.flt”的请求路径映射至freemarker的中央处理Servlet:
  
  
  
    Struts Blank  
  
      
        struts2  
        
	    org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter
          
      
  
      
        struts2  
        /*  
      
    
    
	 freemarker
	 
	 freemarker.ext.servlet.FreemarkerServlet
	 
	 
		TemplatePath
		/template
	 
	 
	 1
    

    
	freemarker
	*.ftl
    

      
        JspSupportServlet  
	  
	    org.apache.struts2.views.JspSupportServlet  
	  
	
	1  
    
  
      
        index.jsp  
      
  
  
然后在src下创建struts.xml作为struts的配置文件:



    
    
    
里面放置了struts的一些基本参数。由于还没写Action请求响应类,所以下面的action标签暂时为空,后面用来配置Action类的请求和响应信息。

然后创建一个“cn.com.freemarker.action.test”的包,用于放置Action请求处理类。

最后,工程全结构预览:
【FreeMarker模板引擎】5.freemarker结合Struts2使用_第3张图片
然后创建测试用的Action请求响应类,放置在“cn.com.freemarker.action.test”包下:
【FreeMarker模板引擎】5.freemarker结合Struts2使用_第4张图片
其中编写代码:
package cn.com.freemarker.action.test;

import com.opensymphony.xwork2.ActionSupport;

public class HelloWorldAction extends ActionSupport {

	private String SystemName = "东方红管理系统";
	
	@Override
	public String execute() throws Exception {
		System.out.println("HelloWorldAction.execute()");
		return SUCCESS;
	}

	public String getSystemName() {
		return SystemName;
	}

	public void setSystemName(String systemName) {
		SystemName = systemName;
	}
}
然后在struts.xml中配置该Action的请求和响应信息:



	
	
	
	
	    
	        template/test_success.ftl
	    
	

注意,在标签中的type我们填写的是“freemarker”,回顾一下Struts的Resultaction中的type类型,一共有以下几种:
dispatcher(跳转)
redirect(重定向)
chain(转发至其它action)
redirectAction(转发至其它空间下的action)
freemarker(加载freemarker模板视图文件)
httpheader
stream
velocity
xslt
plaintext
tiles

前四种比较常用,而与freemarker结合的时候就需要将type类型指定为“freemarker”,此时struts会将Action中的数据以数据模型的形式绑定在ftl模板页面中。

最后在WEB-INF下的template文件夹下创建“test_success.ftl”文件,内容如下:
<#assign s=JspTaglibs["/WEB-INF/struts-tags.tld"] /> <#--这一句是为了让Freemarker识别struts2的标签 -->


  
    test
  
  
	

${SystemName}

<@s.form action="reg" > <@s.textfield label="用户名" name="uname" /> <@s.submit />
上面先是引入了Struts标签库,然后下面使用表达式获取后台数据模型中的“SystemName”参数内容,然后使用“@s.标签名”来调用Struts的标签库中的标签,这里展示了一个form表单的标签代码。

然后将Web工程放置Tomcat中运行:
【FreeMarker模板引擎】5.freemarker结合Struts2使用_第5张图片
在页面中访问“test”请求,可以看到相关的响应信息:
【FreeMarker模板引擎】5.freemarker结合Struts2使用_第6张图片
通过浏览器的查看源码功能,看到ftl编译后的html源代码为:

  
    test
  
  
	

东方红管理系统

可以看到freemarker不仅将相关的数据模型中的数据解析至页面,还将相关的struts标签解析为html标签。

以上就是Struts结合Freemarker的相关操作。

转载请注明出处:http://blog.csdn.net/acmman/article/details/79248748

你可能感兴趣的:(freemarker,FreeMarker)