Spring MVC 与 Struts MVC的区别
来源:互联网 发布:经传主力统计指标源码 编辑:程序博客网 时间:2024/05/02 00:07
Spring MVC 与 Struts MVC的区别
想了解Spring MVC 与 Struts MVC的区别
1.先搞明白什么叫MVC
1.1要搞明白什么叫MVC?
MVC模式,即模型(Model)、视图(View)和控制器(Controller)三个部分
模型(Model)即负责封装应用的状态,并实现应用的功能。常分为数据模型和业务逻辑模型
视图层(View)用来将模型的内容展现给用户,用户可以通过视图来请求模型进行更新。用户在界面上操作或者填写完成后,会点击提交按钮或是以其它触发事件的方式,来向控制器发出请求。
控制器(Controller)就是用来控制应用程序的流程和处理视图的请求,根据用户的请求,调用模型来处理用户的请求,处理过后,调用相应的视图来将模型展示给用户。
1.2为什么要使用MVC?
为了把代码根据用途分类,便于管理和维护。
大规模开发的时候,整体风格保持一致
注:MVC不能促进代码重用,也不会减少代码,甚至有时候增加代码,不会提高速度,因为M/V/C分层的时候,常常要使用到变量类型是要转型的,从而速度变慢。
1.3MVC模式有什么特点?有什么优缺点?
优点:1.对开发者来说,可以只考虑其中的一层进行开发
2.降低了层与层之间的依赖关系
3.有利于大型项目的标准化
4.有利于逻辑层的复用
缺点:1.降低了系统的性能,因为不使用MVC,很多业务往往可以直接访问数据库,但是如果采用了数据库,就需要一个中间层,从而降低了效率。
2.增加了代码
3.因为M/V/C分层的时候,常常要使用到变量类型是要转型的,从而速度变慢
4.增加级联的修改,比如我们要在视图层增加一个功能,就需要在视图层一下都增加相应的代码。
总结:关于第一个缺点,完全可以通过系统的缓存机制来减小对性能的影响。第二个缺点,我想只能通过采用一些设计模式来得到改善吧。
2.什么叫struts MVC
其中JSP为View Actionselvet为controller Action为model
sturts并不能提高程序运行的效率,相反,它反而降低了效率,但是,它使开发效率和维护效率大大增加了,这也就是使用框架的好处之一。
3.Spring MVC原理
Spring MVC原理图如图:
1.用户将request传递给服务器,服务器就将request交给前端处理器Dispatcher Servlet ,前端处理器不会直接去处理这些请求,他会把这些请求交给相应的处理器去处理
2.前度控制器去解析URL,在将根据URL,由映射处理器去ActionMapping配置文件中,获得相应的Handler,
3.获得Handler后,将Handler交给HandlerAdapter处理,调用处理器相应功能处理方法,并返回ModelAndView
4.得到ModelAndView后,将ModelAndView交给ViewResolver处理,ViewResolver渲染Model和View,并返回给前端控制器
5.前端控制器将渲染视图传递给用户。
4.Spring MVC与Struts MVC的对比(这是从别人的博客里拿过来的,觉得写得很好http://dev.yesky.com/315/2069815.shtml)
一、Struts
Struts是Apache软件基金下Jakarta项目的一部分。Struts框架的主要架构设计和开发者是Craig R.McClanahan。Struts 是目前Java Web MVC框架中不争的王者。经过长达五年的发展,Struts已经逐渐成长为一个稳定、成熟的框架,并且占有了MVC框架中最大的市场份额。但是Struts某些技术特性上已经落后于新兴的MVC框架。面对Spring MVC、Webwork2 这些设计更精密,扩展性更强的框架,Struts受到了前所未有的挑战。但站在产品开发的角度而言,Struts仍然是最稳妥的选择。
Struts有一组相互协作的类(组件)、Serlvet以及jsp tag lib组成。基于struts构架的web应用程序基本上符合JSP Model2的设计标准,可以说是MVC设计模式的一种变化类型。根据上面对framework的描述,我们很容易理解为什么说Struts是一个web framwork,而不仅仅是一些标记库的组合。但 Struts 也包含了丰富的标记库和独立于该框架工作的实用程序类。Struts有其自己的控制器(Controller),同时整合了其他的一些技术去实现模型层(Model)和视图层(View)。在模型层,Struts可以很容易的与数据访问技术相结合,包括EJB,JDBC和Object Relation Bridge。在视图层,Struts能够与JSP, Velocity Templates,XSL等等这些表示层组件想结合。
Struts的体系结构
struts framework是MVC 模式的体现,下面我们就从分别从模型、视图、控制来看看struts的体系结构(Architecture)。
从视图角度(View)
主要由JSP建立,struts自身包含了一组可扩展的自定义标签库(TagLib),可以简化创建用户界面的过程。目前包括:Bean Tags,HTML Tags,Logic Tags,Nested Tags,Template Tags 这几个Taglib。有关它们的详细资料请参考struts用户手册
从模型角度(Model)
模型主要是表示一个系统的状态(有时候,改变系统状态的业务逻辑操作也也划分到模型中)。在Struts中,系统的状态主要有ActiomForm Bean体现,一般情况下,这些状态是非持久性的。如果需要将这些状态转化为持久性数据存储,Struts本身也提供了Utitle包,可以方便的与数据库操作
从控制器角度(Controller)
在Struts framework中, Controller主要是ActionServlet,但是对于业务逻辑的操作则主要由Action、ActionMapping、ActionForward这几个组件协调完成(也许这几个组件,应该划分到模型中的业务逻辑一块)。其中,Action扮演了真正的业务逻辑的实现者,而ActionMapping和ActionForward则指定了不同业务逻辑或流程的运行方向。
对于Struts 如何控制、处理客户请求,让我们通过对struts的四个核心组件介绍来具体说明。这几个组件就是:ActionServlet。Action Classes,Action Mapping(此处包括ActionForward),ActionFrom Bean。
二、Spring
Spring 实际上是Expert One-on-One J2EE Design and Development 一书中所阐述的设计思想的具体实现。在One-on-One 一书中,Rod Johnson 倡导J2EE 实用主义的设计思想,并随书提供了一个初步的开发框架实现(interface21 开发包)。而Spring 正是这一思想的更全面和具体的体现。Rod Johnson 在interface21 开发包的基础之上,进行了进一步的改造和扩充,使其发展为一个更加开放、清晰、全面、高效的开发框架。
Spring是一个开源框架,由Rod Johnson创建并且在他的著作《J2EE设计开发编程指南》里进行了描述。它是为了解决企业应用开发的复杂性而创建的。Spring使使用基本的JavaBeans来完成以前只可能由EJB完成的事情变得可能了。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。
简单来说,Spring是一个轻量的控制反转和面向切面的容器框架。当然,这个描述有点过于简单。但它的确概括出了Spring是做什么的。为了更好地理解Spring,让我们分析一下这个描述:
1、轻量,从大小与开销两方面而言Spring都是轻量的。完整的Spring框架可以在一个大小只有1MB多的JAR文件里发布。并且Spring所需的处理开销也是微不足道的。此外,Spring是非侵入式的:典型地,Spring应用中的对象不依赖于轻量??从大小与开销两方面而言Spring都是轻量的。完整的Spring框架可以在一个大小只有1MB多的JAR文件里发布。并且Spring所需的处理开销也是微不足道的。此外,Spring是非侵入式的:典型地,Spring应用中的对象不依赖于Spring的特定类。
2、控制反转??Spring通过一种称作控制反转(IoC)的技术促进了松耦合。当应用了IoC,对象被动地传递它们的依赖而不是自己创建或者查找依赖对象。你可以认为IoC与JNDI相反??不是对象从容器中查找依赖,而是容器在对象初始化时不等被请求就将依赖传递给它。
3、面向切面??Spring包含对面向切面编程的丰富支持,允许通过分离应用的业务逻辑与系统服务(例如审计与事物管理)进行内聚性的开发。应用对象只做它们应该做的??完成业务逻辑??仅此而已。它们并不负责(甚至是意识)其它的系统关注点,例如日志或事物支持。
4、容器??Spring包含和管理应用对象的配置和生命周期,在这个意义上它是一种容器。你可以配置你的每个bean如何被创建??基于一个配置原形为你的bean创建一个单独的实例或者每次需要时都生成一个新的实例??以及它们是如何相互关联的。然而,Spring不应该被混同于传统的重量的EJB容器,它们经常是庞大与笨重的,难以使用。
框架:Spring使由简单的组件配置和组合复杂的应用成为可能。在Spring中,应用对象被声明式地组合,典型地是在一个XML文件里。Spring也提供了很多基础功能(事务管理、持久性框架集成等等),将应用逻辑的开发留给了你。
所有Spring的这些特征使你能够编写更干净、更可管理、并且更易于测试的代码。它们也为Spring中的各种子框架提供了基础。
Struts是Apache软件基金下Jakarta项目的一部分。Struts框架的主要架构设计和开发者是Craig R.McClanahan。Struts 是目前Java Web MVC框架中不争的王者。经过长达五年的发展,Struts已经逐渐成长为一个稳定、成熟的框架,并且占有了MVC框架中最大的市场份额。但是Struts某些技术特性上已经落后于新兴的MVC框架。面对Spring MVC、Webwork2 这些设计更精密,扩展性更强的框架,Struts受到了前所未有的挑战。但站在产品开发的角度而言,Struts仍然是最稳妥的选择。
Struts有一组相互协作的类(组件)、Serlvet以及jsp tag lib组成。基于struts构架的web应用程序基本上符合JSP Model2的设计标准,可以说是MVC设计模式的一种变化类型。根据上面对framework的描述,我们很容易理解为什么说Struts是一个web framwork,而不仅仅是一些标记库的组合。但 Struts 也包含了丰富的标记库和独立于该框架工作的实用程序类。Struts有其自己的控制器(Controller),同时整合了其他的一些技术去实现模型层(Model)和视图层(View)。在模型层,Struts可以很容易的与数据访问技术相结合,包括EJB,JDBC和Object Relation Bridge。在视图层,Struts能够与JSP, Velocity Templates,XSL等等这些表示层组件想结合。
Struts的体系结构
struts framework是MVC 模式的体现,下面我们就从分别从模型、视图、控制来看看struts的体系结构(Architecture)。
从视图角度(View)
主要由JSP建立,struts自身包含了一组可扩展的自定义标签库(TagLib),可以简化创建用户界面的过程。目前包括:Bean Tags,HTML Tags,Logic Tags,Nested Tags,Template Tags 这几个Taglib。有关它们的详细资料请参考struts用户手册
从模型角度(Model)
模型主要是表示一个系统的状态(有时候,改变系统状态的业务逻辑操作也也划分到模型中)。在Struts中,系统的状态主要有ActiomForm Bean体现,一般情况下,这些状态是非持久性的。如果需要将这些状态转化为持久性数据存储,Struts本身也提供了Utitle包,可以方便的与数据库操作
从控制器角度(Controller)
在Struts framework中, Controller主要是ActionServlet,但是对于业务逻辑的操作则主要由Action、ActionMapping、ActionForward这几个组件协调完成(也许这几个组件,应该划分到模型中的业务逻辑一块)。其中,Action扮演了真正的业务逻辑的实现者,而ActionMapping和ActionForward则指定了不同业务逻辑或流程的运行方向。
对于Struts 如何控制、处理客户请求,让我们通过对struts的四个核心组件介绍来具体说明。这几个组件就是:ActionServlet。Action Classes,Action Mapping(此处包括ActionForward),ActionFrom Bean。
二、Spring
Spring 实际上是Expert One-on-One J2EE Design and Development 一书中所阐述的设计思想的具体实现。在One-on-One 一书中,Rod Johnson 倡导J2EE 实用主义的设计思想,并随书提供了一个初步的开发框架实现(interface21 开发包)。而Spring 正是这一思想的更全面和具体的体现。Rod Johnson 在interface21 开发包的基础之上,进行了进一步的改造和扩充,使其发展为一个更加开放、清晰、全面、高效的开发框架。
Spring是一个开源框架,由Rod Johnson创建并且在他的著作《J2EE设计开发编程指南》里进行了描述。它是为了解决企业应用开发的复杂性而创建的。Spring使使用基本的JavaBeans来完成以前只可能由EJB完成的事情变得可能了。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。
简单来说,Spring是一个轻量的控制反转和面向切面的容器框架。当然,这个描述有点过于简单。但它的确概括出了Spring是做什么的。为了更好地理解Spring,让我们分析一下这个描述:
1、轻量,从大小与开销两方面而言Spring都是轻量的。完整的Spring框架可以在一个大小只有1MB多的JAR文件里发布。并且Spring所需的处理开销也是微不足道的。此外,Spring是非侵入式的:典型地,Spring应用中的对象不依赖于轻量??从大小与开销两方面而言Spring都是轻量的。完整的Spring框架可以在一个大小只有1MB多的JAR文件里发布。并且Spring所需的处理开销也是微不足道的。此外,Spring是非侵入式的:典型地,Spring应用中的对象不依赖于Spring的特定类。
2、控制反转??Spring通过一种称作控制反转(IoC)的技术促进了松耦合。当应用了IoC,对象被动地传递它们的依赖而不是自己创建或者查找依赖对象。你可以认为IoC与JNDI相反??不是对象从容器中查找依赖,而是容器在对象初始化时不等被请求就将依赖传递给它。
3、面向切面??Spring包含对面向切面编程的丰富支持,允许通过分离应用的业务逻辑与系统服务(例如审计与事物管理)进行内聚性的开发。应用对象只做它们应该做的??完成业务逻辑??仅此而已。它们并不负责(甚至是意识)其它的系统关注点,例如日志或事物支持。
4、容器??Spring包含和管理应用对象的配置和生命周期,在这个意义上它是一种容器。你可以配置你的每个bean如何被创建??基于一个配置原形为你的bean创建一个单独的实例或者每次需要时都生成一个新的实例??以及它们是如何相互关联的。然而,Spring不应该被混同于传统的重量的EJB容器,它们经常是庞大与笨重的,难以使用。
框架:Spring使由简单的组件配置和组合复杂的应用成为可能。在Spring中,应用对象被声明式地组合,典型地是在一个XML文件里。Spring也提供了很多基础功能(事务管理、持久性框架集成等等),将应用逻辑的开发留给了你。
所有Spring的这些特征使你能够编写更干净、更可管理、并且更易于测试的代码。它们也为Spring中的各种子框架提供了基础。
0 0
- Spring MVC 与 Struts MVC的区别
- Struts MVC与Spring MVC的区别
- spring mvc与struts的区别
- spring mvc与struts的区别
- spring mvc与struts的区别
- spring mvc与struts的区别
- Spring MVC与Struts区别
- Spring MVC 和 struts MVC的区别。
- spring mvc 与struts mvc的比较
- struts与spring mvc及filter、servlet的区别
- struts与spring mvc
- struts的MVC和spring的MVC的区别
- struts的MVC和spring的MVC的区别
- struts的MVC和spring的MVC的区别
- spring mvc和struts的区别
- Struts与Spring MVC的比较
- Spring MVC和Struts区别
- Spring MVC与struts比较
- 正向代理与反向代理的区别【Nginx读书笔记】
- JDK6的新特性之六:插入式注解处理API(Pluggable Annotation Processing API)
- poj 1088 滑雪(记忆化搜索)
- 活动安排问题
- 插入式注解处理器
- Spring MVC 与 Struts MVC的区别
- 黑马程序员_java各种排序
- iOS8 Size Classes的理解与使用
- CSS初学者到高手成长之路
- 数字图像处理MATLAB命令汇总
- Matlab 关于如何读取文件夹中的所有图片(3种方法)
- 一线城市楼市限购2015年或继续执行
- 使用Jconsole远程监控Linux系统中java服务器
- sqlite单引号的处理