Freemarker是一个模版引擎,一个基于模版生成文本输出的工具。通过java程序准备要显示的数据,由freemarker生成页面,再由模版显示准备的数据,它和jsp最大的区别就是,freemarker可以以近似生成HTML页面的速度呈现出要显示的页面,jsp实际是Servlet,首次访问jsp页面,Tomcat要将jsp页面翻译成Servlet,然后再呈现给浏览器,所以速度要比freemarker慢得多,freemarker的优势不只是速度,而是它能和struts2完美结合,struts2的标签也是由freemarker写的,所以freemarker不仅支持它自身的标签,也支持struts2的标签。
下面说一下使用freemarker的步骤:
(1)struts2默认包含freemarker的Jar包,所以不用另外下载。
(2)在web.xml加上如下配置
<servlet>
<servlet-name>JspSupportServlet</servlet-name>
<servlet-class>
org.apache.struts2.views.JspSupportServlet
</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
(3)在WEB-INF下新建freemarker目录,新建fileName.ftl文件。
(4)struts.xml文件中的action的<result>属性,type要指定为freemarker
<result name="login" type="freemarker">/WEB-INF/freemarker/fileName.ftl</result>
(5)在struts2的Action中读取数据库,准备要显示的数据。
(6)用freemarker标签将数据显示在页面上。
注意:freemarker使用struts2标签时写法要做一些改变如
在struts2中是这么写:
<s:textfield name="username" label="username"/>
在freemarker中要这么写:
<@s.textfield name="username" label="username"/>
另外还有一些freemarker特有的标签如<#list>这些网上很多解释,这里就不写了。