Struts使用FreeMarker作为其默认的模板技术,因此Struts2对FreeMarker的支持非常良好。因此,为了Struts2应用中使用FreeMarker模板技术,只需要在struts.xml文件中进行简单配置即可。
由于FreeMarker自供的FTL指令的能力非常有限,让我们编写一些相对复杂的界面里有点力不从心。不过不用担心,Struts2已经为我们提供了额外的标签库的支持。要在FreeMarker模板使用标签库,只要四步,如下:
1.解压struts2-core-X.X.X.jar文件,把在META-INF文件夹下面的struts-tags.tld文件复制到WEB-INF文件夹下。
2.在web.xml文件中启动JSPSupportServlet.代码如下:
<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>
3.在FreeMarker模板中使用assign指令导入标签库。代码如下
<#assign s=JspTaglibs["/WEB-INF/struts-tags.tld"] /> 注:这里我把struts-tags.tld放在WEB-INF下面
4.现在我们可以在FreeMarker模板中使用标签了,示例代码如下:
<#assign s=JspTaglibs["/WEB-INF/struts-tags.tld"] />
<@s.form action="login">
<@s.textfield name="username" label="username"/>
<@s.submit value="login" />
</@s.form>
虽然这样说明,相信我们还是一头雾水,下面我们将以一下简单的实例来指导大家真正会用FreeMarker.
下面是一个登录的示例:
1.在WEB-INF文件夹下面建立一个名为ftl的文件夹,其实就是FreeMarker容器,我们把所有的ftl文件都放在里面。
现在我们先在下面建立三个名字分别为login.ftl,welcome.ftl,showinfo.ftl的文件。
login.ftl代码如下
<#assign s=JspTaglibs["/WEB-INF/struts-tags.tld"] />
<html>
<head>
<title>Login Form</title>
</head>
<body>
please input username and password login<br>
<@s.form action="Login.action">
<@s.textfield name="username" label="username"/>
<@s.password name="password" label="password" />
<@s.submit value="submit" />
</@s.form>
</body>
</html>
welcome.ftl代码如下:
<html>
<head>
<title>Success</title>
</haed>
<body>
WelCome,${username},you logined!<br>
<a href="ShowInfo.action">Show Information</a>
</body>
</html>
showinfo.ftl代码如下:
<html>
<head>
<title>User Information</title>
<body>
<table border="1" width="360">
<caption>User Information</caption>
<tr>
<td>username:</td>
<td>${username}</td>
</tr>
<tr>
<td>sex:</td>
<td>${sex}</td>
</tr>
<tr>
<td>age:</td>
<td>${age}</td>
</tr>
</table>
</body>
</html>
2.从上面的ftl中我们可以看出,我们必须建立两个Action。
我是在com.test.action包下建立Action的。
LoginAction.java代码如下:
ShowInfo.java代码如下:
上面我们已经把所需要的Actions写好啦。
3.剩下的就是配置文件啦,也就是struts.xml
代码片段如下:
<!-- 因为浏览者无法直接访问WEB-INF/ftl路径下的资源,所以我们在struts.xml文件中配置下面片段代码。
也就是配置了一个能匹配所有请求的Action,该Action被映射到一个动态Result.
-->
<action name="*">
<result type="freemarker">/WEB-INF/ftl/{1}.ftl</result>
</action>
<!-- define a LoginAction -->
<action name="Login" class="com.test.action.LoginAction">
<result name="error" type="freemarker">/WEB-INF/ftl/error.ftl</result>
<result name="success" type="freemarker">/WEB-INF/ftl/welcome.ftl</result>
</action>
<action name="GetBooks" class="com.test.action.GetBooksAction">
<result name="login" type="freemarker">/WEB-INF/ftl/login.ftl</result>
<result name="success" type="freemarker">/WEB-INF/ftl/showBook.ftl</result>
</action>
<action name="ShowInfo" class="com.test.action.ShowInfo">
<result name="login" type="freemarker">/WEB-INF/ftl/login.ftl</result>
<result name="success" type="freemarker">/WEB-INF/ftl/showinfo.ftl</result>
</action>
到现在为止,我们的示例已经全部写好啦,接焉就是我们要启动Tomcat,打开IE,在地址栏上输入:http://localhost:8080/struts2/login.action就可以看到该示例的效果。
上面虽然是一个很简单的示例,但用来入门应该算不错,希望大家继续加深对FreeMarker的认识。
分享到:
相关推荐
这是我自学后写的两个程序,里面包含一个以jsp为模板视图的struts2程序和一个以freemarker为模板视图的struts2程序,希望对你有帮助!
struts2+spring2.5+hibernate3.2 + freemarker 全新功能实现的增删改查+freemarker 摸版 struts2 的方式自己去看简单。 spring2.5 是用注释来注入 hibernate3.2 是用ejb3注解映射关系 hibernate3 +个属性可以自动...
采用Struts2注解,视图层采用FreeMarker的一个示例项目。 欢迎下载学习。
让nutz支持freemarker。 具体使用和在struts2中使用是一样的
该属性的默认值是org.apache.struts2.views.freemarker.FreemarkerManager,这是Struts 2内建的FreeMarker管理器. struts.freemarker.wrapper.altMap 该属性只支持true和false两个属性值,默认值是true.通常无需修改...
第1章 Struts 2:现代Web框架 2 1.1 Web应用程序:快速学习 2 1.1.1 构建Web应用程序 2 1.1.2 基础技术简介 3 1.1.3 深入研究 6 1.2 Web应用程序框架 7 1.2.1 什么是框架 7 1.2.2 为什么使用框架 8 1.3 Struts 2框架...
第6章 Struts2非JSP视图技术 125 6.1 velocity视图技术使用介绍 125 6.2 freemarker视图技术使用介绍 128 6.3 JasperReports报表视图技术使用介绍 130 第7章 Struts2类型转换技术 135 7.1 Struts2类型转换使用介绍 ...
Struts2标签库提供了主题、模板支持,极大地简化了视图页面的编写,而且,struts2的主题、模板都提供了很好的扩展性。实现了更好的代码复用。Struts2允许在页面中使用自定义组件,这完全能满足项目中页面显示复杂,...
Struts2标签库提供了主题、模板支持,极大地简化了视图页面的编写,而且,struts2的主题、模板都提供了很好的扩展性。实现了更好的代码复用。Struts2允许在页面中使用自定义组件,这完全能满足项目中页面显示复杂,...
FreeMarker是专为实际的一代的 HTML 网页,特别是通过的servlet为基础的应用程序... 但是请注意,我们提供了型的解决方案中使用FreeMarker作为视图组成部分模型2框架(如Struts的) ,这也让你使用JSP的taglibs的模板。
支持更多视图技术(JSP(转译java文件,编译成class文件,才可以运行)、(模板技术,html,把数据和模板html一起以流方式输出)FreeMarker、Velocity) 基于AOP(面向切面编程)思想的拦截器机制,更易扩展(不修改源代码的...
FreeMarker是一个模板引擎,一个基于模板生成文本输出的通用工具,使用纯Java编写 ... FreeMarker更适合作为Model2框架(如Struts)的视图组件,你也可以在模板中使用JSP标记库 FreeMarker是免费的
FreeMarker允许Java servlet保持图形设计同应用程序逻辑的...FreeMarker同样可以应用于非Web应用程序环境,FreeMarker更适合作为Model2框架(如Struts)的视图组件,可以在模板中使用JSP标记库,FreeMarker是免费的。
FreeMarker在Eclipse安装 1.将插件hudson.freemarker_ide_0.9.14文件夹放到eclipse下的plugins... FreeMarker更适合作为Model2框架(如Struts)的视图组件,你也可以在模板中使用JSP标记库 FreeMarker是免费的
FreeMarker允许Java servlet保持图形设计同应用程序逻辑的分离,这是通过在模板中密封HTML完成的。... FreeMarker更适合作为Model2框架(如Struts)的视图组件,你也可以在模板中使用JSP标记库 FreeMarker是免费的
该属性的默认值是org.apache.struts2.views.freemarker.FreemarkerManager,这是Struts 2内建的FreeMarker管理器。 struts.freemarker.wrapper.altMap 该属性只支持true和false两个属性值,默认值是true。通常...
可是近几年,新的视图技术,如FreeMarker、Velocity技术。还有设计模式的大行其道。开发人员越来越觉得Struts在这些方面有先天的不足。并不能很优雅和优秀的完成Web项目开发工作。原因有很多种,一方面是Struts出现...
作者处处从实战出发,在丰富的示例中直观地探讨了许多实用的技术,如数据类型转换、文件上传和下载、提高Struts 2应用的安全性、调试与性能分析、FreeMarker、Velocity、Ajax,等等。跟随作者一道深入Struts 2,聆听...
FreeMarker不是一个Web应用框架,而适合作为Web应用框架一个组件。 FreeMarker与容器无关,因为它并...FreeMarker更适合作为Model2框架(如Struts)的视图组件,你也可以在模板中使用JSP标记库。 FreeMarker是免费的。
FreeMarker允许Java servlet保持图形设计同应用程序...FreeMarker同样可以应用于非Web应用程序环境,FreeMarker更适合作为Model2框架(如Struts)的视图组件,可以在模板中使用JSP标记库,FreeMarker是免费的。[2]