`
devroller2
  • 浏览: 33686 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Velocity在Roller中的应用

阅读更多

Velocityjava世界中出现比较早,也比较成熟的、性能比较好的、应用也比较广泛的模板框架。

 

所谓模板,就是定义一套不变的模型,并用其生成一些动态的东西。最常见的是应用场景是动态网页,我们知道一些网页大部分内容是不变的,只有少数内容需要改变,比如当前浏览网页的用户名等。除了这种场景,在自动生成代码方面,模板技术的应用也是常见的。

 

那么,在Rollervelocity是被用来干什么呢?简单地说,其实也是用来生成网页的。不过,除了生成网页,还要把生成的结果缓存起来。

 

本文中主要讨论Roller如何应用velocity进行设计及其启示。以下是Roller关于velocity的类图:

Roller定义了两个类:RendererRendererManager,在Roller中所有跟velocity相关的操作都从这两个类开始!

 

可能你有点疑惑,模板有很多,并且放置的地方也不同。这两个类怎么知道我要的是那个模板?

 

RendererManager的静态方法 getRenderergetRenderer(Template template)中,参数带有一些关于模板的信息,比如名称、ID等。其实,RendererManagerVelocityRendererFactory代为其干活。VelocityRendererFactory简单new 一个VelocityRenderer对象并将其返回给应用。

 

VelocityRenderer对象被实例化的时候将得到一个真正的Velocity  模板对象,真正干活的也是Velocity,不是RollerVelocityRenderer

 

VelocityRenderer是如何得到Velocity的模板对象的呢?答案是通过RollerVelocity

RollerVelocity会被实例化一个Velocity引擎,并且通过Velocity的专有配置文件Velocity.properties文件确定有那些渠道可以取到模板!见类图中的ResourceLoader实现类。

 

启示:

1、我们在工作中会用到很多第三方软件(如,Velocitypoijxl等),我们是否也为用到这些第三方软件的同事屏蔽如何使用第三方软件(即会用RendererRendererManager即可)?这样其他人就不需要花时间去学习如何使用第三方软件了,既提高效率又利于维护。

 

2、如果有更好的模板技术出现,你要让它代替Velocity,工作量如何?怎么做?

 

3、当前我用Roller进行二次开发,有一个客户关系模块需要应用模板技术进行个性化的发送邮件、短信。我实现起来非常方便,分别实现加载邮件、短信模板的ResourceLoader就可以了,其他地方不需要改动。难道设计Roller的人预见我会有这个需求了吗?

 

 

 

1
1
分享到:
评论

相关推荐

    roller_mirror:Apache Roller源代码的镜像

    Roller由以下Maven项目组成: roller-project:顶级项目应用程序:Roller Weblogger webapp,JSP页面,Velocity模板汇编发布:用于创建Roller文档的官方发行版:ODT(OpenOffice / LibreOffice)格式的Roller文档-...

    fogbeam_roller:Fork of Roller(从技术上讲,但通常与上游资源相同。几乎没有理由让任何人使用此回购协议)

    Roller由以下Maven项目组成: roller-project:顶级项目应用程序:Roller Weblogger webapp,JSP页面,Velocity模板汇编发布:用于创建Roller文档的官方发行版:ODT(OpenOffice / LibreOffice)格式的Roller文档-...

    roller

    Roller的安装指南涵盖了使用MySQL,Derby或PostgreSQL数据库在Tomcat,GlassFish和JBoss应用程序服务器上的部署。 但是,用户报告在其他应用程序服务器和数据库上成功运行Roller。 -多用户博客:可支持数以万计的...

    软2一月考勤表-20230917-075457.xlsx

    软2一月考勤表-20230917-075457.xlsx

    node-v9.10.0-win-x86.zip

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    2023年 【19页】AIGC行业专题报告:2023年有望成为AIGC的拐点.zip

    2023年 【19页】AIGC行业专题报告:2023年有望成为AIGC的拐点.zip

    node-v6.11.2-sunos-x64.tar.gz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    集团IT信息化产品项目实施方法论及IT信息化服务方案.pptx

    集团IT信息化产品项目实施方法论及IT信息化服务方案.pptx

    Delphi编程语言的深度解析

    Delphi作为一款功能强大的编程语言,以其直观易用的集成开发环境(IDE)和高效的编译器赢得了广大开发者的青睐。本文将对Delphi编程语言的特性、应用领域、编程环境、以及与其他编程语言的比较进行全面而深入的解析,并结合实际案例展示Delphi的编程实践。 Delphi是一种面向对象的编程语言,同时它也是一款可视化软件开发工具。Delphi最初由Borland公司推出,并在后续发展中被Embarcadero Technologies接手。其第一个版本发布于1995年,当时该软件还叫做Object Pascal,后来才更名为Delphi。 Delphi作为一款功能强大的编程语言,在应用程序开发领域具有广泛的应用前景。其直观易用的IDE、高效的编译器以及丰富的组件库为开发者提供了强大的支持。通过本文的解析和案例展示,我们可以看到Delphi在快速开发、跨平台性以及面向对象等方面的优势。随着技术的不断进步和需求的不断变化,相信Delphi将继续发挥其在应用程序开发领域的重要作用。

    源代码-76521生活网模板 asp版 v1.8.zip

    源代码-76521生活网模板 asp版 v1.8.zip

    瑞萨RA6M5实现ADC电压采集(FSP库驱动)

    瑞萨RA4M2驱动程序,Keil开发环境,FSP库驱动。 项目代码可直接编译运行~

    游戏购物冲值界面UI设计PSD源文件.zip

    游戏开发资源,游戏UI,游戏GUI,游戏图标,PSD格式,XD格式,PNG下载,源文件,可编辑下载,游戏购物充值界面,宝石,图标,PS格式,AI格式等,游戏APP

    2018年秋季机器学习课程大作业,2018CCF-BDCI赛题-基金相关性预测训练赛

    机器学习 机器学习是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。它专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。机器学习是人工智能的核心,是使计算机具有智能的根本途径。 机器学习的发展历程可以追溯到20世纪50年代,当时Arthur Samuel在IBM开发了第一个自我学习程序,一个西洋棋程序,这标志着机器学习的起步。随后,Frank Rosenblatt发明了第一个人工神经网络模型——感知机。在接下来的几十年里,机器学习领域取得了许多重要的进展,包括最近邻算法、决策树、随机森林、深度学习等算法和技术的发展。 机器学习有着广泛的应用场景,如自然语言处理、物体识别和智能驾驶、市场营销和个性化推荐等。通过分析大量的数据,机器学习可以帮助我们更好地理解和解决各种复杂的问题。例如,在自然语言处理领域,机器学习技术可以实现机器翻译、语音识别、文本分类和情感分析等功能;在物体识别和智能驾驶领域,机器学习可以通过训练模型来识别图像和视频中的物体,并实现智能驾驶等功能;在市场营销领域,机器学习可

    基于Qt+C++开发的横板闯关酷跑游戏+火柴人画风+源码(毕业设计&课程设计&项目开发)

    基于Qt+C++开发的横板闯关酷跑游戏+火柴人画风+源码,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用~ 项目简介: 一款基于Qt的横板闯关酷跑游戏,火柴人画风 #注意:下载到本地后需要将构建目录改到pro文件同级目录,否则可能无法正常显示。 游戏以控制火柴人避开障碍物,吃到尽可能多的金币为主要目标。 控制火柴人跑得越远得分越高,吃到金币会有加分并增加金币数,碰到障碍物会有扣分。 吃到红心会加速回血,吃到法杖会暂时消除所有障碍物。 不碰到障碍物人物会自动缓慢回血,血条为空时死亡,游戏结束。 操作方法: 按下W键控制火柴人向上跳跃,在空中可进行二次跳跃。 按下S键控制火柴人加速下落。 按下A键控制火柴人向左加速移动。 按下D键控制火柴人向右加速。 游戏中按下esc键暂停游戏,再次按下esc键继续游戏。 游戏结束后按下R键重新开始游戏,按下B键返回游戏主菜单。

    第13届蓝桥杯Python省赛真题-研究生组(完整题目&源码).zip

    第13届蓝桥杯Python省赛真题-研究生组(完整题目&源码);第13届蓝桥杯Python省赛真题-研究生组(完整题目&源码);第13届蓝桥杯Python省赛真题-研究生组(完整题目&源码);

    管理后台项目开发脚手架,基于vue-element-admin和springboot搭建,前后端分离方式开发和部署.zip

    管理后台项目开发脚手架,基于vue-element-admin和springboot搭建,前后端分离方式开发和部署.zip

    node-v7.1.0-linux-armv6l.tar.gz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    node-v8.1.1-x86.msi

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    node-v8.14.1-x86.msi

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    project.uvoptx

    project.uvoptx

Global site tag (gtag.js) - Google Analytics