|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
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的页面):- Hello$name!Welcometo$siteworld!
复制代码 2.Java程序部分
上面是Java代码:- 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());}}
复制代码 将这两个文件放在统一个目次下,编译运转,了局是:- HelloEiffelQiu!Welcometohttp://www.eiffelqiu.comworld
复制代码 为了包管运转顺遂,请从Velocity的网站http://jakarta.apache.org/velocity/高低载Velocity的运转包,并将个中VelocityJar包的路径放在体系的Classpath中,如许就能够顺遂编译和运转以上程序了。
这个程序很复杂,可是它能分明地申明Velocity的基础事情道理。程序中的别的部分基础上很流动,最次要的部分在以下几段代码。
◆Velocity猎取模板文件,失掉模板援用:
- Templatet=ve.getTemplate("hellosite.vm");
复制代码 ◆初始化情况,并将数据放进情况:
- VelocityContextcontext=newVelocityContext();context.put("name","EiffelQiu");context.put("site","http://www.eiffelqiu.com");
复制代码 ◆初始化Velocity模板引擎:
- VelocityEngineve=newVelocityEngine();ve.init();
复制代码 ◆将情况变量和输入部分分离:
- 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性能上肯定会站上风的。 |
|