用Java Server Faces建立交互式WEB站点

JavaServer Faces:完整Web应用开发教程 本文还有配套的精品资源,点击获取 简介:JavaServer Faces(JSF)是由Oracle公司维护的Java框架,遵循MVC设计模式,用于构建Web应用程序。本教程提供了对JSF核心概念、组件、生命周期和最佳实践的深入探讨,并包含关于如何使用JSF组件库、EL语言、Managed Beans、自定义组件、CDI集成和不同版本特性的实用指导。通过本教程的学习,读者将能... 阅读详情
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script> 在创建交互式网络应用方面,Java Server Faces(以下建成为JSF)相对于诸如Java Server Pages或Apache Struts等同类技术而言拥有很多优势。JSF十分清晰地分离了应用逻辑层与用户界面表示层,提高了网络应用软件的维护能力,JSF同时还提供了一个架构用于开发和重用网络用户界面组件。   很多网络应用程序的开发者正在转移到JSF上来,但他们同时也发现预定义的JSF用户界面组件受到DHTML功能的限制。一些高级应用,例如监控或商务进程监测,需要和JSF架构兼容的高级视觉组件。   在JSF架构的标准之上开发自定义的用于网络图形用户界面的组件是一件轻松的事情,这些组件可以被应用程序员重用。而且,网络组件的开发者现在可以提供更加复杂的组件,同时可以保证开发者可以轻松的享受这些组件带来的优势和便利。这些JSF用户界面组件必须简洁地整合与部署到JSF运行时架构,而且在应用软件设计过程中,还要较好地整合到提供JSF支持的集成开发环境(IDE)中   除了JSF自带的基本的用户界面架构之外,在第一次开发自定义组件的时候,开发者还会遇到一些缺陷和障碍。在这篇文章当中,我们将要介绍如何构建图形化的JSF组件,这种组件使用纯HTML是非常难以实现的。图形化JSF组件的特色之处在于,不仅需要生成DHTML,而且还需要一些额外的图形生成与客户端交互的支持。我们将使用一个图表组件的例子来演示,这个图表组件是用来提供图表和各种客户端的浏览与交互功能。最后,将展示如何将图表组件整合到支持JSF的集成开发环境中。在理解了这个图表组件的设计过程之后,开发者将对如何实现图形化的JSF组件有更深入的理解,希望能够对他们开发自定义的JSF图形组件有所帮助。   什么是Java Server Faces?   JSF是一个标准的服务器端架构,用于简化网络应用软件表示层的构建。开发人员可以组装这些可复用的用户界面组件来创建网页,将这些组件绑定到应用程序的数据源,并利用服务器端的事件处理器来处理客户端事件。依据JSF规范,组件开发者所制作的组件可以简洁地整合到JSF运行时架构,而且在应用软件设计过程中,还可以整合到与JSF兼容的集成开发环境中。JSR 127规范定义了这样的JSF架构,还同时提供了比如输入栏和按钮等基本用户界面组件的可供参考的实现。JSF组件中的绝大部分都符合HTML 2.0标准中的HTML组件和标签的规范。这些相对简单的组件对于很多网络应用程序来讲已经足够了。   然而,很多应用程序,比如监控或监测系统,需要更复杂的数据表示与交互,例如图表、图示和映射等。因为在HTML中直接生成复杂图形的能力有限,所以设计这些高级组件也并不直观。一种解决方案就是让服务器端的组件将图片传送到客户端,然而,这会带来它自身的问题因为最基本的HTML的图片交互功能是很有限的。所以,最后必须使用JavaScript来实现用户的数据浏览与交互功能。   创建简单的JSF组件   本文将这部分将描述一个非常简单的JSF组件的开发步骤,这个组件的功能是将CSS导入到一个HTML的网页上。这个简单组件的描述和代码将作为基础知识,为下一部分继续讲解高级JSF图表组件打下基础。   图1 展示了如何使用组件及其结果 图1   使用这一组件的好处在于,只要通过JSF动作去改变组件的设定值就能够改变整个页面的外观。   一个JSF组件由一些Java类和配置文件组成,为了创建一个自定义的JSF组件,开发人员需要:   编写一个扩展JSF基础组件类的Java类   为默认的渲染工具编写一个渲染器   编写一个Java类来描述标签,这个标签将用于JSP页面   编写一个标签库定义文件   编写一个JSF配置文件 步骤1:开发组件的Java类   组件类将负责管理代表组件状态的属性,因此,我们必须根据组件的行为(如输入组件或输出组件),为组件选择适当的基类。   在列表A中描述的组件扩展了javax.faces.component.UIOutput,以显示指向某个样式表文件的URL,或内联式样式表的内容。   列表A import javax.faces.component.*; public class CSSComponent extends UIOutput { private Boolean link; public String getFamily() { return "faces.CSSFamily"; } public boolean isLink() { if (link != null) return link.booleanValue(); ValueBinding vb = getValueBinding("link"); if (vb != null) { Boolean bvb = (Boolean) vb.getValue(FacesContext. getCurrentInstance()); if (bvb != null) return bvb.booleanValue(); } return false; } public void setLink(boolean link) { this.link = new Boolean(link); } public Object saveState(FacesContext context) { return new Object[] { super.saveState(context), link }; } public void restoreState(FacesContext context, Object stateObj) { Object[] state = (Object[]) stateObj; super.restoreState(context, state[0]); link = (Boolean) state[1]; } }   代码中“关联”的属性规定了值的类型:要么是一个URL,要么是内联样式。该组件还必须能够在向服务器发送请求期间,使用经过JSF架构处理过的对象,来存储并恢复自己的状态。JSF架构自动调用saveState和restoreState方法,我们可以在组件中实现这两种方法来达到这一目标。   步骤2:编写渲染器   渲染程序有两个作用。首先,渲染程序负责发送适当的HTML程序段,该程序段能在客户端中渲染组件。通常情况下,这个HTML程序段由一些适于渲染整个网络浏览器的HTML标签组成,这个渲染阶段还能发送增强客户端交互性的JavaScript代码。   渲染程序的第二个作用是对来自客户端的数据进行解码,从而对服务器端的组件状态进行更新(比如用户在文本字段输入的文本)。标准渲染程序软件包具有强制 性,但也可以提供其他渲染程序软件包,用于提供其他的客户端表示方法或SVG之类的语言。   通过检验组件的链接属性,在列表2中实现的渲染程序将选择在HTML页面中发送的CSS样式类别。   列表B import javax.faces.component.UIComponent; import javax.faces.context.FacesContext; import javax.faces.context.ResponseWriter; import javax.faces.render.Renderer; public class CSSRenderer extends Renderer { public void encodeEnd(FacesContext context, UIComponent component) throws IOException { super.encodeEnd(context, component); if (component instanceof CSSComponent) { CSSComponent cssComponent = (CSSComponent) component; String css = (String)cssComponent.getValue(); boolean isLink = cssComponent.isLink(); if (css != null) if (isLink) context.getResponseWriter().write("<link type= ext/ css rel=stylesheet href=/" css "/>"); else context.getResponseWriter().write("<style>/n" css "/n<style/>/n"); } } } 步骤3:编写标签类 同样,JSF架构提供了用于扩展的基类,来编写与组件相关的标签。该标签类将负责: 定义将在faces-config.xml文件中应用的组件类型和渲染类型,我们将在下一部分具体介绍这个XML文件。 创建JSF组件(由JSF架构来处理)并传递JSF标签中所包含的属性来初始化组件。 在列表C中的标签提供了setter和getter来管理链接和值的属性。 列表C import javax.faces.Webapp.UIComponentTag; public class CSSTag extends UIComponentTag { private String value; private String link; public String getComponentType() { return "faces.CSSComponent"; } public String getRendererType() { return "HTML.LinkOrInlineRenderer"; } protected void setProperties(UIComponent component) { super.setProperties(component); Application app = getFacesContext().getApplication(); if (value != null) if (isValueReference(value)) component.setValueBinding("value", app.createValueBinding(value)); else component.getAttributes().put("value", value); if (link != null) if (isValueReference(link)) component.setValueBinding("link", app.createValueBinding(link)); else component.getAttributes().put("link", new Boolean(link)); } public String getLink() { return link; } public void setLink(String link) { this.link = link; } public String getValue() { return value; } public void setValue(String value) { this.value = value; } } 组件一旦创建,便会调用setPropertie方法,对标签属性进行初始化。每个标签属性要么是文字值,要么是bean属性的一个绑定。 步骤4:编写一个标签库定义(TLD) TLD是一个XML文件,它通过将标签名与相应的Java类相关联来描述标签。TLD还描述了标签所允许的属性。 在列表D中的这个TLD定义了一个名为“css”的标签,该标签被绑定到CSSTag类。它还声明了链接和值标签的属性。 列表D <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN" "http://java.sun.com/dtd/Web-jsptaglibrary_1_ 2.dtd"> <taglib> <tlib-version>1.0</tlib-version> <jsp-version>1.2</jsp-version> <short-name>custom</short-name> <uri>
JavaServer Faces核心及辅助JAR包详解 本文还有配套的精品资源,点击获取 简介:JavaServer Faces(JSF)是一个用于Web应用开发的Java框架,简化用户界面构建。JSF的核心是jsf-impl.jar和jsf-api.jar,前者实现了API中的接口,后者定义了开发接口和类。其他常用JAR包,如commons-collections-3.1.jar、standard.jar、commons-be... 阅读详情

