jsf struts jsp spring 啥关系和区别?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jsf struts jsp spring 啥关系和区别?相关的知识,希望对你有一定的参考价值。

jsf是框架?struts包含jsf?spring是什么?
struts 1和2的区别是什么?

Spring:业务逻辑框架,和struts,hibernate组成mvc的三大框架,也就是大家所说的ssh框架
框架的出现让开发变得更加方便,快捷,以及可扩展性
学这个三大框架之前就会对应的学jsp,servlet和javabean
struts 1和2的区别:
struts1和struts2的区别其实并不是太大,两者的区别:
Action 类:
◆Struts1要求Action类继承一个抽象基类。Struts1的一个普遍问题是使用抽象类编程而不是接口。
◆Struts 2 Action类可以实现一个Action接口,也可实现其他接口,使可选和定制的服务成为可能。Struts2提供一个ActionSupport基类去实现 常用的接口。Action接口不是必须的,任何有execute标识的POJO对象都可以用作Struts2的Action对象。
线程模式:
◆Struts1 Action是单例模式并且必须是线程安全的,因为仅有Action的一个实例来处理所有的请求。单例策略限制了Struts1 Action能作的事,并且要在开发时特别小心。Action资源必须是线程安全的或同步的。
◆Struts2 Action对象为每一个请求产生一个实例,因此没有线程安全问题。(实际上,servlet容器给每个请求产生许多可丢弃的对象,并且不会导致性能和垃圾回收问题)
Servlet 依赖:
◆Struts1 Action 依赖于Servlet API ,因为当一个Action被调用时HttpServletRequest 和 HttpServletResponse 被传递给execute方法。
◆Struts 2 Action不依赖于容器,允许Action脱离容器单独被测试。如果需要,Struts2 Action仍然可以访问初始的request和response。但是,其他的元素减少或者消除了直接访问HttpServetRequest 和 HttpServletResponse的必要性。
可测性:
◆测试Struts1 Action的一个主要问题是execute方法暴露了servlet API(这使得测试要依赖于容器)。一个第三方扩展--Struts TestCase--提供了一套Struts1的模拟对象(来进行测试)。
◆Struts 2 Action可以通过初始化、设置属性、调用方法来测试,“依赖注入”支持也使测试更容易。
捕获输入:
◆Struts1 使用ActionForm对象捕获输入。所有的ActionForm必须继承一个基类。因为其他JavaBean不能用作ActionForm,开发者经常创建多余的类捕获输入。动态Bean(DynaBeans)可以作为创建传统ActionForm的选择,但是,开发者可能是在重新描述(创建)已经存在的JavaBean(仍然会导致有冗余的javabean)。
◆ Struts 2直接使用Action属性作为输入属性,消除了对第二个输入对象的需求。输入属性可能是有自己(子)属性的rich对象类型。Action属性能够通过web页面上的taglibs访问。Struts2也支持ActionForm模式。rich对象类型,包括业务对象,能够用作输入/输出对象。这种ModelDriven 特性简化了taglib对POJO输入对象的引用。
表达式语言:
◆Struts1 整合了JSTL,因此使用JSTL EL。这种EL有基本对象图遍历,但是对集合和索引属性的支持很弱。
◆Struts2可以使用JSTL,但是也支持一个更强大和灵活的表达式语言--"Object Graph Notation Language" (OGNL).
绑定值到页面(view):
◆ Struts 1使用标准JSP机制把对象绑定到页面中来访问。
◆Struts 2 使用 "ValueStack"技术,使taglib能够访问值而不需要把你的页面(view)和对象绑定起来。ValueStack策略允许通过一系列名称相同但类型不同的属性重用页面(view)。
类型转换:
◆Struts 1 ActionForm 属性通常都是String类型。Struts1使用Commons-Beanutils进行类型转换。每个类一个转换器,对每一个实例来说是不可配置的。
◆Struts2 使用OGNL进行类型转换。提供基本和常用对象的转换器。
校验:
◆Struts 1支持在ActionForm的validate方法中手动校验,或者通过Commons Validator的扩展来校验。同一个类可以有不同的校验内容,但不能校验子对象。
◆Struts2支持通过validate方法和XWork校验框架来进行校验。XWork校验框架使用为属性类类型定义的校验和内容校验,来支持chain校验子属性
Action执行的控制:
◆Struts1支持每一个模块有单独的Request Processors(生命周期),但是模块中的所有Action必须共享相同的生命周期。
◆Struts2支持通过拦截器堆栈(Interceptor Stacks)为每一个Action创建不同的生命周期。堆栈能够根据需要和不同的Action一起使用。
参考技术A jsf全称javaServer Faces,是新标准的web框架。它提供了丰富的用户界面(ui)的功能,甚至可以用拖拽的方式编辑页面,使得编辑网页接近应用程序界面的编辑。

