Velocity是java世界中出现比较早,也比较成熟的、性能比较好的、应用也比较广泛的模板框架。
所谓模板,就是定义一套不变的模型,并用其生成一些动态的东西。最常见的是应用场景是动态网页,我们知道一些网页大部分内容是不变的,只有少数内容需要改变,比如当前浏览网页的用户名等。除了这种场景,在自动生成代码方面,模板技术的应用也是常见的。
那么,在Roller中velocity是被用来干什么呢?简单地说,其实也是用来生成网页的。不过,除了生成网页,还要把生成的结果缓存起来。
本文中主要讨论Roller如何应用velocity进行设计及其启示。以下是Roller关于velocity的类图:
Roller定义了两个类:Renderer和RendererManager,在Roller中所有跟velocity相关的操作都从这两个类开始!
可能你有点疑惑,模板有很多,并且放置的地方也不同。这两个类怎么知道我要的是那个模板?
在RendererManager的静态方法 getRenderergetRenderer(Template template)中,参数带有一些关于模板的信息,比如名称、ID等。其实,RendererManager让VelocityRendererFactory代为其干活。VelocityRendererFactory简单new 一个VelocityRenderer对象并将其返回给应用。
VelocityRenderer对象被实例化的时候将得到一个真正的Velocity 模板对象,真正干活的也是Velocity,不是Roller的VelocityRenderer。
VelocityRenderer是如何得到Velocity的模板对象的呢?答案是通过RollerVelocity!
RollerVelocity会被实例化一个Velocity引擎,并且通过Velocity的专有配置文件Velocity.properties文件确定有那些渠道可以取到模板!见类图中的ResourceLoader实现类。
启示:
1、我们在工作中会用到很多第三方软件(如,Velocity、poi、jxl等),我们是否也为用到这些第三方软件的同事屏蔽如何使用第三方软件(即会用Renderer、RendererManager即可)?这样其他人就不需要花时间去学习如何使用第三方软件了,既提高效率又利于维护。
2、如果有更好的模板技术出现,你要让它代替Velocity,工作量如何?怎么做?
3、当前我用Roller进行二次开发,有一个客户关系模块需要应用模板技术进行个性化的发送邮件、短信。我实现起来非常方便,分别实现加载邮件、短信模板的ResourceLoader就可以了,其他地方不需要改动。难道设计Roller的人预见我会有这个需求了吗?
分享到:
相关推荐
Roller由以下Maven项目组成: roller-project:顶级项目应用程序:Roller Weblogger webapp,JSP页面,Velocity模板汇编发布:用于创建Roller文档的官方发行版:ODT(OpenOffice / LibreOffice)格式的Roller文档-...
Roller由以下Maven项目组成: roller-project:顶级项目应用程序:Roller Weblogger webapp,JSP页面,Velocity模板汇编发布:用于创建Roller文档的官方发行版:ODT(OpenOffice / LibreOffice)格式的Roller文档-...
Roller的安装指南涵盖了使用MySQL,Derby或PostgreSQL数据库在Tomcat,GlassFish和JBoss应用程序服务器上的部署。 但是,用户报告在其他应用程序服务器和数据库上成功运行Roller。 -多用户博客:可支持数以万计的...
软2一月考勤表-20230917-075457.xlsx
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
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
Delphi作为一款功能强大的编程语言,以其直观易用的集成开发环境(IDE)和高效的编译器赢得了广大开发者的青睐。本文将对Delphi编程语言的特性、应用领域、编程环境、以及与其他编程语言的比较进行全面而深入的解析,并结合实际案例展示Delphi的编程实践。 Delphi是一种面向对象的编程语言,同时它也是一款可视化软件开发工具。Delphi最初由Borland公司推出,并在后续发展中被Embarcadero Technologies接手。其第一个版本发布于1995年,当时该软件还叫做Object Pascal,后来才更名为Delphi。 Delphi作为一款功能强大的编程语言,在应用程序开发领域具有广泛的应用前景。其直观易用的IDE、高效的编译器以及丰富的组件库为开发者提供了强大的支持。通过本文的解析和案例展示,我们可以看到Delphi在快速开发、跨平台性以及面向对象等方面的优势。随着技术的不断进步和需求的不断变化,相信Delphi将继续发挥其在应用程序开发领域的重要作用。
源代码-76521生活网模板 asp版 v1.8.zip
瑞萨RA4M2驱动程序,Keil开发环境,FSP库驱动。 项目代码可直接编译运行~
游戏开发资源,游戏UI,游戏GUI,游戏图标,PSD格式,XD格式,PNG下载,源文件,可编辑下载,游戏购物充值界面,宝石,图标,PS格式,AI格式等,游戏APP
机器学习 机器学习是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。它专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。机器学习是人工智能的核心,是使计算机具有智能的根本途径。 机器学习的发展历程可以追溯到20世纪50年代,当时Arthur Samuel在IBM开发了第一个自我学习程序,一个西洋棋程序,这标志着机器学习的起步。随后,Frank Rosenblatt发明了第一个人工神经网络模型——感知机。在接下来的几十年里,机器学习领域取得了许多重要的进展,包括最近邻算法、决策树、随机森林、深度学习等算法和技术的发展。 机器学习有着广泛的应用场景,如自然语言处理、物体识别和智能驾驶、市场营销和个性化推荐等。通过分析大量的数据,机器学习可以帮助我们更好地理解和解决各种复杂的问题。例如,在自然语言处理领域,机器学习技术可以实现机器翻译、语音识别、文本分类和情感分析等功能;在物体识别和智能驾驶领域,机器学习可以通过训练模型来识别图像和视频中的物体,并实现智能驾驶等功能;在市场营销领域,机器学习可
基于Qt+C++开发的横板闯关酷跑游戏+火柴人画风+源码,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用~ 项目简介: 一款基于Qt的横板闯关酷跑游戏,火柴人画风 #注意:下载到本地后需要将构建目录改到pro文件同级目录,否则可能无法正常显示。 游戏以控制火柴人避开障碍物,吃到尽可能多的金币为主要目标。 控制火柴人跑得越远得分越高,吃到金币会有加分并增加金币数,碰到障碍物会有扣分。 吃到红心会加速回血,吃到法杖会暂时消除所有障碍物。 不碰到障碍物人物会自动缓慢回血,血条为空时死亡,游戏结束。 操作方法: 按下W键控制火柴人向上跳跃,在空中可进行二次跳跃。 按下S键控制火柴人加速下落。 按下A键控制火柴人向左加速移动。 按下D键控制火柴人向右加速。 游戏中按下esc键暂停游戏,再次按下esc键继续游戏。 游戏结束后按下R键重新开始游戏,按下B键返回游戏主菜单。
第13届蓝桥杯Python省赛真题-研究生组(完整题目&源码);第13届蓝桥杯Python省赛真题-研究生组(完整题目&源码);第13届蓝桥杯Python省赛真题-研究生组(完整题目&源码);
管理后台项目开发脚手架,基于vue-element-admin和springboot搭建,前后端分离方式开发和部署.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提高了应用性能,简化了开发流程,并且能更快地响应市场需求。
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.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