相关推荐

BUUCTF reverse题解汇总

BUUCTF平台刷题过程中做的一些逆向题解的总结归类

于高山之巅,方见大河奔涌;于群峰之上,更觉长风浩荡。 1万+

Java Server Faces_用JavaServer Faces开发Web应用(4) (转)

用JavaServer Faces开发Web应用(4) (转)[@more@]6、事件处理。XML:namespace prefix = o ns = "urn:schemas-microsoft-com:Office:office" />下一步就是写事件处理器程序用来响应组件事件(诸如,选择了一个多选的选项或者点击一个按钮提交一个表单等等)。对于简单的应用,你还需指明当一个表单被提交或者访...

weixin_35850669的博客 186

实测对比:纳芯微NSD1624在光伏逆变器中的性能表现(含温度测试数据)

本文详细评测了纳芯微NSD1624非隔离驱动芯片在光伏逆变器中的性能表现,包括动态效率、高温稳定性及抗干扰能力。实测数据显示,该芯片在800V母线电压下效率峰值达99.03%,高温环境下结温稳定在102.7℃,且传播延迟一致性优异。与竞品相比,NSD1624在总损耗和热阻方面具有显著优势,是光伏逆变器驱动方案的理想选择。

weixin_29297127的博客 364

[转载]用JavaServer Faces开发Web应用程序

