扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
1.JSF的目标是简化编程,提高效率
事实胜于雄辩,我们不妨举个简单的例子,来说明JSF是如何简化编程,提高效率的。假设我们需要编写一个登录网页,页面上有两个文本输入框,一个用来输入用户名,另一个用来输入密码;网页上还有一个标有“确定”字样的按钮,用来提交网页。这样一个网页,用JSP如何编写,相信大家都很清楚,就不再赘述了,我们关心的是,用JSF如何完成这样一个网页。
按照常规设计思路,我们暂时不考虑界面,先从业务逻辑开始。显然,我们需要一段业务逻辑代码,来执行用户名和密码的校验。这在Java里非常简单,定义一个JavaBean,比如LoginBean,它有两个名为userName和pasword的String类的属性(按照JavaBean的规范,为这两个属性分别配备getter和setter方法),还有一个check的方法,这个方法包含业务相关的用户名和密码校验逻辑,它返回一个String值,例如“success”或“failure”,用来指示用户名和密码是否正确。LoginBean其实是业务范畴的东西,与框架无关。
现在看看,JSF是如何编写这样一个Login网页的。只需三个步骤:
◆将一个文本输入组件拖放到网页上,将其value属性设为“#{LoginBean.userName}”。这将在页面上生成一个文本输入框,让用户输入用户名,并自动存贮到LoingBean的userName属性中;
◆将另一个文本输入组件拖放到网页上,将其value属性设为“#{LoginBean.password}”。这将在页面上生成一个文本输入框,让用户输入密码,并自动存贮到LoginBean的password属性中;
◆将一个按钮组件拖放到网页上,将其action属性设为“#{LoginBean.check}”。这将在页面上生成一个按钮,以便用户提交网页,同时,自动调用LoginBean的check方法,校验用户名和密码的有效性。
完了,这就是你作为程序员需要编写的所有代码。
如果上面的描述过于简单,还不足以让你充分感受JSF的魅力,那么,再看看JSF值得称道的页面导航技术,也许能增加你对JSF的认识。在纯的JSF(指不混合JSP技术)应用中,你的代码中完全不需要用到URL,所有页面如何走向,你只需通过action方法返回一个适当的String就可以控制了。比如Login页面,如果action方法LoginBean.check返回的是“success”,用户将被带往登录成功页面;如果返回的是“failure”,则被带往一个登录错误页面,就是这么自然。你不需要为此编写任何代码,只需在工具中进行拖放式的配置就OK了,JSF知道该怎么做。
事实上,JSF对Java Web编程的简化远不止这些。它的自动类型转换,可以在用户输入和后台数据之间建立直接联系;它的默认的和可插入式的数据验证功能,可以保证数据输入的正确性;它的组件模型,允许程序员构造复杂的页面;它将数据和表现形式完全分开,使得网页编写人员可以用多种方式展示数据;它的事件驱动模式,允许程序员在适当的时候、适当的地方执行自己的业务逻辑等等,不一而足。
2.JSF是程序员的得力助手
正像在前文中提到过的那样,“牛人”们不能容忍你不懂JSP而“混入”Java Web程序员的队伍里,自有他们的道理,而你作为一个普通的Java Web程序员,从JSF起步,也有你不得已而为之的苦衷。毕竟,技术不是你唯一的追求,因为你还要追求爱情,而爱情是需要时间的。
你当然不希望整日整夜在电脑面前,写你的JSP页面,所以,必须有一种技术,让你能够以更快的速度,完成上司强压下来的工作量,你才能有时间,陪女朋友逛街街和看星星;工作也不是你的全部,因为你还有生活,而生活需要你付出一部分脑力,去思考油盐酱醋和衣食住行这样深邃的问题,所以,必须有一种技术,能够让你只动用你60%的智慧,就能轻松胜任你的工作。这正是JSF的目标。
如果你用Microsoft的Visual C++或者Borland的Delphi写过桌面程序,你会发现,用JSF编写网页和桌面程序的编程几乎没有区别了。这是一个巨大的进步,JSF为你屏蔽了Web的复杂性,将千奇百怪的各种页面,归纳并抽象成类似窗口的对象,从而使得在Java Web编程中,借鉴现代编程语言的组件概念,成为可能。试着和JSP比比,瞎子都能看到JSF在简化编程,提高效率方面的优势。事实上,JSF的长处远不止这些,借用一句广告语来总结,那就是:越熟悉Web,越信任JSF。
现在,也许可以回答开篇的那个问题了。JSF到底是什么?对于普通的程序员来说,JSF不是天外来客,它没有那么高贵,不需要你对它敬而远之;JSF也不是高高在上的神明,不需要你虔诚地供奉;JSF只是普通程序员的得力助手,把你不想干也不愿干的活儿交给JSF,不管是request还是response,不管是forward还是redirect,不管是post还是get,不管是class还是instance,也不管是session、request还是page,JSF自会默默地替你操心,忠实地完成其所负责的事情,让你集中所有的精力,对付老板阴郁的脸色、经理催命般的时间表和客户那永远在变化的需求。 |
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者