第11章JSF框架JavaEE5实用教程主要内容为什么要使用JSF技术?什么是JSF应用?JSF体系结构JSF的组成JSF的UI组件库JSF的标准请求处理生命周期一个简单应用9.1为什么要使用JSF技术JSF是一种用于构建基于Java的Web应用程序的服务器端用户接口(UI)组件框架。它提供了一种以组件为中心来开发JavaWeb用户界面的方法,从而简化了开发。JSF还将结构良好的模型-视图-控制器(MVC)设计模式集成到它的体系结构中,确保了应用程序具有更高的可维护性。由于JSF是通过JCP开发的一种Java标准,因此开发工具提供商完全能够为JavaServerFaces提供易于使用的、高效的可视化开发环境。9.2什么是JSF应用JSF定义了一组UI组件,以及一组标准的API。所有UI组件都可以直接用在网页里,而且大部分组件几乎都是HTMLform系列标记的翻版。API可用来扩充原有的标准组件,也可以开发全新的组件。连接在组件上的验证器,不仅能够检验用户输入的数据,还能自动将输入数据传递给应用对象。每当用户做点击链接或按下按钮等操作时便会触发事件处理器,而事件处理器可以改变其它组件的状态,或是运行某段后台程序。借助一个可插入的导航处理器,事件处理器可以控制接下来要显示哪一个网页。9.3JSF体系结构JSF的主要优势之一就是它既是JavaWeb用户界面标准又是严格遵循MVC设计模式的框架。FacesServletJSF页面ClientsJavaEEContainerApplicationDataControllerViewModel当一个事件发生的时候(比如,用户单击了一个按钮),事件通知通过HTTP发往服务器。服务器端使用名为FacesServlet的特殊的servlet对该事件进行处理。JSP页面FacesServlet事件监听器JSF请求必须交给FacesServlet来处理,这是在web应用的部署描述符web.xml中指定的。servletservlet-nameFacesServlet/servlet-nameservlet-classjavax.faces.webapp.FacesServlet/servlet-classload-on-startup0/load-on-startup/servletservlet-mappingservlet-nameFacesServlet/servlet-nameurl-pattern*.faces/url-pattern/servlet-mapping9.4JSF的组成通常JavaWeb应用包含:包含应用特定的功能和数据的JavaBean组件事件监听器页面,例如JSP页面服务器端的辅助类,例如数据库访问bean此外,JSF应用还包含一个用来在页面上呈现UI组件的自定义标签库一个用来描述事件处理器、验证器和其它动作的自定义标签库在服务器上作为有状态对象的UI组件Backingbeans,它定义了UI组件的属性和功能验证器、转换器、事件监听器和事件处理器一个应用资源配置文件,用来配置应用资源9.5JSF的UI组件库JavaServerFaces规范在其参考实现中提供了一组基本的UI组件,包括两个组件库:HTML组件库——它大部分映射了标准的HTML输入元素Core库——它辅助常见的应用程序开发任务(如,国际化和验证/转换输入数据)。JSFAPI还提供了扩展和创建定制JSFUI组件的功能。常用的JSF组件库SUNJSFOracleADFFacesApacheMyFaces9.6JSF的标准请求处理生命周期JSF请求-响应生命周期的步骤重建视图FacesRequest应用请求值处理事件处理验证响应完成处理事件响应完成呈现响应处理事件调用应用响应完成处理事件响应完成更新模型值呈现响应验证错误/转换错误/呈现响应转换错误/呈现响应请求处理生命周期处理两种请求:initial请求和postback请求。当生命周期处理Initial请求的时候,仅仅执行重建视图和呈现响应阶段,因为用户没有输入或动作需要处理。相反,当生命周期处理postback请求的时候,会执行所有阶段。JSF的标准请求处理生命周期执行以下六个阶段:1.重建视图阶段(restoreview)2.应用请求值阶段(applyrequestvalues)3.处理验证阶段(processvalidations)4.更新模型值阶段(updatemodelvalues)5.调用应用阶段(invokeapplication)6.呈现响应阶段(renderresponse)9.7一个简单JSF应用功能:从页面输入用户名称和密码,然后提交;如果用户名和密码正确,则显示用户登录成功,否则显示错误信息,并让用户重新登录。要求:对页面输入的用户名称和密码进行验证,要求用户名和密码不能为空,密码的长度不少于6位。页面设计登录页面:loginForm.jsp在这个页面中要求用户输入用户名和密码,然后提交数据。因此需要设置两个文本框,还有一个提交按钮。登录成功页面:welcome.jsp在这个页面中显示当前登录用户的姓名,并显示“登录成功,欢迎你!!!”。登录失败页面:error.jsp在这个页面中显示登录失败的信息,显示“用户名或密码错误!”,并显示“重新登录”超链接。辅助BeanUserValidator.java属性:无。方法:判断用户名和密码是否正确的validator方法。LoginBean.java属性:用户名,用户密码方法:对用户名和密码进行操作的getter和setter方法。