JSF简单介绍
| 阶段 | 说明 | 
| 恢复视图 | 为选定的视图找到或创建组件树。 一旦用户单击JSP页面上的链接或button,就会启动此阶段。JSF应用里的JSP页面被表示成一个组件树。JSF实现会进一步将这些组件链接到事件处理程序和验证程序,并将视图保存在FacesContext对象中,以备后面的处理过程所用。FacesContext对象包括了JSF用来管理当前会话中当前请求的GUI组件状态所须要的全部状态信息。 | 
| 应用请求值 | 使用请求中发送来的值来更新组件树的组件值。由于请求中发送来的值都是String类型的,所以在更新组件树的组件值之前,必须将这些值转换为对应类型。这个过程也是解码。若转换有错误,这些错误将加入到FacesContext对象。 | 
| 处理验证 | 当每一个组件的本地值被更新后,Lifecycle对象都会依据这些注冊组件的验证规则来验证这些值的合法性。 假设输入的值不符合验证规则,就会将验证错误加入至FacesContext对象,并将组件标记为无效。JSF将转至呈现响应阶段,并显示带有验证错误消息的视图。 假设没有遇到验证错误,JSF将进入下一阶段。 | 
| 更新模型值 | 更新与组件相关的后台bean(也叫管理bean)或者模型对象的值。仅仅有那些与组件值绑定在一起的Bean属性才会被更新。 | 
| 调用应用程序 | JSF控制器调用应用程序来处理应用程序级的事件,如提交一个表单。(此阶段可运行业务逻辑) | 
| 呈现响应 | 使用当前的显示技术(如JSP)显示选定的视图。 | 
| <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://java.sun.com/xml/ns/j2ee"  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4">  <display-name>guessNumber</display-name>  <servlet>     <servlet-name>Faces Servlet</servlet-name>     <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>     <load-on-startup>1</load-on-startup>  </servlet>  <servlet-mapping>     <servlet-name>Faces Servlet</servlet-name>     <url-pattern>*.faces</url-pattern>  </servlet-mapping> </web-app> | 
| package chapter5; import java.util.Random; public class UserNumberBean {     /** 用户输入的数字 */     private int userNumber = 0;     /** 正确答案数字 */     private int keyNumber = 0;     /** 最小值 */     private int minNum = 0;     /** 最大值 */     private int maxNum = 10;     /** 回应客户的信息字符串 */     private String responseStr;     public UserNumberBean() {          Random random = new Random();          keyNumber = random.nextInt(10);          System.out.println("正确数字是:" + keyNumber);     }     public int getUserNumber() {         return userNumber;     }     public int getKeyNumber() {         return keyNumber;     }     public int getMaxNum() {         return maxNum;     }     public int getMinNum() {         return minNum;     }     public String getResponseStr() {         if(userNumber == keyNumber){             return "您真聪明,您猜对了!";         }else{             return "对不起,您猜错了!不是"+ userNumber +"!";         }     }     public void setUserNumber(int userNumber) {         this.userNumber = userNumber;     }     public void setKeyNumber(int keyNumber) {         this.keyNumber = keyNumber;     }     public void setMaxNum(int maxNum) {         this.maxNum = maxNum;     }     public void setMinNum(int minNum) {         this.minNum = minNum;     }     public void setResponseStr(String responseStr) {         this.responseStr = responseStr;     } } | 
| <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE faces-config PUBLIC  "-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.1//EN"  "http://java.sun.com/dtd/web-facesconfig_1_1.dtd"> <faces-config xmlns="http://java.sun.com/JSF/Configuration"> <managed-bean>     <managed-bean-name[q1] >UserNumberBean</managed-bean-name>  <managed-bean-class[q2] >chapter5.UserNumberBean</managed-bean-class>     <managed-bean-scope[q3] >session</managed-bean-scope>  </managed-bean> </faces-config> | 
| <%@ page contentType="text/html; charset=GBK" %> <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %> <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %> <html> <head> <title>猜数字</title> </head> <body bgcolor="#ffffff"> <f:view>  <h:form id="helloForm">     <h2>请猜一个<h:outputText value="#{UserNumberBean.minNum}" />     至<h:outputText value="#{UserNumberBean.maxNum}" />的数字</h2> <h:inputText id="userNo"  value="#{UserNumberBean.userNumber}">      <f:validateLongRange minimum="#{UserNumberBean.minNum}"  maximum="#{UserNumberBean.maxNum}" />     </h:inputText> <h:commandButton id="submit" action="success" value="提交" /> <br/>     <h:message style="color:red;" id="errors1" for="userNo"/>  </h:form> </f:view> </body> </html> | 
| <%@ page contentType="text/html; charset=GBK" %> <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %> <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %> <html> <head> <title>结果</title> </head> <body bgcolor="#ffffff"> <f:view>  <h:form id="responseForm">     <h2>      <h:outputText id="result" value="#{UserNumberBean.responseStr}" />     </h2>     <h:commandButton id="back" value="返回" action="success" />  </h:form> </f:view> </body> </html> | 
| <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE faces-config PUBLIC "-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.1//EN" "http://java.sun.com/dtd/web-facesconfig_1_1.dtd"> <faces-config xmlns="http://java.sun.com/JSF/Configuration">  <managed-bean>     <managed-bean-name>UserNumberBean</managed-bean-name>    <managed-bean-class>chapter5.UserNumberBean</managed-bean-class>     <managed-bean-scope>session</managed-bean-scope>  </managed-bean> <navigation-rule>     <from-view-id[q4] >/guess.jsp</from-view-id>       <from-outcome[q6] >success</from-outcome>       <to-view-id[q7] >/response.jsp</to-view-id>     </navigation-case>  </navigation-rule>  <navigation-rule>     <from-view-id>/response.jsp</from-view-id>     <navigation-case>       <from-outcome>success</from-outcome>       <to-view-id>/guess.jsp</to-view-id>     </navigation-case>  </navigation-rule> </faces-config> | 
| <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %> <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %> | 
| <h:inputText id="userNo" value="#{UserNumberBean.userNumber}">    <f:validateLongRange minimum="#{UserNumberBean.minNum}" maximum="#{UserNumberBean.maxNum}" /> </h:inputText> | 
JSF简单介绍的更多相关文章
- Freemarker概念简单介绍
		Freemarker概念简单介绍 1. Freemarker是什么 模板引擎:一种基于模板的,用来生成输出文本的通过工具. 基于java开发包和类库 2. Freemarker能做什么 MVC ... 
