Freemarker 简介
FreeMarker允许Java servlet保持图形设计同应用程序逻辑的分离,这是通过在模板中密封HTML完成的。模板用servlet提供的数据动态地生成 HTML。模板语言是强大的直观的,编译器速度快,输出接近静态HTML页面的速度。
FreeMarker是一个模板引擎,一个基于模板生成文本输出的通用工具,使用纯Java编写
FreeMarker被设计用来生成HTML Web页面,特别是基于MVC模式的应用程序
虽然FreeMarker具有一些编程的能力,但通常由Java程序准备要显示的数据,由FreeMarker生成页面,通过模板显示准备的数据
FreeMarker不是一个Web应用框架,而适合作为Web应用框架一个组件
FreeMarker与容器无关,因为它并不知道HTTP或Servlet;FreeMarker同样可以应用于非Web应用程序环境
FreeMarker更适合作为Model2框架(如Struts)的视图组件,你也可以在模板中使用JSP标记库
Freemarker 开发配置
原本对freemarker了解不多,只知道是一种模板语言,我的个人网站设计时都没有考虑到使用freemarker,而是直接JSP展示。在网站上线推广过程中了解到,各个搜索引擎对动态的链接不够友好,就是说对于网站中XXX.action?name=www.tiantianfilm.com 这种格式的链接,搜索引擎不予收录,网络蜘蛛更亲奈.html的静态链接,为了便于更方便的网站推广,所以将网站集成URLREWRITER+FREEMARKER 技术改写了全站链接。大家可以去网站看下效果,www.tiantianfilm.com 细心的人还是可以看见.action的痕迹的。
现在网站中有两套链接,.action的动态链接,.html的静态链接。链接的改写纯粹是为了便于网站的推广,URLREWRITER过滤器的使用,FREEMARKER模板语言开发,这两块本人将在后续文章中做详细讲解,本文将结合网站详细介绍STRUTS2+FREEMARKER的开发配置。
1、准备相应的JAR包,struts2-core- 2.0.11.2.jar,xwork-2.0.5.jar,ognl-2.6.11.jar,freemarker- 2.3.8.jar,commons-logging-1.0.4.jar
2、解压缩struts2-core-2.0.11.2.jar复制META-INF/struts-tags.tld复制到工程WEB-INF目录下,FREEMARKER中默认是不支持struts2标签的,所以需将标签库导入模板中。
3、修改WEB.XML文件
添加STRUTS2过滤器
Java代码
1.<filter>
2. <filter-name>struts2</filter-name>
3. <filter-class>
4. org.apacher.sturts2.dispatcher.FilterDispatcher
5. </filter-class>
6.</filter>
7.<filter-mapping>
8. <filter-name>struts2</filter-name>
9. <url-parttern>/*</url-parttern>
10.</filter-mapping>
<filter>
<filter-name>struts2</filter-name>
<filter-class>
org.apacher.sturts2.dispatcher.FilterDispatcher
</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-parttern>/*</url-parttern>
</filter-mapping>
Java代码
1.
注意:对于网络上所说的要想在Freemarker中使用Struts2标签必须配置一个新SERVLET
Java代码
1.<servlet>
2.
3. <servlet-name>JspSupportServlet</servlet-name>
4. <servlet-class>
5. org.apache.struts2.views.JspSupportServlet
6. </servlet-class>
7. <load-on-startup>1</load-on-startup>
8. </servlet>
<servlet>
<servlet-name>JspSupportServlet</servlet-name>
<servlet-class>
org.apache.struts2.views.JspSupportServlet
</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
在本人的实践中发现这步并非必须的,此处有待深入研究
4、接下来这步应该是最重要的,配置struts.xml文件
Java代码
1.<action name="getVediosByCategory" class="com.wang.vedio.action.IndexAction" method="getVediosByCategory">
2. <result name="success">/secondPage.jsp</result>
3.</action>
<action name="getVediosByCategory" class="com.wang.vedio.action.IndexAction" method="getVediosByCategory">
<result name="success">/secondPage.jsp</result>
</action>
以上ACTIN配置为正常使用STRUTS2的配置,但在结合FREEMARKER中则需做如下改变
Java代码
1.<action name="getVediosByCategory" class="com.wang.vedio.action.IndexAction" method="getVediosByCategory">
2.
3. <result name="success" type="freemarker">/WEB-INF/template/secondPage.ftl</result>
4.</action>
<action name="getVediosByCategory" class="com.wang.vedio.action.IndexAction" method="getVediosByCategory">
<result name="success" type="freemarker">/WEB-INF/template/secondPage.ftl</result>
</action>
注意:<reslutl>元素的type 属性必须设置为freemarker,这是因为Freemarker模板文件必须由Freemarker模板引擎来解析,而Struts2内部实现了 Freemarker模板引擎,但我们必须声明返回结果类型为freemarker才可以
经过以上四步,STRUTS2+FREEMARKER配置完成,可以进行开发应用,下面展示一个简单的实例
Java代码
1.IndexAction.java
2.
3. ……
4.private Log log=LogFactory.getLog(IndexAction.class);
5. private String username;
6. private String password;
7. /**
8. * 登录处理
9. * @return
10. * @throws Exception
11. */
12. public String getVediosByCategory() throws Exception{
13. log.info("执行了登录方法getVediosByCategory()");
14. return SUCCESS;
15. }
16. 省略相应(getter,setter方法)
17. …
IndexAction.java
……
private Log log=LogFactory.getLog(IndexAction.class);
private String username;
private String password;
/**
* 登录处理
* @return
* @throws Exception
*/
public String getVediosByCategory() throws Exception{
log.info("执行了登录方法getVediosByCategory()");
return SUCCESS;
}
省略相应(getter,setter方法)
…
创建登录页面index.jsp
Java代码
1.<s:form action="getVediosByCategory">
2. 登录名:<s:textfield name="username"/><br>
3. 密码:<s:textfield name="password"/>
4. <s:submit value="登录" />
5.</s:form>
<s:form action="getVediosByCategory">
登录名:<s:textfield name="username"/><br>
密码:<s:textfield name="password"/>
<s:submit value="登录" />
</s:form>
创建结果页面:user.ftl
Java代码
1.<#--
2.<#assign s=JspTaglibs["/WEB-INF/struts-tags.tld "]>
3. -->
4.<html>
5. <body>
6. 欢迎<@s.property value="username"/>登录!
7. </body>
8.</html>
<#--
<#assign s=JspTaglibs["/WEB-INF/struts-tags.tld "]>
-->
<html>
<body>
欢迎<@s.property value="username"/>登录!
</body>
</html>
注意:
1、Struts2标签在JSP 页面中的写法与在Freemarker模板文件中的写法不同。
Freemarker模板文件是以<@s.tag>开始,以</@s.tag>结束
2、Freemarker模板文件的处理,通过Web容器是无法直接处理的,因此不要让用户直接访问模板 文件。在开发过程中,我们可以将Freemarker文件直接放到Web工程的 WEB-INF目录或其子目录下(用户无法访问WEB-INF目录下文件),并在相应的struts-*.xml文件中配置type="freemarker" 来输出模板
FREEMARKER接触不深,如有不足之处请大虾们多多指正
分享到:
相关推荐
Freemarker简介及标签详解大全 Freemarker简介及标签使用说明
Freemarker简介及标签详解大全.pdf
学习Freemarker简介及标签详解大全.pdf
FreeMarker是一个模板引擎,一个基于模板生成文本输出的通用工具,使用纯Java编写,有兴趣的可以了解一下
jsp、freemarker、velocity简介和对比。---如果你已经开发Java Web应用程序一段时间,那么对于 JVM 的 PermGen 问题可能并不陌生。由于 FreeMarker 模板不编译成类,它们不占用 PermGen 空间,并不需要一个新的类...
freemarker 中文文档,freemarker入门简介,含几个小实例
5.1.简介 参考:http://freemarker.foofun.cn/ FreeMarker 是一款 模板引擎: 即一种基于模板和要改变的数据, 并用来生成输出文本 (HTML 网页,电子邮件,配置文件,源代码等)的通用工具。 它不是
搭建项demo(maven项目[freemarker+easyui+spring+springmvc+mybatic]) ,包括各种功能,技术简介,要自己运行才行 有搭建的整个项目,1,有发短信验证码功能,paypal支付功能,登陆验证功能,excel导入导出功能 ...
新手学习freemarker 快速上手。
什么是FreeMarker? ................................................................................................. 7 我们应该阅读什么内容? .............................................................
Freemarker入门简介,资料,蛮有用的。
FreeMarker页面制作规范 页面规范的重要性 宏的简介 项目中常用宏的使用方法 页面元素规范 FreeMarker常用技巧
1概念 2指令 if, else, elseif switch, case, default, break list, break include Import compress escape, noescape assign global setting macro, nested, return t, lt, rt ...hashes内置方法
• 采用hibernate3+struts2+spring2+freemarker主流技术架构 • 懂html就能建站,提供最便利、合理的使用方式 • 强大、灵活的标签,用户自定义显示内容和显示方式 • 在设计上自身预先做了搜索引擎优化,增强对...
java版飞机大战源码 ...一、FreeMarker简介 FreeMarker是一款模板引擎,即一种基于模板和要改变的数据,并用来生成输出文本(HTML网页,电子邮件,配置文件,源代码等)的通用工具。它不是面向最终用户的,而是
项目简介: MiniDAO是一个基于SpringJDBC和FreeMarker技术的轻量级Java持久层框架。它以简洁的设计理念实现了SQL的分离和逻辑标签功能,与Mybatis的操作体验相媲美,同时能够无缝集成至Spring Boot项目。 技术构成...
1.1 简介 ............................................................................................................ 9 1.2 模板 + 数据模型 = 输出 ........................................................
1.1 简介 ............................................................................................................ 9 1.2 模板 + 数据模型 = 输出 ........................................................
前台模板引擎:Freemarker 简介 JEESNS是一款基于JAVA企业级平台研发的社交管理系统,依托企业级JAVA的高效、安全、稳定等优势,开创国内JAVA版开源SNS先河,JEESNS可以用来搭建门户、论坛、社区、微博、问答、知识...