框架风云 谈JSF能否拯救WEB江湖
- 格式:doc
- 大小:50.50 KB
- 文档页数:7
JSF框架简介与实例JSF 体系结构:JSF 的主要优势之⼀就是它既是 Java Web 应⽤程序的⽤户界⾯标准⼜是严格遵循模型-视图-控制器 (MVC) 设计模式的框架。
⽤户界⾯代码(视图)与应⽤程序数据和逻辑(模型)的清晰分离使 JSF 应⽤程序更易于管理。
为了准备提供页⾯对应⽤程序数据访问的 JSF 上下⽂和防⽌对页⾯未授权或不正确的访问,所有与应⽤程序的⽤户交互均由⼀个前端FacesServlet(控制器)来处理。
JSF ⽣命周期:FacesServlet 充当⽤户和 JSF 应⽤程序之间的纽带。
它在明确限定的 JSF ⽣命周期(规定了⽤户请求之间的整个事件流)的范围内⼯作。
1.当JSF页⾯上的⼀个事件发⽣时(⽐如:⽤户单击了⼀个按钮),事件通知通过HTTP发往服务器。
服务器端使⽤FacesServet这个特殊的Servlet处理该通知。
2. FacesServlet⼀接收到⽤户的请求就创建⼀个FacesContext对象(JSF上下⽂,它存放了应⽤程序的所有数据)。
在处理过程中,主要修改的就是这个FaceContext对象。
3.接着就是处理过程,处理器是⼀个叫作Lifecycle的对象。
FacesServet把控制权转交给Lifecycle对象。
该对象分6个阶段来处理FacesContext对象以⽣成响应,最后将响应发回客户端。
Lifecycle对象处理JSP请求所需要的⼀系列动作称为请求处理⽣命周期。
过程状态图如下:由于请求处理⽣命周期⾥的应⽤请求值、处理验证、更新模型值和调⽤应⽤程序等阶段都可以在当前的请求对应的FacesContext实例中添加事件,因此,JSF实现必须在这些阶段后处理这些事件。
阶段说明恢复视图为选定的视图找到或创建组件树。
⼀旦⽤户单击JSP页⾯上的链接或按钮,就会启动此阶段。
JSF应⽤⾥的JSP页⾯被表⽰成⼀个组件树。
JSF实现会进⼀步将这些组件链接到事件处理程序和验证程序,并将视图保存在FacesContext对象中,以备后⾯的处理过程所⽤。
jsf用法-回复JSF(JavaServer Faces)是一个MVC(Model-View-Controller)架构的Java Web应用程序框架,用于构建用户界面。
它提供了一组丰富的组件和标签库,使开发人员能够轻松创建可重用、可扩展和易于维护的Web 界面。
在本文中,我们将一步一步回答关于JSF的用法。
第一步:环境设置与配置要开始使用JSF,我们首先需要安装Java开发工具包(JDK)和Eclipse IDE (集成开发环境)。
确保JDK已正确安装并配置了环境变量,并在Eclipse 中安装了JSF插件。
第二步:创建JSF项目在Eclipse中,我们可以使用JSF项目向导来创建一个新的JSF项目。
选择“File -> New -> Other”菜单项,并从弹出对话框中选择“JSF Project”。
输入项目的名称和位置,并选择适当的JSF版本。
第三步:定义面板页面在JSF中,界面由一系列的面板组成。
可以使用标准HTML标记或JSF组件标记来定义这些面板。
在页面的顶部,我们需要添加JSF命名空间的声明,如下所示:<html xmlns="xmlns:h="xmlns:f="然后,我们可以使用`<h:body>`标签来定义页面的主体内容。
在这个标签内,我们可以使用各种JSF组件来构建用户界面。
第四步:添加JSF组件JSF提供了各种组件,如输入框、按钮、表格等。
我们可以使用这些组件来创建用户友好的界面。
下面是几个常见的JSF组件的示例:- `<h:inputText>`:用于显示和接收文本输入的组件。
- `<h:commandButton>`:用于触发动作的按钮组件。
- `<h:dataTable>`:用于显示数据的表格组件。
这些组件的属性和事件可以通过JSF标签的属性和监听器来自定义和处理。
第五步:管理数据与业务逻辑在JSF中,我们可以通过使用Managed Bean来管理数据和业务逻辑。
JSP牵手JSF打造完美的Web应用Java在最近几年逐渐升温,随着Java SE 5和Java SE 6的推出,Java的未来更显得无比辉煌。
但以Java 为基础的JSP在Java SE 5推出之前却一直抬不起头来,这最重要的原因就是JSP虽然功能十分强大,但最大的优点也是它的最大缺点,功能强大就意味着复杂,尤其是设计前端界面的可视化工具不多,也不够强大。
因此,设计JSP页面就变得十分复杂和繁琐...Java在最近几年逐渐升温,随着Java SE 5和Java SE 6的推出,Java的未来更显得无比辉煌。
但以Java为基础的JSP在Java SE 5推出之前却一直抬不起头来,这最重要的原因就是JSP虽然功能十分强大,但最大的优点也是它的最大缺点,功能强大就意味着复杂,尤其是设计前端界面的可视化工具不多,也不够强大。
因此,设计JSP页面就变得十分复杂和繁琐。
不过,在Java SE 5推出的同时,Sun为了简化JSP的开发难度,推出了新的JavaServer Faces(简称JSF)规范。
从而使JSP走上了康庄大道。
一、什么是JSFJSF和JSP是一对新的搭档。
JSP是用于后台的逻辑处理的技术,而JSF恰恰相反,是使开发人员能够快速的开发基于 Java 的 Web 应用程序的技术,是一种表现层技术。
目前,JSF1.2已经正式作为一个标准加入了Java EE 5中。
作为一种高度组件化的技术,开发人员可以在一些开发工具的支持下,实现拖拉式编辑操作,用户只需要简单的将 JSF 组件拖到页面上,就可以很容易的进行 Web 开发了。
这是其作为一种组件化的技术所具有的最大好处,我们能用的组件不光是一些比较简单的输入框之类,还有更多复杂的组件可以使用的,比如 DataTable 这样的表格组件, Tree 这样的树形组件等等。
作为一种标准的技术,JSF还得到了相当多工具提供商的支持。
同时我们也会有很多很好的免费开发工具可以使用,前不久 Sun Java Studio Creator 2 和 Oracle JDeveloper 10g 作为免费的支持 JSF 的开发工具发布,给 JSF 带来了不小的生气。
python调用jsf方法-回复如何使用Python调用JSF方法JSF(JavaServer Faces)是一种用于构建面向Web的用户界面的Java 框架。
然而,有时我们可能需要从Python中调用JSF方法。
这篇文章将一步一步地解释如何使用Python调用JSF方法。
1. 配置Python环境和依赖项首先,确保你的计算机已经安装了Python,并且环境变量已经正确设置。
然后,使用pip安装所需的依赖项。
在命令行中执行以下命令:pip install requests这将安装requests库,这是一个用于发送HTTP请求的常用库。
2. 导入所需库在Python文件的顶部,导入所需的库。
这里,我们需要导入requests 库、json库和time库。
使用以下代码实现:pythonimport requestsimport jsonimport time3. 构建HTTP请求使用Python发送HTTP请求到JSF方法。
为此,我们需要构建一个HTTP POST请求,并在请求的主体中包含所需的参数。
下面是一个例子:pythonurl = "headers = {'Content-Type': 'application/json'}data = {'param1': 'value1','param2': 'value2'}response = requests.post(url, headers=headers,data=json.dumps(data))在上面的代码中,我们指定了JSF方法的URL和请求标头。
然后,我们使用json.dumps方法将参数转换为JSON格式,并将其作为请求的主体。
4. 检查HTTP响应使用Python处理HTTP响应。
在上一步中,我们发送了HTTP请求,并接收到了一个响应。
JavaScript的未来发展与趋势JavaScript作为一种用途广泛的脚本语言,已经成为了Web前端开发的主流语言。
而未来JavaScript的发展与趋势也备受关注。
在未来的发展中,JavaScript将会继续发展和壮大,成为更为强大和灵活的语言。
1.强类型化和静态类型检查:随着JavaScript应用的复杂性不断增加,静态类型检查和强类型化成为了JavaScript未来发展的趋势。
TypeScript等语言的兴起,使得越来越多的开发者开始意识到静态类型的重要性,并采用类型检查工具来提高代码质量和开发效率。
2. WebAssembly的应用:WebAssembly是一种全新的二进制格式,可以在浏览器中执行高性能的代码,使得Web应用的性能得到了极大的提升。
JavaScript与WebAssembly的结合将会是JavaScript未来的发展方向之一,带来更多的可能性和机会。
3.框架和工具的多样化:随着前端开发的快速发展,越来越多的框架和工具涌现出来,例如React、Angular、Vue等。
JavaScript未来的发展将会是框架和工具的多样化,开发者可以根据项目需求选择合适的工具和框架,提高开发效率和代码质量。
4.前后端一体化:随着Node.js的兴起,前后端一体化的趋势日益明显。
JavaScript可以在前端和后端都得到广泛应用,可以实现前后端一体化的开发和部署,提高开发效率和用户体验。
5. AI和机器学习的应用:随着人工智能和机器学习的不断发展,JavaScript的应用领域也在不断扩大。
JavaScript可以与AI和机器学习结合,实现更为智能和高效的应用,为用户带来更多的便利和服务。
6.全栈开发的趋势:随着技术的发展和需求的变化,全栈开发成为了JavaScript未来的发展趋势之一。
全栈开发者既可以在前端,也可以在后端进行开发,掌握更多的技能和工具,提高自身的竞争力和就业机会。
总的来说,JavaScript作为一种灵活和强大的脚本语言,将会在未来继续发展和壮大。
JSF英文全称 JavaServer Faces (JSF) 是一种用于构建 Web 应用程序的新标准 Java 框架。
它提供了一种以组件为中心来开发 Java Web 用户界面的方法,从而简化开发,也是Sun精心打造的一项技术。
JSF优势之一:UI组件(UI-component)UI组件(UI-component)一直是桌面程序的专利,web程序中,虽然HTML 定义了基本的UI标签,但要使这些UI标签像UI组件那样工作,还需要很多代码片断来处理数据及其表现形式,而且有效地组织这些代码片断使其协调一致也是一件繁琐的工作。
JSF的UI组件是真正意义上的UI组件,能极大地简化程序员的工作,例如,在页面上放置一个文本输入框,这个输入框立即具备了数据填充、界面更新、事件侦听、动作触发、有效性检查和类型转换的功能。
更为重要的是,程序员只需根据业务逻辑编写核心业务代码,JSF会保证代码在合适的时候被执行,完全不用考虑代码与代码之间该如何来配合。
JSF优势之二:事件驱动模式事件是面向对象方法的重要组成部分,对象之间通过事件进行沟通和交流,使得一个或多个对象能够对另一个对象的行为作出响应,共同合作去完成一项业务逻辑。
通常,编写Web程序时,程序员要为对象之间的沟通设计机制,编写代码。
虽然沟通的内容属于业务逻辑,但沟通的机制显然与业务没有太大关系,程序员因此为业务逻辑之外的功能浪费了时间。
JSF改变了这种状况。
JSF的事件和侦听模式与大家熟悉的Javabean的事件模式类似,有Java基础的程序员并不需要学习任何新的东西。
JSF的UI组件可以产生事件,例如,当页面上一个文本输入框的内容被修改时,会发出一个“值改变事件”。
另一个对象如果对“值改变事件”感兴趣,只需注册为该对象的侦听者,并编写处理例程,即可命令JSF在事件发生时自动调用处理例程。
JSF做了所有该做的事,留给程序员的只有业务逻辑代码的编写。
JSF优势之三:用户界面到业务逻辑的直接映射举个例子,表单提交是Web编程最常见的任务,也是最复杂的任务之一。
框架风云谈JSF能否拯救WEB江湖(1)发布时间:2007.07.06 06:33来源:赛迪网技术社区作者:yuanguangdongJava企业开发可以说是“复杂”的代名词,简化Java的开发已经刻不容缓了.随着JAVA EE 5,JAVA EE6的相继发布,从老虎到野马,版本更新如此之快,对SUN来说是史无前例的。
Sun终于顶不住来自内部改革派和外部竟争者的压力。
看来是下定决心简化JAVA了!在2005年底.Net 2.0的发布,我们目睹了.Net 2.0的成功。
.Net 2.0由于开发简单,开发周期短,开发成本低,中小企业纷纷转投向.Net的怀抱。
眼看JAVA EE的市场慢慢的被.Net 蚕食,Sun是急在眼里,痛在心里。
JSF也随之成为JAVA EE的规范,Java EE 6明显加强对JAVA开发桌面应用的支持,Sun也想让JAVA在桌面开发中占有一席之地。
而把JSF作为强制规范,是想通过JSF来继续统领WEB 开发来固守企业应用的市场,2007年,Sun想通过JSF来打一个翻身仗。
WEB江湖自Java 1995年面世后,Sun靠Applet 抢占了WEB前端市场,而Flash的出现却让Applet 早早退出历史舞台。
于是Sun在1997年发布了第一个WEB服务器(Java WEB Server)及应用的Servlet API。
Servlet可以通过纯Java语言来编写企业WEB应用,Servlet从厂商急需角度出发,迅速的成为了企业应用解决方案的标准。
虽然Servlet通过Java这种高级语言来进行编写,而最终是展示给用户的。
需要有良好的用户界面。
这就需要支持HTML等WEB脚本。
可是Servlet却不能良好的嵌入HTML等前端代码,开发起来非常复杂。
终于在1998年,Sun推出了JSP。
而此时,与之相似的ASP已经发布了两年之久。
Sun在1999年初推出JSP 1.0后,又在1999年11月推出JSP 1.1,Sun终于凭借Servlet 和JSP技术,迅速的占领了绝大部份的企业市场份额。
在2002年4月,JSP发展到1.2版本。
到2003年Sun推出JSP 2.0,同时推出的JSTL(JAVA 标准标记语言)取代JSP表达式的弱点,更进一步简化JSP的编写。
JSP慢慢变成一种非常成熟的WEB技术,JSP凭借其技术成熟,稳定,及Java的强大功能和跨平台能力成为WEB企业应用的王者,占领了80%以上的企业应用市场。
而ASP则靠快速开发,方便发布以及依靠在微软的大树下分食中小市场和个人用户。
江湖混战,框架兴起JSP是一项成功的技术,它功能强大,具有高稳定性和可靠性。
但是也就意味着他具有复杂性,难以维护。
从它诞生起,人们就一直在努力寻找一种快速的WEB开发方案。
在早期,所有的业务方法,数据库连接,访问方法的这些代码都充斥在JSP页面里。
开发人员既是UI设计者又是程序员。
同时各种各样的业务代码写进JSP页面中,相同的功能代码可能需要编写多次,代码无法重用,如果后期因为业务的变动而进行维护时,对开发人员简直就是一场恶梦。
随后WEB开发进入Model 2时代,也就是MVC模式的应用时代,MVC模式可以使模型,视图,控制分离出来。
通过Servlet与JSP的结合,由控制器Servlet控制请求,调用业务类获得模型数据,并把数据模型展示到相应的视图(JSP)中。
这样,业务方法已经从JSP中分离出来,减少了逻辑代码与JSP代码的藕合。
JSP仅仅用于显示数据和提交用户的请求。
Servlet控制用户的请求及调用Java类的业务方法,并对用户的请求进行转发。
MVC模式可使得业务方法重用,使得页面开发人员和程序员进行分工。
一部分人专注于页面的开发,而一部份人进行业务代码的编写。
可以使项目组的人去做他最熟悉的工作。
Model2的运用,对WEB开发带来了一次全新的变革,但是仍然面临着许多问题。
有太多的Servlet类,一个请求对应着一个Servlet类。
页面流程的控制全部通过硬代码写死在Servlet类中,每一个Servlet类都需要在WEB.XML中进行配置,不能很好的支持国际化等。
后来人们通过前端控制器模式来解决了这样问题,就是由一个Servlet来响应所有的请求。
根据不同的请求参数来调用不同的服务方法。
这样有效的减少了Servlet类。
几乎现在所有的WEB框架都是采用前端控制器和MVC模式的运用。
在这样的背景下,WEB框架应运而生,Struts最先面世,WEBWork等纷纷涌现。
开发者采用框架大大的简化了WEB应用的开发,加快了开发的速度和质量。
Struts搅乱WEB格局Struts采用前端控制器模式和MVC模式进行设计。
强制开发人员以MVC的理念来进行WEB开发,把表现层与业务层进行分离。
Struts提供了丰富的标签库,在JSP 1.1时代,JSP页面都是通过JSP表达式进行编写。
虽然采用“”的JSP表达式功能非常强大,但是调试十分的麻烦,理解也十分的困难,一般的页面人员几乎无法胜任。
而Struts此时提供的标签库类似于HTML的标记,对开发人员更为友好,易于理解和编写。
Struts提供了一个页面流程控制的功能,而不是把页面的转向写死在代码中。
每个请求的页面输入和页面转发都配置在Struts-config.xml中。
Struts支持自动数据绑定,通过一个ActionForm来实现。
把页面的数据自动绑定成POJO 对象。
并支持数据检验。
Struts 提供了国际化的支持,可以很容易的让你的WEB系统应用于多种语言版本的要求。
所以Struts一推出就受到了开发人员的喜爱,并迅速流行起来。
Struts是目前使用最多,流行时间最长的JAVA开源WEB框架。
尽管Struts取得了成功,但是它仍然有很多的不足。
Struts线程是安全的,但对并发控制是一个问题。
在JSP 2.0推出JSTL后。
JSTL取代JSP表达式进行JSP编写,JSTL是一种类似C语言风格的标记语言。
更为人们所熟悉,语法十分简单,明了,功能强大。
JSTL会自动处理NULL问题,而不是像JSP表达式和Struts标签那样遇到NULL值是会抛出可恨的异常。
相对于优雅的JSTL,采用Struts标签写出的JSP代码就像是天书,咒语一样。
Struts 大部份标记重复了JSTL的相似功能,有一部份与HTML重复的标签根本就没有必要存在,还无端的增加了学习和开发的难度。
而且Struts标签不能良好的处理NULL问题。
ActionForm的问题,Struts通过ActionForm来进行数据绑定和数据校验。
首先任何需要使用数据绑定和数据校验功能都必须去继承ActionForm,而Action Form又依赖Servlet。
这样基于类继承的藕合是没有必要的。
数据绑定应该是原始的,就是说页面的数值型数据应该绑定成Java类的数值型数据,日期型数据就绑定成日期数据。
而Struts只能把页面数据绑定成字符型的数据。
数据校验应该是具有重用性的,而Struts却要把数据检验生硬的写在ActionForm中。
同时Struts也存在以下几点致命伤:1、Struts通过继承具体类来进行扩展,那么你要自定义Struts的行为而变得困难。
2、Struts是不容易测试的,必须通过StrutsTestCase来进行辅助测试。
而不是真正意义上的单元测试。
3、Struts太面向JSP了,也就是说Struts仅支持JSP,如果我们的应用有些视图不是采用JSP,而另外一些视图如采用EXCEL和PDF。
那么Struts是无能为力的。
4、Struts框架对异常没有提供一个良好的支持。
Struts也看到了自身存在的缺陷,并不断进行改进,随着Struts 2的到来,会带来一些改变的。
WEBwork是一种比Struts更易于使用,基于Command模式的开源WEB框架。
WEBwork 结构十分的简单,也提供了丰富的标签库,WEBwork的拦截器也十分的优秀。
并且WEBwork 是非线程的。
WEBwork提供了一个IOC容器,支持国际化,并且支持多种视图技术。
可以说WEBwork是一个非常优秀的WEB框架。
但是WEBwork的开发文档少得可怜,它的客户端验证技术不太成熟,Velocity Templates技术还是太复杂,不提供对组件的封装,而Struts 的Tiles更好一点。
采用WEBwork,必须对它的运行机制十分了解。
同时WEBwork对每个用户交互都强加Command模式,而不管是否需要。
所有Command 的excute方法被迫抛出Exception,你无法知道哪一命令会抛出什么类型的异常,而且WebWork的路注定是没有归途的。
Spring Web框架中一条黑马2001年Rod Johnson编写一本书叫《J2EE设计开发编程指南》。
这本书的内容构成了Spring框架的雏形。
接着Rod Johnson又编写了另外一本书《J2EE without EJB》,并同时推出Spring框架。
这两本书迅速的在业界引起了轰动,为Spring的推出作了很好的铺垫。
Spring引入IOC(控制反转)的概念,采用POJO对象,AOP支持和轻量级容器来开发企业应用,这些正是业界多年来一直苦苦寻找的解决方案。
Spring一推出就红遍了大江南北,迎来了Java企业开发的春天。
笔者认为Spring MVC 是基于请求响应模式最为优秀的开源WEB框架。
它来自于Spring,天生就支持IOC 和AOP,这是其它任何WEB框架无法相比的。
Spring MVC 是一个很薄的WEB框架,它清晰的分离了数据和视图。
支持多种视图技术(JSP,XML,EXCEL, PDF…)十分方便。
Spring的优势Spring MVC对于表单提交类的应用提供了一个完整的生命周期。
Spring MVC 支持页面数据的原生绑定为POJO对象,并可以自定义扩展绑定器,而不是像Struts那样只能把页面数据自动绑定为String 类型。
Spring MVC 自定义行为变得十分容易,这得益于Spring框架良好的设计,Spring MVC 的控制器也是基于Command模式的。
Spring MVC 有良好的数据校验框架,也很容易自定义数据校验行为。
Spring MVC 提供了一个良好的异常处理机制,可以方便的自定义各类异常的处理行为。
Spring MVC 提供了有用的标签。
(注意是有用的,没有用的Spring绝不提供)Spring MVC 支持I18N及文件上传等。
Spring 还推出了Spring WEB Flow,用于向导式的WEB应用开发。
Rod Johnson 是一个JAVA EE专家,我更愿意称他为一个实践家。