JSF的直观印象
如果我是一个项目经理,我当然最喜欢的是又会写代码,又会做美工,顺便最好还能陪我对战几把Warcraft的全能型选手——最好要的薪水也可以少一点。不过,自古文武全才型的选手就比较难得,手下能有一些懂一点美工的程序员或者懂一点代码的美工就已经很不错了。
因此,各种Web开发框架都希望做到的事情是尽量把页面设计和后台逻辑分离开。这里不仅仅涉及到MVC的实现,还在于开发者角色的分离。做美工的希望面向的是一个纯粹的页面设计工作,直接和HTML和CSS打交道会让他们非常舒服和得心应手;而程序员(不管是写页面上的JavaScript还是后台的Java /PHP/.Net…)一般都不喜欢去掺合页面的设计。
JSF一方面有自己的标签库,使得美工可以使用类HTML的标签来设计页面,这样可以实现和程序员角色的分离;另一方面,JSF希望不仅做到这样的分离,而且希望带给程序员在进行Web开发时,来回徜徉于可能远隔千里之外的浏览器和服务器之上的时候,能够有更好的体验。
让我们看一下下面在一个JSF页面中的一段标签:
在这里出现的“#{…}”中包含的内容是在JSF页面中绑定的服务器端的JavaBean对象,在这里是“user”。“user.verify”是“user”对象的一个监听。我们看一下与其相对应的Java代码吧:
public void verify(ActionEvent e)
{
this.outcome = "login";
}
这样的组合让JSF应用在页面点击那个“commandButton”的时候,服务器会监听到浏览器发来的请求,然后执行相应的代码,在这里让“user”对象的outcome属性值变成“login”。
至于页面怎么向服务器发送请求,服务器怎么监听到请求等等细节,JSF都已经封装了起来,无需你去多考虑和写多余的代码。你只需要派美工做好设计,然后使用JSF相应的标签组织好页面;然后派程序员把后台的功能具体实现了,JSF会帮你把浏览器和服务器联系起来,完成你设计的功能。
嗯,到这里你或许会已经对JSF有一个直观的印象了:MVC、页面绑定服务器端对象。当然,JSF更多的优点和特色还有很多,建议你找一本JSF的教材,内容肯定会很详细,我在这里就不多讲了。不过,关于JSF应用中比较重要的比如配置文件、事件处理、请求的生命周期等内容,我也会在后续的ADF讲解中根据需要做一些详细的解释的。好了,JSF这个幕后英雄就先了解到这里吧,让我们先尽早地接触到ADF再说。