您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > 第12章 一个简单的JSF应用
第12章一个简单的JSF应用主要内容:功能要求开发步骤运行结果请求处理生命周期1312.1功能要求功能:从页面输入用户名称和密码,然后提交;如果用户名和密码正确,则显示用户登录成功,否则显示错误信息,并让用户重新登录。要求:对页面输入的用户名称和密码进行验证,要求用户名和密码不能为空,密码的长度不少于6位。12.2开发步骤开发一个简单的JSF应用的基本任务:创建使用UI组件和core标签的页面。在应用配置资源文件中定义页面导航。开发辅助bean。将bean声明添加到应用配置资源文件中。※各任务可以顺序进行,也可以多人同时进行,但要注意协作。开发之前先做好初步设计。初步设计页面设计:登录页面:loginForm.jsp在这个页面中要求用户输入用户名和密码,然后提交数据。因此需要设置两个文本框,还有一个提交按钮。登录成功页面:welcome.jsp在这个页面中显示当前登录用户的姓名,并显示“登录成功,欢迎你!!!”。登录失败页面:error.jsp在这个页面中显示登录失败的信息,显示“用户名或密码错误!”,并显示“重新登录”超链接。初步设计辅助Bean设计UserValidator.java属性:无。方法:判断用户名和密码是否正确的validator方法。LoginBean.java属性:用户名,用户密码方法:对用户名和密码进行操作的getter和setter方法,并调用UserValidator的方法进行校验。开发步骤创建Web工程工程名:login添加对JSF的支持:在Web工程上右键点击,选择MyEclipse|addJSFCapabilities编写辅助bean新建包validator,并在包中新建一个类UserValidator.java,添加对用户名和密码的相关校验代码。新建包backing,在这个包中新建一个类LoginBean.java,添加相关代码。配置辅助Bean在JSF应用资源配置文件faces-config.xml中配置前面定义的辅助bean。这样,页面制作人员就可以在页面上的组件标签中使用统一EL访问bean属性。配置步骤如下:在工程login上右击,选择“new|other...”选择“MyEclipse|Web-JSF|ManagedBean”,然后点击Next输入各域值:Name=userValidator,Scope=session,Class=validator.UserValidator,点击Finish继续用同样的方法配置另一个辅助Bean。在这个Bean中还需添加属性uv并设置其值为EL表达式:#{userValidator}如图12.9-12.14所示。定义页面导航首先创建3个JSP文件,它们是:登录页面(loginForm.jsp)、登录成功页面(welcome.jsp)、登录失败页面(error.jsp)。创建时选择的模板为“DefaultJSFTemplate”,暂时不输入任何代码。定义页面导航的方法有两种,一种是通过菜单“New|Others”→“MyEclipse|Web-JSF|NavigationRule”进行,另一种是在打开faces-config.xml文件后在其design页面中点击右键,选择NavigationRule进行。设置过程如图12.15-12.21所示。※完成后就可在faces-config.xml的Source和Design页面中查看和修改相关设置。编写JSP页面向JSP中添加JSF组件的方法有两种:一种是使用MyEclipse提供的图形化设计工具,直接将相应的组件(例如,文本框、按钮等)拖到JSP页面中;另一种方法是直接使用编辑器将对应的代码写入JSP文件中。添加代码loginForm.jspwelcome.jsperror.jsp配置部署描述符?xmlversion=1.0encoding=UTF-8?web-appxmlns=:xsi==2.4xsi:schemaLocation=://java.sun.com/xml/ns/j2ee/web-app_2_4.xsdcontext-paramparam-namejavax.faces.CONFIG_FILES/param-nameparam-value/WEB-INF/faces-config.xml/param-value/context-paramservletservlet-nameFacesServlet/servlet-nameservlet-classjavax.faces.webapp.FacesServlet/servlet-classload-on-startup0/load-on-startup/servletservlet-mappingservlet-nameFacesServlet/servlet-nameurl-pattern*.faces/url-pattern/servlet-mapping/web-app运行结果在Weblogic上部署login应用以后,启动Weblogic。然后打开浏览器,在地址栏中输入:注意:输入地址的时候,扩展名必须与web.xml中设置的一致,否则会提示“CannotfindFacesContext”。12.4JSF标准请求处理生命周期各阶段分析1)重建视图(RestoreView):生成jsp视图,jsf框架将访问的*.faces转换为*.jsp视图返回客户端2)应用请求值(ApplyRequestValues):实例化ManagedBean,并获得请求中的参数值。3)执行验证(ProcessValidations):在ManagedBean对象的属性赋值前对请求参数值进行验证4)更新模型值(UpdateModelValues):对ManagedBean对象的属性进行赋值初始化5)调用应用程序(InvokeApplication):调用ManagedBean对象(控制器)的Action方法执行相关的业务逻辑(调用模型层)6)绘制响应页面(RenderResponse):请求处理完毕后,根据不同的结果生成页面返回给客户端。重建视图阶段当对一个JSF页面发出请求的时候,例如点击超链接或者按钮的时候,JSF实现开始重建视图阶段。如果对页面的请求是一个initial请求,JSF实现在这个阶段将创建一个空视图,生命周期直接跳到呈现响应阶段。当页面在再次返回(postback)的时候会进行处理,空视图会被填充。如果对页面的请求是一个postback,对应这个页面的视图已经存在。在这个阶段,JSF实现利用保存在客户端或者服务器端的状态信息重建视图。应用请求值阶段在组件树被重建以后,树中的每个组件使用decode方法从请求参数中提取新值。然后把值存储在本地组件中。如果值转换失败,就会产生与组件相关的错误消息并放入消息队列中。这些消息在呈现响应阶段显示出来,同时显示的还有处理验证阶段生成的所有验证信息。处理验证阶段在这个阶段,JSF实现处理组件上注册的所有验证器。它检查指定验证规则的组件属性,并将这些规则与为组件存储的本地值进行比较。如果本地值无效,JSF实现将在FacesContext实例上添加一个错误消息,生命周期直接跳到呈现响应阶段,在页面再次呈现的时候就会显示错误消息。在loginForm.jsp页面中,JSF实现处理两个验证器。更新模型值阶段在JSF实现确定数据有效之后,它遍历组件树并将对应的服务器端对象属性设置为组件的本地值。JSF实现只更新由输入组件的value属性指向的bean属性。在这个阶段,LoginBean的username属性被设置为username组件的本地值,password属性被设置为password组件的本地值。调用应用阶段在这个阶段,JSF实现处理任何应用级的事件,例如提交一个表单或者链接到其他页面。login例子中的loginForm.jsp页面有一个与UICommand组件相关的应用级的事件。呈现响应阶段在这个阶段,如果应用使用JSP页面,那么JSF实现将呈现页面的权限委派给JSP容器。当JSP容器遍历页面中的标签的时候,组件将呈现它们自己。在视图中的内容呈现以后,响应的状态被保存下来,以便后续的请求能够访问它并且在重建视图阶段能访问它。本章小结功能要求开发步骤运行结果请求处理生命周期下一章UI组件
本文标题:第12章 一个简单的JSF应用
链接地址:https://www.777doc.com/doc-3956601 .html