JSF实现了基于web的以下三个梦想
1.java程序员不必顾虑HTTP的细节,可以按照原本熟悉的事件驱动模型来设计后台系统,并通过一个能担保数据类型无误的数据传递接口将后台系统与前台界面结合在一起。
2.没有程序设计知识的网页美工人员也可以使用程序员提供的组件来布置用户界面的观感。
3.厂商可以研制更好用更一致的前台开发工具。
JSF(Java Server Faces)
它与Struts一样也是一个基于MVC模型的开源框架,另外增加了事件处理、验证器、转换器,最重要的是利用jsf中的用户界面组件标签库可以开发出漂亮的界面。
JSF的有缺点
优点:1.增加了事件处理这一功能。
2利用用户界面组件标签进行开发。
3在jsf的控制器ManagedBean本身是一个pojo类,它不像Struts中的Action受框架束缚,它不和jsf做任何绑定,脱离该框架也可以独立地运行。
4被纳入了JavaEE规范。
缺点:1jsf推出的时间不长,现在很多项目都不用jsf,支持的厂商也不是很多,文档资源也不是很丰富,使用的人群和成功案例不多。
2和Struts框架一样,JSF框架的机制也是相当的复杂,不易理解。
3验证功能没有Struts强大。
开发一个JSF应用需要JSF的jar包,在web.xml文件中配置jsf的主控制器(FacesServlet),需要提供一个jsf的配置文件(faces-config.xml)
JSF页面导航(服务器的内部跳转或者重定向)
1.静态导航(跳转页面是固定的)
<h:commandButton type="submit" value="start" action="导航结果的名字">
2.动态导航(根据一些判断之后才能决定跳转的页面)
Name:loginBean-->放置在scope中的属性名
若managedBean中的Action方法返回null或者返回结果没有在faces-config.xml中配置对应的规则,那么它还是会提交给自己。
JSF与Struts比较
基于MVC 使用用户界面组件 JavaEE规范 支持事件 控制器
Struts 是 否 否 否 ActionServlet(*.do)
JSF 是 是 是 是 FacesServlet(*.faces)
注:JSF中表单提交方式只有POST,没有GET。
JSF的简单控制流程
1.以get方式访问就jsf页面,获得form表单;
2.以post方式提交form表单
3.实例化bean(Managed Bean),把客户端提交的数据放到bean对象中
4.调用bean中的controller method
5.根据action controller method返回的结果选择相应的jsf页面作显示
生命周期:
重建视图:jsf框架将访问的*.faces转换为*.jsp视图返回客户端
应用请求值:实例化ManagedBean,并获得请求中的参数
执行验证:ManagedBean的属性赋值前对请求参数值进行验证
调用应用程序:调用控制器的Action方法执行相关的业务逻辑(调用模型层)
绘制响应页面:请求处理完毕后,根据不同的结果生成页面返回给客户端。
配置导航规则:
每一个nvaigation-rule作为一个导航规则,可以包含一个from-view-id和多个navigation-case。其中from-view-id代表请求来源页面;navigation-case中有两个子元素;from-outcome表示提交按钮的action属性值;to-view-id代表目标页面。
在bean中获取客户端提交数据的方式
1.让jsf框架把客户端提交的数据放到bean的属性中。
例如:
在jsp中这样调用:
<h:form>
loginName:<h:inputText value="#{userBean.loginName}"></inputText>
Password:<h:inputSecret value="#{userBean.password}"></inputSecret>
<h:commandButton action="#{userBean.login}" value="login"></h:commandButton>
</h:form>
在配置文件中这样:
<managed-bean>
<managed-bean-name>userBean</managed-bean-name>
<managed-bean-class>com.briup.bean.userBean</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
</managed-bean>
在bean中创建一个方法:
Public String login(){
If(!loginName.equal("ln")){
return "loginNameError";
}
If(!password.equal("")){
Return "passwordError";
}
Return "loginSuccess";
}
在配置文件中还要这样:
<navigation-rule>
<from-view-id>/navigation/login,jsp</from-view-id>
<navigation-case>
<from-outcome>loginNameError</from-outcome>
<to-view-id>/navigation/loginNameError.jsp</to-view-id>
</navigation-case>
<navigation-case>
<from-outcome>passwordError</from-outcome>
<to-view-id>/navigation/passwordError,jsp</to-view-id>
</navigation-case>
<navigation-case>
<from-outcome>loginSuccess</from-outcome>
<to-view-id>/navigation/loginSuccess.jsp</to-view-id>
</navigation-case>
</navigation-rule>
事件处理:在JSF中有四种类型的事件
1.动作事件
2.即时事件
3.值变事件
4.Phase(阶段)事件
动作事件的处理:
1.使用默认监听器处理
在bean中添加一个方法,有个参数ActionEvent;
在按钮上指定一个actionlistener属性,绑定bean
2.用户自定义一个监听器
创建一个监听器类,实现actionlistener接口;
注册监听器。
即时事件的处理:
(跳过执行验证和更新模型值得步骤,直接进入事件处理)
当按钮的immediate属性设置为true时,产生即时事件,默认情况下为false。应用场合:按钮,超级链接。
值变事件的处理:(当改变某一组件的值时)
1.使用默认监听器处理:
在bean中添加一个方法,有一个参数ValueChangeEvent;
在产生值变事件的组件上指定valuechangeListener属性,绑定不bean中的方法;
2.用户自定义监听器:
创建一个监听器类,实现ValueChangeListener接口;
注册监听器。
自定义监听器的执行优先于默认监听器。
应用场合:文本框,下拉框,checkbox,radio
Phase事件的处理:(一个请求会经过六个阶段,经过每个阶段的前后都会产生事件)
1.创建一个监听器类,实现PhaseListener接口
2.在faces-config.xml中注册这个监听器。
验证器:
1.使用JSF框架提供的验证器
<f:validateLength>验证字符串的长度
<f:validateLongRange>验证整数的大小
<f:validateDoubleRange>验证double类型的数字的大小
2.自定义一个验证器
创建一个验证器类,实现validator接口。
在faces-config.xml文件中注册验证器(<validator>)
使用自定义验证器,在页面中使用<f:validator>,指定在faces-config.xml文件中注册的验证器的id
转换器(作用:用户转换form表单提交的数据和bean的属性类型)
1.使用JSF框架提供的转换器
<f:convertDateTime> 字符串和Date的类型的数据之间的转换;
<f:convertNumber>字符串和数字类型之间的转换
2.自定义一个转换器
创建一个转化器,实现converter接口
在faces-config.xml文件中注册转换器;
使用转换器。
JSF中如何遍历集合和数组:(DateTable)
<h:dataTable value="#{tableBean.users}" value="users">其中value指定需要遍历的集合或者数组,var指定从集合或者数组中取出的对象存放的变量名。
分享到:
相关推荐
JSF(JavaServer Faces)是Java平台上用于构建用户界面的Web框架,尤其在处理表单和数据交互方面表现强大。本项目聚焦于JSF的文件上传功能,特别是针对大文件的上传,允许用户上传最大可达1.99GB的文件。在实际应用...
JSF是一种用于构建Java Web 应用程序的标准框架(是Java Community Process 规定的JSR-127标准)。JSF(Java Server Faces)技术为开发基于网络用户界面的Java开发者提供了标准的编程接口API以及标签库。就像Struts框架...
**JSF 文件下载实现** 在JavaServer Faces (JSF)框架中,实现文件下载功能是一项常见的需求。在本文中,我们将深入探讨如何使用JSF来实现在Web应用程序中下载文件的功能。主要涉及的关键知识点包括: 1. **JSF上...
**JSF(JavaServer Faces)** 是一个Java平台上的用户界面框架,用于构建Web应用程序。它提供了一种组件化和事件驱动的方式来创建交互式的Web界面。JSF API 和 JSF Impl 是JSF框架的核心组成部分。 **jsf-api.jar**...
JavaServer Faces(JSF)是Java平台上的一种用于构建Web应用程序的MVC(Model-View-Controller)框架。它提供了一种组件化的方式来构建用户界面,简化了前后端交互的复杂性。在JSF中,开发者可以使用声明式编程模型...
在JavaServer Faces (JSF) 开发环境中,IntelliJ IDEA (IDEA) 是一个流行的集成开发环境。这个“IDEA创建JSF项目所需jar包.zip”文件包含了两个关键的库文件,它们对于在IDEA中成功搭建JSF项目至关重要。下面我们将...
================================= JSF开发必备JAR ================================= <br>《JSF入门简单中文版》开篇提到JSF开发需要的jar,' 但是按其中提供的方法: <br>jstl.jar 与 ...
**JSF(JavaServer Faces)** 是一个Java平台上的用户界面框架,用于构建Web应用程序。它简化了开发人员创建交互式、数据驱动的Web界面的过程。JSF提供了一个组件模型,允许开发者通过拖放组件的方式来构建用户界面...
**JSF(JavaServer Faces)** 是Java平台上的一种用于构建用户界面的Web应用程序框架,它简化了开发人员创建和管理动态Web用户界面的过程。JSF提供了组件库、事件处理机制和生命周期管理,允许开发者通过声明式的...
JSF(JavaServer Faces)是Java平台上的一种用于构建用户界面的MVC(Model-View-Controller)框架。它简化了Web应用开发,提供了一种声明式的方式来创建动态、交互式的Web界面。`jsf-api.jar` 文件是JSF API的核心库...
**JSF(JavaServer Faces)** 是一个Java平台上的用户界面框架,用于构建Web应用程序。它为开发人员提供了一种模型-视图-控制器(MVC)架构,简化了前端和后端之间的交互。JSF提供了组件库,使得创建动态、交互式的...
JSF(JavaServer Faces)是一种用于构建Web应用程序的Java技术,它提供了一种声明式的方式来创建用户界面,并处理用户交互。在这个"用jsf做的登录注册的组件"中,我们可能会涉及以下几个关键知识点: 1. **JSF架构*...
JavaServer Faces(JSF)是Java平台上的一种用于构建用户界面的服务器端Web应用程序框架,它遵循Model-View-Controller(MVC)设计模式。JSF 1.2是该框架的一个较早版本,发布于2006年,提供了一系列增强功能和改进...
JavaServer Faces (JSF) 是一个用于构建用户界面的Java Web框架,它简化了创建和维护Web应用程序的复杂性。JSF的核心理念是提供一种组件化的编程模型,将UI元素与业务逻辑分离,使得开发者可以专注于应用的逻辑部分...
**JSF(JavaServer Faces)** 是一种Java平台上的Web应用程序开发框架,它提供了一种组件化和事件驱动的方式来创建用户界面。JSF的核心概念包括组件、事件、渲染器和生命周期,这些元素共同构建了一个强大的MVC...
JavaServer Faces(JSF)是Java平台上的一种用于构建Web应用程序的MVC(Model-View-Controller)框架。它提供了一种声明式的方式来构建用户界面,简化了开发过程,并且与Java EE平台无缝集成。本系列资料包括《JSF...
在JavaServer Faces (JSF)框架中,分页是一种常用的技术,用于处理大量数据时提供更好的用户体验。当数据集过大,一次性加载所有记录到页面上会导致性能下降且用户界面响应变慢。通过分页,我们可以将数据分成多个...
3. **jsf-impl.jar**:与jsf-api.jar相对应,这个文件包含了JSF的实现代码。在实际开发中,开发者通常只需要引用api.jar进行编程,而impl.jar则在运行时提供具体的实现细节,执行用户界面的渲染和事件处理等功能。 ...
《图书管理系统-BookM_JSF_Hibernate_Spring》是一个基于Java技术栈的Web应用程序,它融合了多个核心技术,包括JavaServer Faces(JSF)、Hibernate、Spring框架以及ajax4jsf库,旨在提供一个高效、易用的图书管理...
JSF(JavaServer Faces)是Java平台上用于构建Web应用程序的框架,特别适合开发用户界面。在JSF中,用户登录界面是常见的功能模块,用于验证用户的身份。下面将详细讲解如何在JSF中创建一个用户登录界面。 1. **JSF...