仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 515|回复: 10
打印 上一主题 下一主题

[学习教程] JAVA教程之用Apache Velocity模板引擎速造网站

[复制链接]
兰色精灵 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:10:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
首先java功能强大的背后是其复杂性,就拿web来说,当今流行的框架有很多,什么struts,spring,jQuery等等,而这无疑增加了java的复杂性。apache|模板  基于Java的网站开辟,良多人都接纳JSP作为前端网页制造的手艺,特别是在国际。这类手艺一般会存在一些成绩,能够经由过程复杂地剖析网站开辟历程来看看这些成绩。一般网站开辟接纳以下两种体例:

  ◆网站功效断定后,由美工计划网页的UI(界面)部分,然后由程序员在其上到场代码显现逻辑(好比轮回、判别显现数据了局)。这就是一般的JSP页面制造,固然这部分能够由美工完成模板,然后由JSP工程师以它为原型创立响应的JSP页面。

  ◆网站功效断定后,由美工计划网页的UI(界面)部分,然后由网页制造职员在其上到场代码显现逻辑(好比轮回、判别显现数据了局)。在这一步的JSP页面制造中,网页制造职员一般只必要懂JavaScript和HTML,在工程师的引导放学会怎样嵌进JSPtaglib标志,然后以美工的模板为原型制造JSP网页。

  明显后一种体例要比前一种体例合作明白。但是在良多小公司,大概项目告急的情形下,JSP网页制造和背景程序开辟都是统一团体,如许无疑加年夜了程序员的包袱。后一种情形也有两个弱点,一是网页制造职员必需学会怎样利用JSPtaglib,这将加年夜网页制造职员的包袱;二是假如页面由于客户的请求从头计划,那末不管哪一种情形,网页制造职员都要将显现逻辑从头嵌进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用得最多的仍是在基于JavaServlet的网页程序中做天生网页的引擎,以替换JSP等手艺。除利用对照简单外,它供应了壮大的模板言语来显现和操纵数据。注重,不是天生数据,这点很主要,由于天生事情应当是程序逻辑的部分。

  Velocity十分合适在J2EE(Java2Platform,EnterpriseEdition)的网站开辟中替换JSP,做输入页面的手艺事情。固然JSP包括在J2EE标准中,可是J2EE自己其实不必要JSP。

  用Velocity做网页

  Velocity是怎样事情的呢?固然年夜多半Velocity的使用都是基于Servlet的网页制造,可是为了申明Velocity的利用,这里将接纳更通用的JavaApplication来讲明它的事情道理。

  任何Velocity的使用都包含模板制造和程序部分两个方面。依照常规,接纳HelloWorld来作为第一个程序的示例。

  1.模板制造模板示例hellosite.vm的内容以下(固然其不是以HTML为主,但很简单改成一个HTML的页面):
  1. Hello$name!Welcometo$siteworld!
复制代码
  2.Java程序部分

  上面是Java代码:
  1. importjava.io.StringWriter;importorg.apache.velocity.app.VelocityEngine;importorg.apache.velocity.Template;importorg.apache.velocity.VelocityContext;publicclassHelloWorld{publicstaticvoidmain(String[]args)throwsException{/*first,getandinitializeanengine*/VelocityEngineve=newVelocityEngine();ve.init();/*next,gettheTemplate*/Templatet=ve.getTemplate("hellosite.vm");/*createacontextandadddata*/VelocityContextcontext=newVelocityContext();context.put("name","EiffelQiu");context.put("site","http://www.eiffelqiu.com");/*nowrenderthetemplateintoaStringWriter*/StringWriterwriter=newStringWriter();t.merge(context,writer);/*showtheWorld*/System.out.println(writer.toString());}}
复制代码
  将这两个文件放在统一个目次下,编译运转,了局是:
  1. HelloEiffelQiu!Welcometohttp://www.eiffelqiu.comworld
复制代码
  为了包管运转顺遂,请从Velocity的网站http://jakarta.apache.org/velocity/高低载Velocity的运转包,并将个中VelocityJar包的路径放在体系的Classpath中,如许就能够顺遂编译和运转以上程序了。
  这个程序很复杂,可是它能分明地申明Velocity的基础事情道理。程序中的别的部分基础上很流动,最次要的部分在以下几段代码。

  ◆Velocity猎取模板文件,失掉模板援用:

  
  1. Templatet=ve.getTemplate("hellosite.vm");