- [原创]关于mybatis中一级缓存和二级缓存的简单介绍
		关于mybatis中一级缓存和二级缓存的简单介绍 mybatis的一级缓存: MyBatis会在表示会话的SqlSession对象中建立一个简单的缓存,将每次查询到的结果结果缓存起来,当下次查询的时候 ... 
- 利用Python进行数据分析(7) pandas基础: Series和DataFrame的简单介绍
		一.pandas 是什么 pandas 是基于 NumPy 的一个 Python 数据分析包,主要目的是为了数据分析.它提供了大量高级的数据结构和对数据处理的方法. pandas 有两个主要的数据结构 ... 
- 利用Python进行数据分析(4) NumPy基础: ndarray简单介绍
		一.NumPy 是什么 NumPy 是 Python 科学计算的基础包,它专为进行严格的数字处理而产生.在之前的随笔里已有更加详细的介绍,这里不再赘述. 利用 Python 进行数据分析(一)简单介绍 ... 
- yii2的权限管理系统RBAC简单介绍
		这里有几个概念 权限: 指用户是否可以执行哪些操作,如:编辑.发布.查看回帖 角色 比如:VIP用户组, 高级会员组,中级会员组,初级会员组 VIP用户组:发帖.回帖.删帖.浏览权限 高级会员组:发帖 ... 
- angular1.x的简单介绍(二)
		首先还是要强调一下DI,DI(Denpendency Injection)伸手获得,主要解决模块间的耦合关系.那么模块是又什么组成的呢?在我看来,模块的最小单位是类,多个类的组合就是模块.关于在根模块 ... 
- Linux的简单介绍和常用命令的介绍
		Linux的简单介绍和常用命令的介绍 本说明以Ubuntu系统为例 Ubuntu系统的安装自行百度,或者参考http://www.cnblogs.com/CoderJYF/p/6091068.html ... 
- iOS-iOS开发简单介绍
		概览 终于到了真正接触IOS应用程序的时刻了,之前我们花了很多时间去讨论C语言.ObjC等知识,对于很多朋友而言开发IOS第一天就想直接看到成果,看到可以运行的IOS程序.但是这里我想强调一下,前面的 ... 
- iOS开发多线程篇—多线程简单介绍
		iOS开发多线程篇—多线程简单介绍 一.进程和线程 1.什么是进程 进程是指在系统中正在运行的一个应用程序 每个进程之间是独立的,每个进程均运行在其专用且受保护的内存空间内 比如同时打开QQ.Xcod ... 
随机推荐
- lsof查看进程打开了哪些文件目录套接字
			lsof查看进程打开了哪些文件目录套接字 
- C#代码 json类
			using System; using System.Collections.Generic; using System.Collections; using System.Text; using S ... 
- VC连接SQL server2005
			VC连接SQL server2005 1.创建一个MFC对话框程序 界面如下 2.创建一个成员变量 这个成员变量用于连接数据库 3.响应按钮函数OnButton1() 在响应函数里主要有三个函数 函数 ... 
- 借贷宝推广得现金是真的_注册就送人民币20元_邀请码CRJYQTK
			动动手指,20元立即到手.即优步uber打车和滴滴专车豪投数亿元争夺专车市场之后,一款名为借贷宝的APP推广在网上流传开来,目前主要看重的就是它的推广力度,豪投20亿让大众来推广.简单流程:下载借贷宝 ... 
- UVA11387 - The 3-Regular Graph(推理)
			题目链接 题意:给n个点,问能否画出一个无向图.且每一个顶点连接3条边.假设能够的话输出连接的边. 思路:当添加一条边时,总的无向图的度数会添加2,所以度数之和n*2为偶数.当n为奇数时,度数之和为奇 ... 
- [置顶] ANT build.xml文件详解
			Ant的优点 跨平台性.Ant是用Java语言编写的,所示具有很好的跨平台性. 操作简单.Ant是由一个内置任务和可选任务组成的. Ant运行时需要一个XML文件(构建文件). Ant通过调用targ ... 
- JavaScript中的setAttribute用法
			我们经常需要在JavaScript中给Element动态添加各种属性,这可以通过使用setAttribute()来实现,这就涉及到了浏览器的兼容性问题. setAttribute(string nam ... 
- tomcat 发布webService
			<!-- tomcat发布webservice时所需jar --> <dependency> <groupId>com.sun.xml.ws</groupId ... 
- Unicode解码、URL编码/解码
			+ (NSString *) stringByReplaceUnicode:(NSString *)string { NSMutableString *convertedString = [strin ... 
- C# 2 闰年平年 老狼几点了
			作业 第一题 老狼几点了.凌晨,上午,下午,晚上. static void Main (string[] args) { //输入 Console.Write("老狼老狼几点了?" ... 
