`
duooluu
  • 浏览: 58936 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

Struts2+Freemarker 实现Django模板继承功能

阅读更多
最近在学习Django,对它的模板继承功能爱不释手,相比以前的使用过的Sitemesh来说,其功能、灵活性、易用性、复用性都比sitemesh高出一大截。
于是结合struts2+Freemarker做过的项目进行思考,原来用struts2+Freemarker也可以轻松做到Django模板的功能,几天试用下来,那不是一般的爽,sitemesh暂时放一边去吧。
以一个例子来说明
1. 首先定义模板,假设路径为: /webapps/exam/base.ftl, 定义基本布局
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
 <head>
  <title><@title/></title>
 </head>

 <body>
<h1>Welcom</h1>
  
 <#if content?exists>
      <@content/>
</#if>

<#if images?exists>
	<@images/>
</#if>

<#if comment?exists>
     <@comment/>
</#if>
<p>
<hr/>
2003-2008 xxx.com. All rights reserved. 
</p>
 </body>
</html>


分为头、正文内容区域、图片区域、评论区域、尾,这是一个很简单的布局
2. 写一个简单的页面来测试,路径:/webapps/exam/simple.ftl,内容如下
<#include "/exam/base.ftl"/>

<#macro title>
测试
</#macro>

<#macro content>
蒂皮出版的《我的野生动物朋友》一书中,配有她的父母现场拍摄的130多幅照片,展现小女孩与各种凶残的非洲野生动物毫无顾忌玩耍的情景。这本书的广告称,这是又一个“狼孩”故事。
</#macro>

<#macro comment>
<hr>
<p>用户评论</p>
<p>
Tom Say: very good
</p>
</#macro>

这个简单页面就完成了,在simple.ftl中我们不关心布局,爱怎么摆就怎么摆,浏览器中可以看到效果了。
3. 通过继承增强simple.ftl
现在用户的需求来了,要在书籍介绍下显示插图,可以直接修改上面的simple.ftl来实现,另外我们来看看继承simple.ftl来实现这个需求,添加一个文件:/webapps/exam/image-book.ftl,内容如下:
<#include "/exam/simple.ftl"/>

<#macro images>
<p>
<img src='http://img2.cache.netease.com/cnews/2008/11/17/20081117095448372ff.jpg'/>
</p>
</#macro>


现在来看看,很好,已经在原来的页面上加上了图片。

这个例子非常简单,只是为了说明如何实现模板继承,应用场景应该很多。项目中正在用,感觉很方便。
分享到:
评论
4 楼 greatghoul 2012-05-18  
果然很方便哪。
3 楼 ylkiller 2009-06-26  
没怎么用过FREEMARKER,有个问题,如果你的2个相同的元素,比如出现2个IMAGE,父页面怎么区分啊?直接连续输出2个?我要在不同位置输出这2个图片怎么处理呢?
2 楼 jamesqiu 2009-06-25  
FreeMarker, 很好很强大
1 楼 ray_linn 2008-11-18  
这个不叫继承吧?? 顶多叫聚合, freemarker的弱点也很明显,不直观,非到运行时才可看到效果。

相关推荐

    struts2+spring2.5+hibernate3.2 + freemarker 全新功能实现的增删改查+freemarker 摸版

    struts2+spring2.5+hibernate3.2 + freemarker 全新功能实现的增删改查+freemarker 摸版 struts2 的方式自己去看简单。 spring2.5 是用注释来注入 hibernate3.2 是用ejb3注解映射关系 hibernate3 +个属性可以自动...

    struts2+hibernate+freemarker项目实例

    在Struts2框架中,FreeMarker作为视图层的模板技术,接收来自控制器的数据并根据模板规则生成最终的响应页面。FreeMarker模板语言简洁,易于学习,允许开发者将逻辑与表现分离,提高代码可维护性。 项目实例中的...

    hibernate3+struts2+spring2+freemarker 主流技术架构 实例

    • 采用hibernate3+struts2+spring2+freemarker主流技术架构 • 懂html就能建站,提供最便利、合理的使用方式 • 强大、灵活的标签,用户自定义显示内容和显示方式 • 在设计上自身预先做了搜索引擎优化,增强对...

    JEECMS源码(hibernate3+struts2+spring2+freemarker +jquery +json等技术)

    JEECMS使用目前java主流技术架构:hibernate3+struts2+spring2+freemarker。AJAX使用jquery和json实现。视图层并没有使用传统的JSP技术,而是使用更为专业、灵活、高效freemarker。 数据库使用MYSQL,并可支持orcale...

    spring+hibernate+struts2+freemarker SSH2 新闻发布系统

    这些操作可以通过后台管理系统实现,SSH2框架能够轻松支持这些功能的实现,例如通过Hibernate进行数据库操作,Struts2处理用户请求,Spring管理事务和数据访问对象(DAO)。 7. **数据库设计** 该系统可能包含新闻...

    Struts2+Spring2.5+Hibernate3+Freemarker整合

    整合S2SH+Freemarker,后台用Spring管理各个bean,Hibernate做数据库持久化,viewer用Freemarker。整合中对Struts2,Hibernate,Spring都采用Annotation进行注解类。

    java基于SpringBoot+freemarker实现的人事管理系统

    基于SpringBoot+freemarker实现的人事管理系统分为七大模块:绩效考核,招聘管理,档案管理,工资管理,考勤管理,培训管理,系统管理。本系统最大特色是有强大和灵活的权限控制功能,所有菜单,按钮功能均可由管理...

    Struts2+FreeMarker部署

    通过这种方式,开发者可以利用Struts2的强大功能处理业务逻辑,同时利用FreeMarker的简洁模板语言生成动态视图,实现MVC架构的良好分离。这种结合在实际项目中非常常见,尤其适合大型复杂的企业级应用。

    struts2+freemarker

    在Struts2中,Freemarker模板通常被用作视图层,将由Action处理后的数据填充到模板中,生成最终的用户界面。开发者可以定义变量和方法,在模板中使用这些变量来动态地生成页面内容。 结合使用Struts2和Freemarker,...

    Struts2+Spring2.5+Hibernate3+Freemarker框架整合

    整合S2SH+Freemarker+oscache,后台用Spring管理各个bean,Hibernate做数据库持久化,viewer用Freemarker。整合中对Struts2,Hibernate,Spring都采用Annotation进行注解类。

    struts2+freemarker 生成静态页面

    总之,“struts2+freemarker 生成静态页面”是一个旨在提升Web应用性能的技术实践,通过结合Struts2的MVC框架和FreeMarker的模板引擎,实现了动态内容到静态HTML的转化,为用户提供更快的加载速度和更好的浏览体验。...

    基于springboot+mvc+freemarker+aop实现校友信息管理系统源码.zip

    1、基于springboot+mvc+freemarker+aop实现校友信息管理系统源码.zip 2、该资源包括项目的全部源码,下载可以直接使用! 3、本项目适合作为计算机、数学、电子信息等专业的课程设计、期末大作业和毕设项目,作为参考...

    Struts2+freemarker+flash 采集摄像头头像

    总之,“Struts2+freemarker+flash 采集摄像头头像”项目展示了如何利用传统的Web技术栈实现用户头像的在线采集和展示,其中涉及到了后端框架、模板引擎和前端多媒体交互等多个技术层面。尽管随着技术的发展,这些...

    Struts2+Hibernate+Freemarker实现【增删改查】生成静态页面

    Struts2+Hibernate+Freemarker实现【增删改查】生成静态页面!这是一个相对网上较全的案例。源码内含数据库文件sql.sql及效果图!本人致力于完整的Demo。欢迎关注!回头补上分页。敬请期待!

    struts2+freemarker 国际化

    通过阅读和运行这些代码,你可以更深入地了解Struts2和Freemarker如何协同实现国际化功能。这包括如何创建和组织资源文件,如何在Action中处理语言环境,以及如何在模板中引用翻译内容。这是一个实用的起点,对于...

    struts2+spring2+hibernate3+tiles+freemarker+ibatis 实现

    资源 struts2+spring2+hibernate3+tiles+freemarker+ibatis 架构图 的具体实现,注意没有java源文件,大家可以看一下配置,具体实现大家不防试一把 &lt;br&gt;下载架构图一目了然哦:...

    基于springboot+mvc+freemarker+aop实现校友信息管理系统.zip

    基于springboot+mvc+freemarker+aop实现校友信息管理系统.zip基于springboot+mvc+freemarker+aop实现校友信息管理系统.zip基于springboot+mvc+freemarker+aop实现校友信息管理系统.zip基于springboot+mvc+freemarker...

    Struts2+freemarker

    3. **模板继承**:通过`&lt;#include&gt;`和`&lt;#assign&gt;`等指令,可以实现模板的复用和继承,提高代码的可维护性。 4. **条件和循环**:FreeMarker提供了`&lt;#if&gt;`、`&lt;#else&gt;`、`&lt;#foreach&gt;`等控制结构,实现条件判断和循环。...

    struts1.2+freemarker实现登录成功页面静态化例子

    2. 在Struts的配置文件(struts-config.xml)中配置Freemarker插件,指定模板目录、配置文件等参数。 3. 创建Freemarker模板文件(.ftl),定义页面布局和动态内容展示方式。 接着,我们设计登录功能。在Action类中...

Global site tag (gtag.js) - Google Analytics