jsf拥有和jsp不同的页面处理流程,即生命周期,更易于控制。据说提出jsf框架的工作组和提出jsp的工作组是同一个。

jsf和struts肯定不相同,更简单调用后台的配置方式,功能更丰富、强大的标签,比如验证、局部刷新等功能可以通过标签来实现。通过自带和其他组织提供的标签库,可以完全不用java脚本代码。

spring是处理类的对象的生成,减小代码之间耦合度的框架。一些术语如控制反转、依赖注入等。它在java代码编写的时候很有用。

struts 1和2的区别上面有人说了,太详细了。
参考技术B jsf是最新的javaweb标准,面向组件的开发,国内才刚刚开始用
struts是老框架,不过很稳定,程序员也好找
jsp是javaweb的基础
spring是中间层框架,有点像粘合剂追问

就是说jsf是由于struts的新式框架了?

追答

框架各有千秋,不能说jsf优于struts。
jsf面向组件开发,用顺手了开发速度很快,但是学习曲线高,一般招不到这样的程序员,企业要自己培养,这个就是很大的劣势。
struts虽然配置复杂,然后可拓展性也不是很好,但是程序员很容易招到,跳槽了可以马上换,这个对企业来说都是比技术重要的问题。
如果你是为了职业,那在提高技术的同事,也需要关注一下社会现实,老板的想法永远是用最少的钱把项目做好。

追问

跪求加好友984308408

追答

你分给我啊。。。

本回答被提问者采纳
参考技术C jsf不太清楚,目测是种框架,spring是struts2 里的,具体我还没学到,struts1和2没啥联系,1主要是MVC吧,2就是SSH了。希望对你有帮助。

Facelet,Servlet,JSP,JSF之间的区别和关系[重复]

【中文标题】Facelet,Servlet,JSP,JSF之间的区别和关系[重复]【英文标题】:difference and relation between Facelet, Servlet, JSP, JSF [duplicate] 【发布时间】:2012-11-28 11:21:16 【问题描述】:

可能重复:What is the difference between JSF, Servlet and JSP?

我是 Java2E 的新手。我看到一堆不同的术语,如 JavaServer Faces、JavaServer Pages、Facelet、Servlets、Beans,我有点困惑。你能给我更清楚地了解这些术语吗? 谢谢

【问题讨论】:

您的问题显示在互联网上搜索缺乏努力。如果您已阅读链接中的重复问题信息,请更新您的问题,询问您究竟需要什么以获得进一步的解释。 【参考方案1】:

Java EE 是一大堆东西。它有很多不同的实现方式,并且有很多技术可以在不同的实现方式中使用。

参考链接:http://www.oracle.com/technetwork/java/javaee/overview/index.html

快速概览:

Bean 是具有 getter 和 setter 的对象。它们到处都在使用。它们的意义远不止于此,但在您了解 Java EE 是什么之前,这将帮助您完成它。

Java Server Faces (JSF) 是一种处理 MVC 视图(模型-视图-控制器)的技术。 JSP 也是如此。 facelet 是 JSF 的一部分。

servlet 是一个处理 HTTP 请求并产生 HTTP 响应的类。

Servlet 是 Java EE 的一部分,但可以是独立的。为了说明,servlet 可以存在于任何 servlet 容器中。 Java EE 应用程序需要一个 Java EE 容器,它也有一个 servlet 容器,但提供的更多。要了解区别,请将 Tomcat 与 Glassfish 或 JBoss 进行比较。

【讨论】:

感谢您的解释。但是,将 Tomcat 与 Glassfish 进行比较是什么意思?这些术语是否也与 Web 服务器实现有关?

以上是关于jsf struts jsp spring 啥关系和区别?的主要内容,如果未能解决你的问题,请参考以下文章

带有 Spring 安全性的 Struts 菜单。有啥好处吗?教程?例子?

Facelet,Servlet,JSP,JSF之间的区别和关系[重复]

Java EE基本框架(Struts2+Spring+MyBatis三层,Struts MVC)之间的关系

java jsf 如何去重新加载bean

JSP + View bean 完整示例

学JAVA到底能干啥?