- 浏览: 5171911 次
- 性别:
- 来自: 天津
博客专栏
-
实战 Groovy
浏览量:29397
文章分类
- 全部博客 (639)
- 代码之谜 (6)
- JavaScript quirks (5)
- 程序员 (92)
- Java (93)
- BT编程 (7)
- html/css (64)
- Groovy&Grails (42)
- Android (20)
- C/C++ (5)
- PHP/Perl/Python (46)
- 经典文章 (51)
- CodeIgniter (14)
- JQuery (10)
- 笑话 (4)
- 其他 (32)
- javascript (69)
- 云计算 (0)
- html5 (7)
- 面试 (8)
- google (3)
- nosql (2)
- nodejs (11)
- go (5)
- erlang (1)
- 小常识 (3)
- 冷知识 (5)
- database (4)
- web (12)
- 架构 (12)
- Exception (0)
最新评论
-
jqw1992:
https://www.chromefor.com/libra ...
[福利] 开发者必备的 Chrome 插件——ChromeSnifferPlus -
litjerk:
初步算了一下,目前最最精简的Win98版是5M,他5个小时多敲 ...
让人目瞪口呆的三位世界级电脑大师 -
379855529:
。。似乎重点没说NIO啊,前面基础只是铺垫的很好的,可是我要的 ...
Java NIO与IO的详细区别(通俗篇) -
springmvc_springjpa:
spring mvc demo教程源代码下载,地址:http: ...
一步步开发 Spring MVC 应用 -
匡建武:
Good
四个程序员的一天
基于Java的网站开发,很多人都采用JSP作为前端网页制作的技术,尤其是在国内。这种技术通常会存在一些问题,可以通过简单地分析网站开发过程来看看这些问题。通常网站开发采用以下两种方式:
◆ 网站功能确定后,由美工设计网页的UI(界面)部分,然后由程序员在其上加入代码显示逻辑(比如循环、判断显示数据结果)。这就是通常的JSP页面制作,当然这部分可以由美工完成模板,然后由JSP工程师以它为原型创建相应的JSP页面。
◆ 网站功能确定后,由美工设计网页的UI(界面)部分,然后由网页制作人员在其上加入代码显示逻辑(比如循环、判断显示数据结果)。在这一步的JSP页面制作中,网页制作人员通常只需要懂JavaScript和HTML,在工程师的指导下学会如何嵌入JSP taglib标记,然后以美工的模板为原型制作JSP网页。
显然后一种方式要比前一种方式分工明确。然而在很多小公司,或者项目紧急的情况下,JSP网页制作和后台程序开发都是同一个人,这样无疑加大了程序员的负担。后一种情况也有两个缺点,一是网页制作人员必须学会如何使用JSP taglib,这将加大网页制作人员的负担;二是如果页面因为客户的要求重新设计,那么无论哪种情况,网页制作人员都要将显示逻辑重新嵌入JSP网页。
虽然从性能角度和taglib的使用上来说,JSP比PHP和ASP做得要好,但它在设计上同样类似PHP这种服务器页面语言,即在页面中嵌入脚本语言的技术。这使得它虽然比传统基于CGI脚本语言的开发模式速度快,但却将后台程序逻辑与页面显示混淆。
用MVC模式开发网站
现在更多的网站制作采用一种称为MVC的模式,也就是将网站制作工作分工,分为M(Model,模型)、V(View,视图)和C(Controller,控制器)。
◆ M(Model,模型) M包括后台的事务逻辑、真正处理事务的代码和商业逻辑等,它们是整个网站最重要的工作部分。通常这部分代码相对比较稳定,不会经常变动,就是有所变动也不会对前端的页面产生影响。
◆ V(View,视图) V是网页的显示部分,这部分接受来自后台程序的结果或数据,进行显示。V视图通常是变化比较大的部分,比如网站界面的每日更新,每隔一段时间更新网页风格等都会造成V视图部分的大量更改工作。
◆ C(Controller,控制器) C在视图和模型之间传递控制,并根据要求调用相应的视图显示模型返回的数据,主要负责调度工作。
这种职责的分工到底有什么好处呢?它简化了软件开发过程中所有相关人员的工作,使不同部分的修改通常不会影响到其它部分的工作。比如,修改后台某些程序的算法并不影响前台的页面显示,前台页面的修改也不影响后台程序的开发。
这种分工合作比起JSP混淆代码逻辑和显示层的方式要好得多。所以越来越多的国外程序员在不断提出替代JSP的方案。在众多方案中,基于Java模板引擎的技术脱颖而出,其中著名的有Velocity和Webmacro两种模板技术。
Velocity模板引擎
模板引擎的设计思想最早由Webmacro提出,并被应用在一个著名的搜索引擎www.altavista.com上。后来,这种思想渐渐被Apache开发小组所采用,并作为一个子项目被提出来,这就是现在的Velocity。
模板引擎与MVC中视图部分的关系更为密切。Velocity可以应用在任何需要格式化数据显示的Java程序中。那么Velocity到底是什么呢?它的官方解释是:“Velocity是一种基于Java的模板引擎,它允许任何人使用简单而强大的模板语言来引用定义在Java代码中的对象。”
使用Velocity的优点在于:
◆ 很容易集成在各种各样的程序领域中;
◆ 为网页制作人员提供了一种清晰而简单的语法;
◆ 因为模板和代码是分离的,所以可以分别独立的开发和维护它们;
◆ Velocity引擎可以很容易地集成到一些Java运行环境,特别是Servlet中;
◆ Velocity使得模板可以访问任何环境对象中的共有方法。
Velocity的强大之处还在于它严格地区分程序开发功能的职责划分。它通过限制模板可能访问的对象(即后台程序允许其得到的对象)来实现这一点。这意味着网页设计人员可以只把精力放在数据的显示部分(View),而程序员则只要关注如何写好程序的控制层(Controller)、商业逻辑与数据管理(Model)。这就是典型的MVC开发模式,它简化了开发和日益复杂的应用和维护工作。
Velocity最擅长做的工作包括:
◆ 基于Servlet的网站制作;
◆ Java和SQL代码生成;
◆ XML处理和转换;
◆ 文字处理,比如生成trf文件等。
不过,Velocity用得最多的还是在基于Java Servlet的网页程序中做生成网页的引擎,以替代JSP等技术。除了使用比较容易外,它提供了强大的模板语言来显示和操作数据。注意,不是生成数据,这点很重要,因为生成工作应该是程序逻辑的部分。
Velocity非常适合在J2EE(Java 2 Platform,Enterprise Edition)的网站开发中替代JSP,做输出页面的技术工作。虽然JSP包含在J2EE规范中,但是J2EE本身并不需要JSP。
用Velocity做网页
Velocity是如何工作的呢?虽然大多数Velocity的应用都是基于Servlet的网页制作,但是为了说明Velocity的使用,这里将采用更通用的Java Application来说明它的工作原理。
任何Velocity的应用都包括模板制作和程序部分两个方面。按照惯例,采用HelloWorld来作为第一个程序的示例。
1. 模板制作模板示例hellosite.vm的内容如下(虽然其不是以HTML为主,但很容易改成一个HTML的页面):
Hello $name! Welcome to $site world!
2.Java程序部分
下面是Java代码:
- import java.io.StringWriter;
- import org.apache.velocity.app.VelocityEngine;
- import org.apache.velocity.Template;
- import org.apache.velocity.VelocityContext;
- public class HelloWorld
- {
- public static void main( String[] args )
- throws Exception
- {
- /* first, get and initialize an engine */
- VelocityEngine ve = new VelocityEngine();
- ve.init();
- /* next, get the Template */
- Template t = ve.getTemplate( "hellosite.vm" );
- /* create a context and add data */
- VelocityContext context = new VelocityContext();
- context.put("name", "Eiffel Qiu");
- context.put("site", "http://www.eiffelqiu.com");
- /* now render the template into a StringWriter */
- StringWriter writer = new StringWriter();
- t.merge( context, writer );
- /* show the World */
- System.out.println( writer.toString() );
- }
- }
将这两个文件放在同一个目录下,编译运行,结果是:
Hello Eiffel Qiu! Welcome to http://www.eiffelqiu.com world
为了保证运行顺利,请从Velocity的网站http://jakarta.apache.org/velocity/上下载Velocity的运行包,并将其中Velocity Jar包的路径放在系统的Classpath中,这样就可以顺利编译和运行以上程序了。
这个程序很简单,但是它能清楚地说明Velocity的基本工作原理。程序中的其它部分基本上很固定,最主要的部分在以下几段代码。
◆ Velocity获取模板文件,得到模板引用:
- Template t = ve.getTemplate( "hellosite.vm" );
◆ 初始化环境,并将数据放入环境:
- VelocityContext context = new VelocityContext();
- context.put("name", "Eiffel Qiu");
- context.put("site", "http://www.eiffelqiu.com");
◆ 初始化Velocity模板引擎:
- VelocityEngine ve = new VelocityEngine();
- ve.init();
◆ 将环境变量和输出部分结合:
- StringWriter writer = new StringWriter();
- t.merge( context, writer );
- /* show the World */
- System.out.println( writer.toString() );
这一部分在将来的Servlet应用中会有所区别,因为网页输出并不和命令行输出相同,如果用于网页输出,将并不通过System.out输出。
小结
Velocity解决了如何在Servlet和网页之间传递数据的问题,当然这种传输数据的机制是在MVC模式上进行的,也就是View、Modle和Controller之间相互独立工作,一方的修改不影响其它方面的变动。
他们之间的联系通过环境变量(Context)来实现,当然网页制作方和后台程序方要相互约定好对所传递变量的命名,比如上个程序例子中的site、name变量,它们在网页上就是$name、$site。
这样只要双方约定好变量名字,就可以独立工作了。无论页面如何变化,只要变量名不变,后台程序无需改动,前台网页也可以任意由网页制作人员修改。
通常简单变量名无法满足网页制作显示数据的需要,比如经常会循环显示一些数据集,或者是根据一些数据的值来决定如何显示下一步的数据等。
Velocity同样提供了循环、判断的简单语法以满足网页制作的需要。Velocity提供了一个简单的模板语言,供前端网页制作人员使用,这个模板语言简单到大部分懂得JavaScript的人都可以很快掌握,其甚至比JavaScript更简单。
当然这种简单是刻意的,因为不需要Velocity什么都能完成,而只需专注于其应该完成的。View层不应该包含更多的逻辑,Velocity的简单模板语法完全可以满足所有对页面显示逻辑的需要,并且也不会发生像JSP那样因为一个无限循环语句而毁掉系统的情况。
发表评论
-
Java NIO与IO的详细区别(通俗篇)
2014-01-02 10:51 69459内核空间、用户空间 ... -
Java EE 单元测试
2013-09-12 10:56 4796觉得测试 Java EE 应用程序太困难、不方便或者太复杂? ... -
JUnit 测试建议
2013-07-22 09:04 3487以下是对JUnit实践的一 ... -
老生常谈:面试算法有必要吗?
2013-04-01 09:55 32791声明:虽然发表在愚人节,但是文章内容很严肃。 前几天在知 ... -
一步步开发 Spring MVC 应用
2013-02-23 10:53 10380Spring MVC 框架 Spring 框 ... -
「译」Java集合框架系列教程四:Set接口
2013-01-18 13:20 2538原文:The Set Interface 译文:Java集 ... -
「译」Java集合框架系列教程三:Collection接口
2013-01-18 13:16 2380原文:The Collection Interface 译 ... -
「译」Java集合框架系列教程二:集合接口
2013-01-18 13:13 2023原文:http://docs.oracle.c ... -
Java集合框架系列教程一:集合框架简介
2013-01-18 12:47 3037原文:http://docs.oracle.com/jav ... -
Java泛型-类型擦除
2012-12-05 15:48 14632一、概述 Java泛型在使用过程有诸多的 ... -
千万不要把 bool 当成函数参数
2012-11-16 08:33 12511我们有很多 Coding Style 或 代码规范。 但这一条 ... -
网站建设中关于eclipse启动参数的优化
2012-08-23 09:23 2512在网站建设中,经常用 ... -
Eclipse程序员要掌握的常用快捷键
2012-08-22 09:33 10075判断一个人的编程水平,就看他用键盘多,还是鼠标多。用键 ... -
java中equals和==的区别
2012-08-15 16:31 2040值类型是存储在内存中的堆栈(简称栈),而引用类型的变量在 ... -
名词王国里的死刑(翻译) - A Story of Hello World
2012-07-23 10:43 11817翻译自Steve Yegge的大 ... -
好代码是廉价的代码
2012-07-19 08:03 3301长久以来我一直主张:好代码是廉价的代码。 当我跟做开发 ... -
只要一个返回语句
2012-05-18 13:18 1825别再这样写了: publ ... -
java编程的78条黄金法则
2012-05-16 12:57 2370创建和销毁对象 1、考虑用静态工厂方法(返回类的实例的 ... -
for 循环为何可恨?
2012-05-15 12:44 1624Java的闭包(Closure)特征最近成为了一个热门话 ... -
Java 8 新功能
2012-05-02 08:48 1910我们已经急不可待想知道Java 8可用的新功能,其中大部 ...
相关推荐
然后,通过Velocity模板引擎将这个上下文和模板文件合并,生成最终的输出。Velocity引擎会自动处理对象的getter方法调用,使得模板中的`$object.property`可以直接获取到Java对象的属性值。 Velocity中文手册.doc...
Apache Velocity 是一款基于 Java 的模板引擎,由 Apache 软件基金会维护和支持。它主要应用于 Web 应用开发领域,用于实现视图层(View Layer)的逻辑处理。通过 Velocity,开发者可以将业务逻辑与界面展示分离,...
《Mastering Apache Velocity》这本书是深入理解Apache Velocity这一强大模板引擎的权威指南。Apache Velocity是一个开源的Java模板引擎,它允许开发者将应用的展示层与业务逻辑层分离,从而提高开发效率和代码可...
Velocity是一款强大的Java模板引擎,由Apache软件基金会开发并维护,它是Apache Jakarta项目的一部分。 Velocity的主要设计目标是将表现层逻辑从应用逻辑中分离出来,使开发者可以专注于业务逻辑的实现,而无需关心...
- **模板使用**: 如何编写有效的Velocity模板,包括如何组织模板结构、使用Velocity提供的指令等。 - **上下文**: 上下文是Velocity中的一个核心概念,它充当了模板和实际数据之间的桥梁,用于存储模板所需的数据...
总之,Velocity模板引擎v2.2.0提供了一个强大且易于使用的工具,用于生成动态内容,其源码分析对于开发者来说是宝贵的资源,可以帮助他们提升技术水平,更好地理解和运用模板引擎。无论是在学习还是实践中,Velocity...
3. **Velocity模板引擎配置** - 可以通过VelocityConfigurer类配置Velocity引擎,比如设置模板路径、编码格式、缓存策略等。 - `Velocity.init()`初始化引擎,`Velocity.evaluate()`或`Velocity.mergeTemplate()`...
Velocity是Apache软件基金会下的一个开源项目,它是一个基于Java的模板引擎,专门用于生成动态Web内容。Velocity的目标是将HTML、XML等模板语言与业务逻辑分离,使得开发者可以专注于编写Java代码来处理复杂的业务...
Java Velocity模板引擎是一种基于Apache软件基金会的开源项目,用于生成动态内容。它是Java应用程序中用于创建HTML、XML、电子邮件等静态或动态文档的强大的模板语言和库。Velocity旨在将内容展示与业务逻辑分离,使...
Velocity模板语言(Velocity Template Language,简称VTL)是Apache软件基金会的Velocity项目中的一部分,它是一种用于生成动态网页内容的模板引擎。Velocity以其简洁、易读的语法,为Java开发者提供了一种高效的...
寂静与 Apache Velocity 语法相同的提取模板引擎。基本理念通过尝试将模板与格式化文本进行匹配来填充 Apache Velocity 上下文(又名字符串 -> 对象映射)。调用例子: import stillness.Stillness;import stillness...
在IT行业中,Velocity是一个强大的模板引擎,常用于生成动态内容,比如HTML页面、电子邮件模板定制等。本篇文章将深入探讨如何使用Velocity实现邮件模板的定制,以及与之相关的源码和工具。 首先,Velocity的基本...
接下来是Velocity模板引擎,它是Apache软件基金会的一个开源项目,用于生成静态网页或者动态内容。Velocity的语法简洁,易于理解,且与Java代码分离,有利于提高页面的可读性和维护性。在SpringBoot中,我们可以通过...
本篇文章将对四个流行的Java模板引擎——Velocity、FreeMarker、Smarty4j以及HTTL进行效率分析,旨在探讨它们在处理业务逻辑编译和性能方面的优劣。 1. Velocity: Velocity是Apache软件基金会的一个开源项目,以其...
在Spring Boot项目中,使用Velocity模板引擎可以自定义生成代码,如Mapper、Mapper.xml、Service、Controller等。Mapper是数据库操作层,通常配合MyBatis框架使用;Mapper.xml包含SQL语句;Service是业务逻辑层,...
Velocity是Apache软件基金会的一个开源项目,它是一种基于Java的模板引擎,用于将HTML、XML等静态页面与动态数据分离,使得开发者能够专注于业务逻辑,而设计师可以专注于页面布局和样式设计。Velocity通过简单的...
Apache Velocity是用Java编写的通用模板引擎。 有关Velocity的更多信息,请参阅HTML文档。 这是顶级目录的描述: velocity-engine-core/ The Velocity Engine core modulevelocity-engine-examples/ Several simple...
2. **创建Velocity上下文**:将数据模型放入Velocity Context,这是Velocity模板引擎工作的地方。 3. **加载模板**:读取模板文件并将其加载到Velocity引擎中。 4. **渲染模板**:使用上下文中的数据渲染模板,生成...
Velocity 是一种 Java 模板引擎技术,由 Apache 提出,是一种基于 Java 的模板引擎,允许任何人使用简单而强大的模板语言来引用定义在 Java 代码中的对象。Velocity 的主要功能是桥梁 Model 和 View 之间,作为它们...
本课程从velocity engine也就是velocity引擎开始, 先讲解velocity的基本使用以及基础语法 , 然后再讲解velocity 的进阶内容velocity Tools , 以及velocity作为web项目的视图改如何使用 , 每一部分都会有一个综合案例...