Spring和Struts2

一、Spring

1、Spring概述

Spring是一个轻量级的DI和AOP容器框架。

Spring是非侵入式的,基于spring开发的应用一般不依赖于spring的类。

DI:称作依赖注入(Dependency Injection),和控制反转的一个概念,具体的讲,当一个角色需要另外一个角色协助的时候,在传统的程序设计中,通常有调用者来创建被调用者的实例。但是在spring中创建被调用者将不再有调用者完成,因此叫控制反转。创建被调用对象由Spring来完成,在容器实例化对象的时候主动的将被调用者(或者说它的依赖对象)注入给调用对象,因此又叫依赖注入。

AOP:Spring对面向切面编程提供了强有力的支持,通过它让我们将业务逻辑从应用服务(如事务管理)中分离出来,实现了高内聚开发,应用对象只关注业务逻辑,不再负责其它系统问题(如日志、事务等)。

           Spring支持用户自定义切面。 面向切面编程是面向对象编程的有力补充。

           面向对象编程将程序分成各个层次的对象,面向切面的程序将运行过程分解成各个切面。

           AOP是从运行程序的角度去考虑程序的结构,提取业务处理过程的切面。

           OOP是静态的抽象,AOP是动态的抽象,是对应用执行过程的步骤进行抽象,从而获得步骤之间的逻辑划分。

容器:Spring是个容器,因为它包含并且管理应用对象的生命周期和配置。如对象的创建、销毁、回调等。

框架:Spring作为一个框架,提供了一些基础功能,(如事务管理,持久层集成等),使开发人员更专注于开发应用逻辑。
 

2、Spring的优点

     1).使用Spring的IOC容器,将对象之间的依赖关系交给Spring,降低组件之间的耦合性,让我们更专注于应用逻辑

     2).可以提供众多服务,事务管理,WS等。

     3).AOP的很好支持,方便面向切面编程。

     4).对主流的框架提供了很好的集成支持,如hibernate,Struts2,JPA等

     5).Spring DI机制降低了业务对象替换的复杂性。

     6).Spring属于低侵入,代码污染极低。

     7).Spring的高度可开放性,并不强制依赖于Spring,开发者可以自由选择Spring部分或全部

 

二、Struts2

1、Struts2概述

Struts2 是一个相当强大的Java Web开源框架,是一个基于POJO的Action的MVC Web框架。它基于当年的Webwork和XWork框架,继承其优点,同时做了相当的改进。

2、Struts2的优点

     1)、Struts2基于MVC架构,框架结构清晰,开发流程一目了然,开发人员可以很好的掌控开发的过程。

      2)、使用OGNL进行参数传递。 OGNL提供了在Struts2里访问各种作用域中的数据的简单方式,你可以方便的获取Request,Attribute,Application,Session,Parameters中的数据。大大简化了开发人员在获取这些数据时的代码量。

     3)、强大的拦截器 。Struts2 的拦截器是一个Action级别的AOP,Struts2中的许多特性都是通过拦截器来实现的,例如异常处理,文件上传,验证等。拦截器是可配置与重用的,可以将一些通用的功能如:登录验证,权限验证等置于拦截器中以完成一些Java Web项目中比较通用的功能。

      4)、易于测试。 Struts2的Action都是简单的POJO,这样可以方便的对Struts2的Action编写测试用例,大大方便了Java Web项目的测试。

     5)、易于扩展的插件机制 。在Struts2添加扩展是一件愉快而轻松的事情,只需要将所需要的Jar包放到WEB-INF/lib文件夹中,在struts.xml中作一些简单的设置就可以实现扩展。

     6)、模块化 。Struts2已经把模块化作为了体系架构中的基本思想,可以通过三种方法来将应用程序模块化: 将配置信息拆分成多个文件、 把自包含的应用模块创建为插件、 创建新的框架特性,即将与特定应用无关的新功能组织成插件,以添加到多个应用中去。

     7)、全局结果与声明式异常。 为应用程序添加全局的Result,和在配置文件中对异常进行处理,这样当处理过程中出现指定异常时,可以跳转到特定页面,这一功能十分实用。

三、Spring MVC和Struts2的比较的优点

我们用struts2时采用的是传统的配置文件的方式,并没有使用传说中的零配置。spring3 mvc可以认为已经100%零配置了(除了配置spring mvc-servlet.xml外)。

Spring MVC和Struts2的区别:

(1)、机制:spring mvc的入口是servlet,而struts2是filter。

(2)、性能:spring mvc使用更加简洁,开发效率比struts2高。

(3)、参数传递:struts是在接受参数的时候,可以用属性来接受参数,这就说明参数是让多个方法共享的。

(4)、设计思想上:struts更加符合oop的编程思想, spring就比较谨慎,在servlet上扩展。

(5)、intercepter的实现机制:struts有自己的interceptor机制,spring mvc用的是独立的AOP方式。

 

(6)、spring mvc是方法级别的拦截,一个方法对应一个request上下文,而方法同时又跟一个url对应,所以说从架构本身上spring3 mvc就容易实现restful url。

struts2是类级别的拦截,每次发一次请求都会实例一个action。一个类(Action对象)对应一个request上下文;struts2实际上是通过setter getter方法与request打交道的;实现restful url要费劲

(7)、struts2类属性被所有方法共享,这也就无法用注解或其他方式标识其所属方法了。所有Action变量也是共享的,这不会影响程序运行,却给编码,读程序时带来麻烦。

spring3 mvc的方法之间基本上独立的,独享request response数据,请求数据通过参数获取,处理结果通过ModelMap交回给框架方法之间不共享变量,

(8)、spring3 mvc的验证也是一个亮点,支持JSR303,处理ajax的请求更是方便,只需一个注解@ResponseBody ,然后直接返回响应文本即可。


 

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值