从VelocityViewServlet到VelocityLayoutServlet
使用Velocity开发web应用时,需要在web.xml中配置一个Velocity提供的VelocityViewServlet接受处理对velocity模板(即vm文件)的forward访问。(MVC,view只是做展示,通过control,转发到view)
VelocityViewServlet负责将设置在request中的attribute“读出”和模板文件进行merge形成最终的页面,向response输出显示在用户电脑上。
VelocityViewServlet是一个简单的易使用的。但是只要把web.xml中VelocityViewServlet换成VelocityLayoutServlet,并配置上2,3句话,将具有页面简单Layout的功能。而这个功能其实非常强大。
VelocityLayoutServlet可以用来简化velocity下的页面布局开发。
使用VelocityLayoutServlet,当forward到一个页面时,能自动把该页面对应的整体显示出来。
比如访问用户资料页面,能够自动把网页的头,尾等自动显示。
VelocityLayoutServlet使用
系统中有若干页面布局是这样设定的:头部(header),左侧菜单区域(sub),中右侧页面内容部(main),底部(footer)。
1、创建文件WEB-INF/vm/layout/layout.vm如下:
<body> <div id="header>#parse('vm/layout/header.vm')</div> <div id= "content" > <div id= "sub" >#parse($sub)</div> <div id= "main" >$screen_content</div> </div> <div id= "footer" >#parse('vm/layout/footer.vm')</div> </body>
$screen_content相当于一个占位符,被forward的目标页面内容将替代该处内容。
#parse($sub):表示sub位置是可以动态通过$sub变量设置的。
同时也创建'vm/layout/footer.vm''vm/layout/header.vm'这两个文件。
2、创建WEB-INF/vm/user/user.vm如下:(假设该screen页面用于显示用户的资料信息)
#set($layout = "layout.vm" ) #set($sub= "vm/user/sub.vm" ) <div> <p>What's your name?</p> <p>My name is $user.loginName!</p> </div>
第一句话设置这个页面使用哪个布局器。
第二句话设置sub的值,用于布局把vm/user/sub.vm文件包含进来。
同时也创建"vm/user/sub.vm"文件
配置velocity.properites文件
使用velocity一般都是需要配置velocity.properites的,至少应该设置input.encoding和output.encoding等。
在这个文件中增加设置如下代码:
resource.loader = webapp webapp.resource.loader.class = org.apache.velocity.tools.view.servlet.WebappLoader webapp.resource.loader.path=/WEB-INF/templates/ default.contentType=text/html input.encoding = UTF-8 output.encoding = UTF-8 # Directory for layout templates, # relative to web application root directory tools.view.servlet.layout.directory = / # Filepath of the default layout template # relative to the layout directory tools.view.servlet.layout.default.template = common/layout/default.vm #设置外部宏 velocimacro.library = common/macros.vm
web.xml配置:
<servlet> <servlet-name>velocity</servlet-name> <servlet- class> org.apache.velocity.tools.view.servlet.VelocityLayoutServlet </servlet- class > <init-param> <param-name>org.apache.velocity.toolbox</param-name> <param-value>/WEB-INF/toolbox.xml</param-value> </init-param> <init-param> <param-name>org.apache.velocity.properties</param-name> <param-value>/WEB-INF/velocity.properties</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>velocity</servlet-name> <url-pattern>*.vm</url-pattern> </servlet-mapping>
查看效果
a)访问http://localhost/vm/user/user.vm看看效果。
b)回到vm/user/user.vm文件,把#set($layout="layout.vm")去掉看看效果。
效果比较:
加上$layout设置的user.vm文件,浏览该页面时,将自动把该页面变成布局的一部分,把header.vm,sub.vm,footer.vm也输出出来
去掉$layout设置后浏览时,只是输出该页面,不会将header.vm,sub.vm,footer.vm输出出来。
这种功能在调试和编写时非常方便。
以后每增加一个新的页面时,只要在第一行设置了$layout指向一个布局模板便可(注意布局模板的路径,第3步已经做了提示),便可以轻松具有简单的布局功能了。
相关推荐
Velocity入门教程,语法,Velocity布局,Spring框架集成Velocity
Velocity模板引擎Velocity模板引擎Velocity模板引擎Velocity模板引擎Velocity模板引擎Velocity模板引擎Velocity模板引擎Velocity模板引擎Velocity模板引擎Velocity模板引擎
Velocity Velocity Velocity Velocity Velocity Velocity Velocity Velocity Velocity Velocity
Velocity 和 FreeMarker区别 对于大部分的应用来说,使用 FreeMarker 比 Velocity 更简单,因为 Velocity 还必须编写一些自定义的
赠送jar包:velocity-engine-core-2.3.jar; 赠送原API文档:velocity-engine-core-2.3-javadoc.jar; 赠送源代码:velocity-engine-core-2.3-sources.jar; 赠送Maven依赖信息文件:velocity-engine-core-2.3.pom;...
本课程从velocity engine也就是velocity引擎开始, 先讲解velocity的基本使用以及基础语法 , 然后再讲解velocity 的进阶内容velocity Tools , 以及velocity作为web项目的视图改如何使用 , 每一部分都会有一个综合案例...
在使用velocity作为视图层时候,经常会碰到为空的判断,这里整理了velocity为空判断
赠送jar包:velocity-engine-core-2.3.jar 赠送原API文档:velocity-engine-core-2.3-javadoc.jar 赠送源代码:velocity-engine-core-2.3-sources.jar 包含翻译后的API文档:velocity-engine-core-2.3-javadoc-...
打开网址:http://www.web-tag.net/all_17.htm 就是velocity标签大全 、教程 或下载CHM格式帮助文档
赠送jar包:velocity-tools-generic-3.1.jar; 赠送原API文档:velocity-tools-generic-3.1-javadoc.jar; 赠送源代码:velocity-tools-generic-3.1-sources.jar; 赠送Maven依赖信息文件:velocity-tools-generic-...
Velocity教程
开发velocity所需的jar包
模板:velocity和freemarker的比较模板:velocity和freemarker的比较
velocity 电子书velocity 电子书velocity 电子书
关于velocity的学习资料,velocity教程和velocity用户手册
velocity中文文档 教程 velocity中文文档 教程 velocity中文文档 教程
Velocity是一个基于java的模板引擎(template engine)。它允许任何人仅仅简单的使用模板语言(template language)来引用由java代码定义的对象。 当Velocity应用于web开发时,界面设计人员可以和java程序开发人员...
vim velocity插件 velocity.vim vim异常强大哦
赠送jar包:velocity-1.7.jar; 赠送原API文档:velocity-1.7-javadoc.jar; 赠送源代码:velocity-1.7-sources.jar; 包含翻译后的API文档:velocity-1.7-javadoc-API文档-中文(简体)版.zip 对应Maven信息:...
利用velocity来定义动画序列,可以直接使用velocity.js中预定义动画开发自己的网页动画,也可以利用velocity.js自定义动画