复制代码
  ◆初始化情况,并将数据放进情况:

  
  1. VelocityContextcontext=newVelocityContext();context.put("name","EiffelQiu");context.put("site","http://www.eiffelqiu.com");
复制代码
  ◆初始化Velocity模板引擎:

  
  1. VelocityEngineve=newVelocityEngine();ve.init();
复制代码
  ◆将情况变量和输入部分分离:

  
  1. StringWriterwriter=newStringWriter();t.merge(context,writer);/*showtheWorld*/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那样由于一个无穷轮回语句而毁失落体系的情形。

你说是sun公司对她研究的透还是微软?针对自己工具开发的.net性能上肯定会站上风的。
admin 该用户已被删除
沙发
发表于 2015-1-20 15:47:26 | 只看该作者
《JAVA语言程序设计》或《JAVA从入门到精通》这两本书开始学,等你编程有感觉的时候也可以回看一下。《JAVA读书笔记》这本书,因为讲的代码很多,也很容易看懂,涉及到面也到位。是你学习技术巩固的好书,学完后就看看《JAVA编程思想》这本书,找找一个自己写的代码跟书上的代码有什么不一样。
活着的死人 该用户已被删除
板凳
发表于 2015-1-22 08:36:23 | 只看该作者
象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。
变相怪杰 该用户已被删除
地板
发表于 2015-1-26 11:12:47 | 只看该作者
那么我书也看了,程序也做了,别人问我的问题我都能解决了,是不是就成为高手了呢?当然没那么简单,这只是万里长征走完了第一步。不信?那你出去接一个项目,你知道怎么下手吗,你知道怎么设计吗,你知道怎么组织人员进行开发吗?你现在脑子里除了一些散乱的代码之外,可能再没有别的东西了吧!
精灵巫婆 该用户已被删除
5#
发表于 2015-2-4 15:09:24 | 只看该作者
另外编写和运行Java程序需要JDK(包括JRE),在sun的官方网站上有下载,thinking in java第三版用的JDK版本是1.4,现在流行的版本1.5(sun称作J2SE 5.0,汗),不过听说Bruce的TIJ第四版国外已经出来了,是专门为J2SE 5.0而写的。
因胸联盟 该用户已被删除
6#
发表于 2015-2-6 02:38:24 | 只看该作者
让你能够真正掌握接口或抽象类的应用,从而在原来的Java语言基础上跃进一步,更重要的是,设计模式反复向你强调一个宗旨:要让你的程序尽可能的可重用。
柔情似水 该用户已被删除
7#
发表于 2015-2-15 01:53:27 | 只看该作者
还好,SUN提供了Javabean可以把你的JSP中的 Java代码封装起来,便于调用也便于重用。
灵魂腐蚀 该用户已被删除
8#
发表于 2015-3-4 10:54:05 | 只看该作者
Java是一种计算机编程语言,拥有跨平台、面向对java
简单生活 该用户已被删除
9#
发表于 2015-3-11 18:27:09 | 只看该作者
是一种使网页(Web Page)产生生动活泼画面的语言
再现理想 该用户已被删除
10#
发表于 2015-3-19 07:03:05 | 只看该作者
我大二,Java也只学了一年,觉得还是看thinking in java好,有能力的话看英文原版(中文版翻的不怎么好),还能提高英文文档阅读能力。
小魔女 该用户已被删除
11#
发表于 2015-3-27 11:10:50 | 只看该作者
你快去找一份Java的编程工作来做吧(如果是在校学生可以去做兼职啊),在实践中提高自己,那才是最快的。不过你得祈祷在公司里碰到一个高手,而且他 还愿意不厌其烦地教你,这样好象有点难哦!还有一个办法就是读开放源码的程序了。我们知道开放源码大都出自高手,他们设计合理,考虑周到,再加上有广大的程序员参与,代码的价值自然是字字珠叽,铿锵有力(对不起,偶最近《金装四大才子》看多了)。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-23 12:50

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表