用JavaServer Faces开发Web应用程序在创建服务器端应用程序的用户界面时,有多种可供选择的技术。使用servlet或JSP的Java开发人员通常依靠HTML用户界面组件来开发用 户界面,这主要是因为HTML用户界...

congji3817的博客 276

LinuxCNC 源码解析:从界面开发到硬件交互的实战指南

本文深入解析LinuxCNC源码架构,从用户界面开发到硬件交互的实战指南。涵盖GTK与Tkinter界面开发、HAL硬件抽象层、G代码解析器改造及运动控制核心等关键模块,提供定制化开发技巧与性能优化方案,助力开发者高效掌握数控系统开发。

weixin_27066963的博客 190

【阿里云大模型高级工程师ACP习题集】2.7 通过微调增强模型能力 (上篇)(⭐️⭐️⭐️ 重点章节!!!)

【摘要】这是我精心整理出对应的习题集,里面足足有 30 道题目,从基础概念到深度拓展,全方位覆盖章节重点、难点。不管你是想检验自己的学习成果,还是想针对薄弱环节进行强化训练,它都能完美适配!

davidkorhenn的博客 1604

java faces_简介Java Server Faces

1、JSF简介JSF(Java Server Faces)体系结构是一种Web应用程序框架,它是首个Web应用程序开发的标准框架。JSF提供了一个基于组件的架构(框架)用于管理和构建Web应用程序接口,它也提供了丰富的功能集包含事件处理机制(Event Handling Mechanism)、页面导航(Page Navigation)、验证客户端数据(Input Validation)和数据转换(...

weixin_30010599的博客 717

maya权重拷贝一对一,一对多

是不是有时候盔甲很多很碎头很大,用代理一个个拷贝很麻烦吧 用下面代码直接运行进行一对多或者一对一拷贝 第一个先选择参考物体,加选其他一堆有的没的有权重或没权重的物体执行一键拷贝,就可以啦 以下是源码送上,带走吧 ------------------------ #! -*- coding:utf -8 -*- #author:liubingdong #date:20...

weixin_30852367的博客 1534

Java Server Faces_JSF ( JavaServer Faces ) 介绍

javaServer Pages(JSF) 在 Java 的 WEB 编程中已经被认为是下一个重大的事件。通过 JSF ,你可以在网页上使用 WEB 组件,来捕捉用户行为产生的事件。不远的将来,Java 工具将支持这个技术,开发 WEB 应用程序将与我们现在开发 SWING 程序类似:拖放控件、写事件侦听器。本文是一个 JSF 的简要介绍,并且提供一个 JSF 的例子,用来展示 JSF 的事件驱动...

weixin_35943776的博客 526

8.时间序列预测

目标:使用历史数据预测未来的销售额。通过以上步骤,可以在Excel中有效进行预测分析,帮助做出更准确的决策通过考虑不同时期数据的影响,可以显著提高预测的准确性。结合多种方法和模型,可以灵活应对复杂的市场环境和变化。

学习,输出==》再学习再输出 891

OpenClaw Manager Pro - 可视化管理工具

OpenClaw Manager Pro 是一个现代化的 Web 管理界面,用于管理多个 OpenClaw Gateway 实例。🎨美观的界面:深色主题,渐变设计,现代化 UI📡实时监控:WebSocket 实时推送状态和日志🔧完整管理:创建、编辑、删除、启动、停止 Gateway📊多渠道支持:飞书、Telegram、Discord、Slack、微信、钉钉🧩技能管理:可视化配置 61+ 个技能🌍跨平台:支持 macOS、Linux、Windows使用自定义模型系统会自动在中创建},

