大多数网站的每个页面布局差别不是太大,除非一些特殊页面例如 门户首页等。如果每个页面独立一个文件,则会导致不同文件出现大量相同的代码,我们也可以把这些相同的代码抽取出来放在一个独立的小文件,需要的时候利用 Velocity的#parse指令来嵌入到目标页面中。但是此法却对页面上用于控制排版的HTML代码无效,因为控制整个页面排版的代码一般会贯穿整个 文件,开头、结尾皆有,无法分拆到独立的文件上,因此就有将页面的layout独立出来的,以减小页面的代码量的需要。
我在用Velocity时一般都是使用Velocity-Tools项目的VelocityViewServlet来负责解析所有Velocity 模板的请求,其实VelocityTools也提供另外一个Servlet便是VelocityLayoutServlet,该类直接从 VelocityViewServlet继承而来,通过使用VelocityLayoutServlet可以让我们很容易的将页面的布局控制模板和数据模 板分隔开来。欲使用此功能,请遵循以下步骤:
1。使用VelocityLayoutServlet类:原先的VelocityViewServlet直接替换成 VelocityLayoutServlet;
2。配制VelocityLayoutServlet:打开velocity.properties增加配制如下:
# 处理错误信息的模板路径 # relative to web application root directory tools.view.servlet.error.template = error.vm
# 所有布局文件的默认路径 # relative to web application root directory tools.view.servlet.layout.directory = /WEB-INF/layout/
# 默认的布局文件 # relative to the layout directory # NOT relative to the root directory of the webapp! tools.view.servlet.layout.default.template = default.vm |
3。布局测试
编写测试布局文件default.vm放置于上述配置中的默认布局文件存放路径中,内容如下
<html> <head> <title>$!page_title</title> </head> <body> $screen_content </body> </html> |
上面源码中$screen_content便是VelocityLayoutServlet保留的关键字,Velocity依此关键字来潜入实际被 引用的页面内容,其他变量开发者可以灵活处理。
另编写测试页面test.vm存放于web根目录下,内容如下
#set($page_title="Layout Test") Hello Velocity Layout!
|
启动服务器,测试该页面输出的HTML内容如下:
<html> <head> <title>Layout Test</title> </head> <body> Hello Velocity Layout! </body> </html> |
如此便达到我们预期的效果,如何使用便是听凭各位发落:)
分享到:
相关推荐
它采用模板语言(Template Language),使得非程序员,如网页设计师,能够专注于页面布局和样式设计,而将复杂的业务逻辑留给Java程序员处理。这种分离使得开发过程更为高效,尤其在遵循MVC(Model-View-Controller...
例如,`ANIMATION_VELOCITY`定义了动画的速度,`WIDGET_TOP_OFFSET`则是搜索框与屏幕顶部的距离。 `ListView` `mSearchResultList`用于显示搜索结果,而`LinearLayout` `mSearchResult`可能是用来包裹整个搜索结果...
### Velocity详解:初学者入门指南 #### 一、Velocity简介 Velocity是一款强大的模板引擎,专为Java开发者设计,用于在不编写任何Java代码的情况下生成HTML、XML、TXT等格式的输出文档。它允许用户通过简单的模板...
** Maven与Velocity整合详解 ** Maven和Velocity都是在Java开发中非常重要的工具。Maven是一个项目管理和综合工具,它帮助开发者管理项目的构建、报告和文档。Velocity则是一个基于Java的模板引擎,它允许开发者将...
**Velocity官方工具包详解** Velocity是一款强大的Java模板引擎,它由Apache软件基金会开发并维护,是Apache Jakarta项目的一部分。Velocity的主要目标是将呈现逻辑从应用逻辑中分离出来,使得开发者可以专注于业务...
**Velocity中文手册与学习资料详解** Velocity是一款基于Java的模板引擎,它允许开发者将HTML页面设计与业务逻辑相分离,让网页设计人员专注于页面布局,而程序员则专注于编写控制逻辑。Velocity通过简单的语法使得...
**Velocity 模板技术详解** Velocity 是一个开源的 Java 模板引擎,它允许开发者将业务逻辑与 HTML、XML 或其他格式的文档呈现分离开来,使得非程序员也能轻松地编辑网页布局。Velocity 被广泛应用于 Web 开发中,...
### Velocity 模板引擎知识点详解 #### 一、Velocity简介 Velocity是一款强大的基于Java的模板引擎,它允许用户通过一种简单且易于理解的模板语言来访问由Java代码定义的对象。Velocity的设计初衷是为了使得Web...
** Velocity 模板引擎配置详解 ** Velocity 是一个开源的 Java 模板引擎,它允许开发者将业务逻辑与页面展示分离,使得 HTML 页面更专注于布局和设计,而将动态数据处理交由后端代码处理。Velocity 通过使用简单的...
**Velocity Suite 1.2.3 - Dreamweaver 插件详解** Velocity Suite 1.2.3 是一款专为Adobe Dreamweaver设计的插件,它为开发者提供了在Dreamweaver环境中高效地编写和管理Velocity模板语言的能力。Velocity是Apache...
### Velocity 模板引擎知识点详解 #### 一、Velocity简介及基本概念 Velocity与Freemarker、JSTL并称为Java Web开发中的三大标签技术。Velocity是一种基于Java的模板引擎,它允许Web开发者通过简单的模板语法来生成...
Velocity教程详解 Velocity是一个强大的基于Java的模板引擎,它的核心目标是将HTML页面中的呈现逻辑与业务逻辑分离,实现Model-View-Controller(MVC)架构。这使得开发者能够专注于编写Java代码,而设计师可以专注...
### Velocity中文手册知识点详解 #### 一、Velocity简介与应用场景 **Velocity** 是一款基于 Java 的模板引擎,它提供了一种简洁高效的语法——**Velocity 模板语言 (VTL)**,用于引用 Java 代码中定义的对象。这...
**Velocity官方实例详解** Velocity是Apache软件基金会的一个开源项目,它是一个基于Java的模板引擎,用于生成动态内容。Velocity在Web开发中常被用来生成HTML、XML、Java源代码等静态页面,尤其适用于构建可定制化...
** Velocity模板应用详解 ** Velocity是一款强大的Java模板引擎,它为开发者提供了一种与呈现逻辑分离的方式,使得HTML、XML或者其他格式的文档可以更清晰地与业务逻辑代码分开。Velocity被广泛应用于Web应用开发,...
#### 三、Velocity模板语言(VTL)详解 VTL是一种专为Velocity设计的模板语言,其语法简洁明了,易于学习,尤其适合那些具有一定编程基础但并不精通Java的页面设计者。VTL通过变量引用、控制结构、函数调用等语法...
### Velocity基本语法详解 #### 一、变量 **1.1 变量的定义** 在Velocity模板语言中,变量的定义使用`#set`指令。Velocity支持弱类型的变量定义,这意味着在定义变量时无需指定其数据类型。例如: ```velocity #...
### Velocity中文版教程详解 #### 一、Velocity简介与应用场景 **Velocity** 是一款基于 Java 的模板引擎,它提供了一种简洁高效的模板语言,让用户能够轻松地引用由 Java 代码定义的对象。通过这种方式,Velocity...
### Velocity技术详解 #### 一、Velocity概述 **Velocity**是一种强大的开源模板引擎,它能够帮助开发者轻松地在Web应用程序中实现动态内容的生成。它主要用于处理MVC(Model-View-Controller)架构中的视图层,即...
**Velocity-Texen详解** Velocity-Texen是一个基于Apache Velocity模板引擎的脚本工具,用于自动化生成静态或动态内容,如HTML、XML、Java源代码等。它在软件开发过程中,尤其是在快速应用开发(RAD)和敏捷开发...