JSF资料整理(一)

一、简介

   Web应用程式的开发与传统的单机程式开发在本质上存在著太多的差异,Web应用程式开发人员至今不可避免的必须处理HTTP的细节,而HTTP无状态的(stateless)本质,与传统应用程式必须维持程式运行过程中的资讯有明显的违背,再则Web应用程式面对网站上不同的使用者同时的存取,其执行绪安全问题以及资料验证、转换处理等问题,又是复杂且难以解决的。

  另一方面,本质上是静态的HTML与本质上是动态的应用程式又是一项违背,这造成不可避免的,处理网页设计的美术人员与程式设计人员,必须被彼此加入至视图元件中的逻辑互相干扰,即便一些视图呈现逻辑以标籤的方式呈现,试图展现对网页设计美术人员的亲切,但它终究必须牵涉到相关的流程逻辑。

  有很多方案试著解决种种的困境,而各自的著眼点各不相同,有的从程式设计人员的角度来解决,有的从网页设计人员的角度来解决,各种的框架被提出,所造成的是各种不统一的标籤与框架,為了促进產能的整合开发环境(IDE)难以整合这些标籤与框架,另一方面,开发人员的学习负担也不断的加重,他们必须一人瞭解多个角色的工作。

  JavaServer Faces 的提出在试图解决这个问题,它试图在不同的角度上提供网页设计人员、应用程式设计人员、元件开发人员解决方案,让不同技术的人员可以彼此合作又不互相干扰,它综合了各家厂商现有的技术特点,由Java Community Process(JCP)团队研究出来的一套标准,并在2004年三月发表了JavaServer Faces 1.0实作成果。

  从网页设计人员的角度来看,JavaServer Faces提供了一套像是新版本的HTML标签,但它不是静态的,而是动态的,可以与后端的动态程序结合,但网页设计人员不需要理会后端的动态部份,网页设计人员甚至不太需要接触JSTL这类的标签,也可以动态的展现资料(像是动态的查询表格内容),JavaServer Faces提供标准的标签,这可以与网页编辑程序结合在一起,另一方面,JavaServer Faces也允许您自订标签。

  从应用程式设计人员的角度来看,JavaServer Faces提供一个与传统应用程式开发相类似的模型(当然因某些本质上的差异,模型还是稍有不同),他们可以基于事件驱动来开发程序,不必关心HTTP的处理细节,如果必须处理一些视觉元件的属性的话,他们也可以直接整合开发环境上拖拉这些元件,点选设定元件的属性,JavaServer Faces甚至还为应用程式设计人员处理了对象与字符串(HTTP传送本质上就是字符串)间不匹配的转换问题。

  从UI元件开发人员的角度来看,他们可以设计通用的UI元件,让应用程序的开发产量提高,就如同在设计Swing元件等,UI开发人员可以独立开发,只要定义好相关的属性选项来调整细节,而不用受到网页设计人员或应用程序设计人员的干扰。

  三个角色的知识领域原则上可以互不干扰,根据您的角色,您只要了解其中一个知识领域,就可以运用JavaServer Faces,其它角色的知识领域您可以不用了解太多细节。

  当然,就其中一个角色单独来看,JavaServer Faces隐藏了许多细节,若要全盘了解,其实JavaServer Faces是复杂的,每一个处理的环境都值得深入探讨,所以学习JavaServer Faces时,您要选择的是通盘了解,还是从使用的角度来了解,这就决定了您学习时所要花费的心力。

  要使用JSF,首先您要先取得JavaServer Faces参考实现(JavaServer Faces Reference Implementation),在将来,JSF会与Container整合在一起,届时您只要下载支持的Container,就可以使用JSF的功能。

  请至 JSF 官方网站的 下载区 下载参考实现,在下载压缩档并解压缩之后,将其 lib 目录下的 jar 文件复制到您的Web应用程式的/WEB-INF/lib目录下,另外您还需要 jstl.jar 与 standard.jar 文件,这些文件您可以在 sample 目录下,解压缩当中的一个范例,在它的/WEB-INF/lib目录下找到,将之一并复制至您的Web应用程式的/WEB-INF/lib目录下,您总共需要以下的档案:

  1. * jsf-impl.jar
  2.     * jsf-api.jar
  3.     * commons-digester.jar
  4.     * commons-collections.jar
  5.     * commons-beanutils.jar
  6.     * jstl.jar
  7.     * standard.jar

  接下来配置Web应用程式的web.xml,使用JSF时,所有的请求都要经过FacesServlet来处理,您可以如下定义:

web.xml
  1. <?xml version="1.0" encoding="UTF-8"?>
  2.  <web-app xmlns="http://java.sun.com/xml/ns/j2ee"
  3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4.     xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
  5.     http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
  6.     version="2.4">
  7.  
  8.     <description>
  9.         JSF Demo
  10.     </description>
  11.     <display-name>JSF Demo</display-name>
  12.     <servlet>
  13.         <servlet-name>Faces Servlet</servlet-name>
  14.         <servlet-class>
  15.             javax.faces.webapp.FacesServlet
  16.         </servlet-class>
  17.         <load-on-startup>1</load-on-startup>
  18.     </servlet>
  19.    
  20.     <servlet-mapping>
  21.         <servlet-name>Faces Servlet</servlet-name>
  22.         <url-pattern>*.faces</url-pattern>
  23.     </servlet-mapping>
  24.    
  25.     <welcome-file-list>
  26.         <welcome-file>index.html</welcome-file>
  27.     </welcome-file-list>
  28.  </web-app>

  在上面的定义中,我们将所有.faces的请求交由FaceServlet来处理,FaceServlet会唤起相对的.jsp网页,例如请求是/index.faces的话,则实际上会唤起/index.jsp网页,完成以上的配置,您就可以开始使用JSF了。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值