JSF原理介绍
来源:互联网 发布:mysql如何删除数据库 编辑:程序博客网 时间:2024/05/19 14:16
JSF(Java Server Faces)的本质也是Servlet,只不过实现Servlet的方式不同而已
那到底JSF是怎样的Servlet呢,有比较才会有不同。总结相同,区分不同。
首先,JSF与经典的Servlet请求处理的流程不同。熟悉Servlet的程序员都清楚,Servlet的请求处理是由界面的submit提交按钮将界面表单提交给后台,服务器通过request,session等对象获取表单数据,最后通过response对象将结果返回给界面。Servlet请求处理流程,是需要我们程序员去关注去实现的。
而JSF请求过程中不需要通过request等变量获取值,它将浏览器端的页面变量与服务端的java对象对应起来了,依靠事件驱动完成请求。程序员使用JSF再也不用关心如何在给后台传值如何在界面取值了。直接在界面中使用由数据的ManagedBean就行了。
其次,Servlet接口实现方式不同
JSF的核心类javax.faces.webapp.FacesServlet,直接实现Servlet接口,该类定义为final类型,不希望开发人员去扩展实现,其已提供完整的对请求处理的解决方案。
httpServlet是abstract的,目的是让子类去实现,因此其他框架是对Servlet类的扩展实现。
还有,核心方法也不同
HttpServlet根据request.getMethod的请求类型区分,是doPost还是doGet。
facesServlet会交由生命周期接口处理,由一下六个阶段。
1:恢复视图阶段负责创建或者恢复视图,视图指UIViewRoot对象,是UIComponent对象的子类,视图组件是请求对应页面的组件树的根(面向组件架构)
2:接受请求值阶段将页面元素对应组件树上的组件值。
3:处理验证阶段负责校验组件树上的组件值。主要是验证界面上定义了验证器组件的数值。一旦约束校验不通过,会抛出validatorException
4:更新模型值阶段将组件树上的值对应ManagedBean对象属性值。也就是为MBean赋值过程。
5:调用应用阶段负责处理自定义事件,界面上的action指向MBean中的方法,action对应的方法,是在该阶段被调用的。
6:渲染应答阶段:结果返给客户端浏览器
JSF的主要优势之一就是它既是Java web应用程序的用户界面标准又是严格遵循模型-视图-控制器(MVC)设计模式的框架。用户界面代码(视图)与应用程序数据和逻辑(模型)的清晰分离是JSF应用程序更易于管理。
为了准备提供页面对应用程序数据访问的JSF上下文和防止对页面未授权或不正确的访问,所有与应用程序的用户交互均由一个前端FacesServlet(控制器)来处理。
JSF的生命周期:
FacesServlet充当用户和JSF应用程序之间的纽带,它在明确限定的JSF生命周期(规定了用户请求之间的整个事件流)的范围内工作。
1:当JSF页面上的一个事件发生时(比如:用户单击一个按钮),事件通知通过HTTP发往服务器,服务器端使用FacesServlet这个特殊的Servlet处理该通知。
2:FacesServlet一接收到用户的请求就创建个FacesContext对象(JSF上下文,它存放了应用程序的所有数据),在处理过程中,主要修改的就是这个FaceContext对象。
3:接着就是处理过程,处理器是个叫做Lifecycle的对象,FacesServlet把控制器转交给Lifecycle对象。
参考博客:http://blog.csdn.net/lishuangzhe7047/article/details/53345937
- JSF 原理简要介绍
- JSF原理介绍
- JSF详解(从jsf的运行原理开始介绍了jsf)
- JSF(JavaServer Faces) 介绍
- JSF初步介绍
- JSF(JavaServer Faces) 介绍
- jsf client validators介绍
- jsf 标签介绍1
- 简单介绍JSF生命周期
- JSF介绍(转)
- JSF之介绍篇
- JSF与primerfaces---JSF简单原理说明
- Mastering JaveServerFaces(JSF)介绍
- JSF入门 一 介绍 安装
- JSF入门 一 介绍 安装
- JSF Converter介绍与使用
- JSF Converter介绍与使用
- jsf in action 学习1-jsf 的介绍
- CUDA学习笔记(4)光线追踪(常量内存)
- Codeforces 873D. Merge Sort 分治 + 构造
- JDK7中Lock源码概述
- centOS7安装Apache
- 探究 Java 虚拟机栈
- JSF原理介绍
- 超简单的给RecyclerView加分割线
- NOIP复赛知识点复习:算法/数据结构模板
- 排序之冒泡排序
- C++将多态基类的析构函数声明为virtual的作用
- 关于HashMap底层的一些问题
- nltk参考文章
- 面试题总结 —— JAVA高级工程师(一)
- Android 学习笔记(四):videoView