Maynor的博客 3087

JSF(Java Server Faces)学习日记

 1概述:    JSF(Java Server Faces)是基于MVC模式的新一代web framework,是一套JCP支持的新一代web开发规范,各个厂商可以定义自己的JSF实现,使开发更加容易.JSF具有一下优点: (1)基于MVC,可以有效的将数据显示与业务逻辑分开处理.(2)有功能强大丰富的web开发组件,可以可视化的设计开发web应用程序.(3)事件驱动,这是JSF比较

凝香小筑 3782

华为OD机试真题2025双机位C卷 Java&Go 实现【卡牌游戏】

小明正在尝试一种新的牌游戏。游戏规则只如下:首先,小明拿到一张写有数字m的牌。 然后,他会拿到另外n张牌,上面分别写有不同的数字,牌排成一排。小明的目标是从这排牌中找到一串连续的牌,这些牌上数字的总和可以被 m整除。你的任务是判断小明是否可以完成这个目标。

MISAYAONE的博客 394

Java Server Faces(JSF)历险(一)

从今天开始研究JSF(Java Server Faces),JSF作为最新的MVC框架,得到了sun等业界技术领袖的支持,我相信JSF必然会超越Struts,Tapestry成为主流开发技术。以后的系列日志会记录我学习JSF的历程。Getting Start1.       安装,下载如下软件包:Java JDK 1.4.1Tomcat 5.0+(我曾经用过Tomcat5.5,它的配置有些不同,另

风之力——Essential Java 4457

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Java学习第二十四部分——JavaServer Faces (JSF)

本文介绍了JSF的基本信息

2503_92550335的博客 1387

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

JavaServer Faces 简介

作者:Ed Burns 和 Justyna HorwatJavaServer Faces 1.0 Framework 使您可轻松创建强大和动态的 Web 应用程序。市场上有许多可用的 Web 用户界面框架,但是 JavaServer Faces Technology 由于以下几种原因而脱颖而出:它是一个 Java Community Process 标准;它为 Web UI 编程引入了 JavaB

ROC的专栏 2730

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

JavaServer Faces:Java实现构建基于组件的用户界面

JavaServer Faces:Java实现构建基于组件的用户界面

2301_77899321的博客 536

Java Server Faces 框架

Web应用程序的开发与传统的单机程序开发在本质上存在着太多的差异,Web应用程序开发人员至今不可避免的必须处理HTTP的细节,而HTTP无状态的(stateless)本质,与传统应用程序必须维持程序运行过程中的信息有明显的违背,再则Web应用程序面对网站上不同的使用者同时的存取,其线程安全问题以及数据验证、转换处理等问题,又是复杂且难以解决的。   另一方面,本质上是静态的HTML与本质上是动态...

hanxinyu 292

Java serve faces_使用JavaServer Faces技术的Web模块:hello1 example

该hello1应用程序是一个Web模块,它使用JavaServer Faces技术来显示问候语和响应。您可以使用文本编辑器查看应用程序文件,也可以使用NetBeans IDE。此应用程序的源代码位于tut-install/examples/web/jsf/hello1/目录中。查看hello1index.xhtml文件是Facelets应用程序的默认登录页面。在典型的Facelets应用程序中,网...

weixin_34535286的博客 211

java faces,用JavaServer Faces开发Web应用(3) (转)

用JavaServer Faces开发Web应用(3) (转)[@more@]构建你自己的应用:namespace prefix = o ns = "urn:schemas--com::office" />这一部分具体讲述如何一步一步地创建你自己的Server Faces应用。我所使用的例子很简单,它要求输入他(她)的名字,然后点击Submit按钮,然后应用程序会向用户显示一个欢迎的信息。创...

weixin_39989796的博客 122

用JavaServer Faces开发Web应用

 当你为服务器端应用开发用户界面时,你可以有很多选择,使用Jsp和Servlet的Java开发者一般使用HTML的用户界面组件来构建用户界面。这个主要是因为HTML的用户界面组件是所有的Web浏览器都支持的最小子集。当然,这样的Web应用与传统的独立胖客户端相比缺乏富有表现力的用户界面,因而功能更少,可用性也没有那么好。虽然applet可以用来设计出富有表现力的用户界面,不过Web页面的开发者可能

zaowei21的专栏 1752

Javaserver Faces 简介 — 什么是 JSF?

什么是 JSF?JavaServer Faces (JSF) 是一种用于构建 Web 应用程序的新标准 Java 框架。它提供了一种以组件为中心来开发 Java Web 用户界面的方法,从而简化了开发。JavaServer Faces 还引起了广大 Java/Web 开发人员的兴趣。“企业开发人员”和 Web 设计人员将发现 JSF 开发可以简单到只需将用户界面 (UI) 组件拖放到页面上,而

Micro技术文章专栏 1165

java faces_JSF(Java Server Faces)很简单!

JSF(Java Server Faces)是一种用于构建Web应用程序的新标准Java框架。提供了一种以组件为中心来开发Java Web的用户界面的方法,从而简化了开发。JSF是Java Web应用的用户界面框架,其设计目标是简化Web应用的开发和维护。当然,JSF最直接的服务对象还是基于HTTP协议和HTML客户端的Java Web应用。JSF是在Java Web中开发Web UI的框架,像大...

weixin_39686048的博客 189

JavaServer Faces技术与应用

JavaServer Faces技术与应用  什么是框架(Framework):一堆组件协同运作的机制,该系统更具扩充性、维护性。(J2EE、Struts……)J2EE(EJB,JMS,JavaMail,Portal,JDBC,JTA/JTS,JNDI,RMI,Socket,LDAP)Struts(validation、Action、ActionForm。。。) 技术的演进:(CGI—ASP—Se

sjhasp的专栏 1380
上一篇: J2EE开发框架发展简史
下一篇: 采访知名作家Bruce Tate 谈Java 未来机遇与挑战
java169
博客等级 码龄19年 27粉丝 2568原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值