在WEB程序中使用FreeMarker心得

今天做了Struts2、Hibernate3、Spring2、FreeMarker的框架整合程序。

按照网上找的相关资料去做的程序报错了,因为是第一次用FreeMarker,所以没有经验,网上说只要把Struts2的核心jar包里的struts-tags.tld放在WEB-INF目录下,在*.ftl页面里做<#assign s=JspTaglibs["/WEB-INF/struts-tags.tld"] />这样的引用就可以,可我的程序却报了

exception:freemarker.template.TemplateModelException: Could not load taglib information,

root cause:java.lang.ClassNotFoundException: org.apache.struts2.views.jsp.ui.AutocompleterTag
这个异常,后来又看了看Struts2里的关于FreeMarker的API和在网上搜索的FreeMarker的相关资料,最后才跑通的,源代码引用如下:

*.ftl页面需要引用的源代码:

<#assign page=JspTaglibs["http://www.opensymphony.com/sitemesh/page"]>
<#assign s=JspTaglibs["/struts-tags"] />

<html>
<head>
<title>注册页面</title>
</head>
<body>
<@s.form method="post" name="inputform" action="register.action!register" >
<@s.textfield label="用户名" name="username"/>
<@s.password label="密码" name="password"/>
<@s.textfield label="出生日期" name="birthday"/>
<@s.submit value="注册" align="left" />
</@s.form>
</body>
</html>

但我的WEB程序第一访问页面仍然是jsp页面,因为FreeMarker只能用action跳转的方式才能被访问,因为jsp页面的访问速度比ftl页面的访问速度慢,所以我建议第一访问页面也用ftl,这时问题又出现了,如果我们像访问jsp页面那样直接访问ftl页面的话,页面会显示ftl语言的源代码,而不是我们要的效果,在struts2-core-2.0.0.jar的版本里有一个org.apache.struts2.views.freemarker.FreeMarkerServlet这个类,这个类在后期的新版本中被删掉了,要想使用这个类就需要我们自己从新把那个类打包到新版本中,在web.xml中还要做相应的配置代码,配置代码如下:

<servlet>

<servlet-name>freemarker</servlet-name>

<servlet-class>org.apache.struts2.views.freemarker.FreemarkerServlet</servlet-class>

</servlet>

<servlet-mapping>

<servlet-name>freemarker</servlet-name>

<url-pattern>*.ftl</url-pattern>

</servlet-mapping>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值