请问spring与struts有啥区别?

Posted

tags:

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

请问既然spring也是框架那为什么还能和struts在一起用呢?二者的区别谁能详细的讲解一下吗?非常感谢!

struts是表现层框架,spring是业务层框架

区别一:

Struts的核心是基于一个Filter即StrutsPreparedAndExcuteFilter 

Spring的核心是基于一个Servlet即DispatcherServlet(前端控制器)

区别二:

Struts是基于类开发的,传递的参数是通过类的属性传递(属性驱动和模型驱动),所以只能设计成多例prototype

Spring是基于类中的方法开发的,也就是一个url对应一个方法,传递参数是传到方法的形参上面,所以既可以是单例模式也可以是多例模式singiton

区别三:

Struts2采用的是值栈存储请求以及响应数据,OGNL存取数据

Spring采用request来解析请求内容,然后由其内部的getParameter给方法中形参赋值,再把后台处理过的数据通过ModelAndView对象存储,Model存储数据,View存储返回的页面,再把对象通过request传输到页面去。

扩展资料:

spring框架的优点有以下几点:

1、JAVA EE应该更加容易使用。

2、面向对象的设计比任何实现技术(比如JAVA EE)都重要。

3、面向接口编程,而不是针对类编程。Spring将使用接口的复杂度降低到零。(面向接口编程有哪些复杂度?)

4、代码应该易于测试。Spring框架会帮助你,使代码的测试更加简单。

5、提供了应用程序配置的最好方法。

6、在Java中,已检查异常(Checked exception)被过度使用。框架不应该迫使你捕获不能恢复的异常。

参考链接:百度百科—spring架构

参考技术A

1、实现机制不同

struts2框架是类级别的拦截,每次来了请求就创建一个controller中对应的Action,然后调用setter getter方法把request中的数据注入 。struts2实际上是通过setter getter方法与request打交道的。struts2中,一个Action对象对应一个request上下文。

spring3 mvc不同,spring3mvc是方法级别的拦截,拦截到方法后根据参数上的注解,把request数据注入进去。在spring3mvc中,一个方法对应一个request上下文,而方法同时又跟一个url对应。

spring mvc的入口是servlet,而struts2是filter。spring mvc会稍微比struts快。

2、Request数据共享不同

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

struts2就比较乱,虽然方法之间也是独立的,但其所有Action变量是共享的。这不会影响程序运行,却给编码、读程序时带来麻烦 。

3、参数传不同

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

4、设计思想上不同

struts更加符合oop的编程思想, spring就比较谨慎,在servlet上扩展。

5、intercepter的实现机制不同

struts有以自己的interceptor机制,spring mvc用的是独立的AOP方式。这样导致struts的配置文件量还是比spring mvc大,虽然struts的配置能继承,所以论使用上来讲,spring mvc使用更加简洁,开发效率Spring MVC确实比struts2高。

参考资料:百度百科—struts

参考资料:百度百科—spring

参考技术B spring是一套完整框架,其中springmvc这部分完全可以替代struts的功能,只是狭义的来说我们并不会使用spring整套。
一般所说的ssh是指利用spring框架中的某些特性譬如“依赖注入”来更好的利用struts框架编写代码。
也就是说这是两个不同的框架,而我们使用时习惯将两个框架的优点集中在一起
参考技术C struts是表现层框架,spring是业务层框架(但不局限于业务层)

打个比方,想做爱做的事,找老婆也可以,找情人也可以。

难道你会问既然有了老婆,为什么还想找情人?

一言以蔽之,作用不同!
参考技术D structs是个Web框架

spring可以看作是个JEE的轻量级中间件

spring支持整套企业计算的特性,比如事务、切面、分布式调用、安全等,并且具有很强的第三方框架整合能力。

Struts最多就是个Web框架。

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

struts2中的Action接口和Actionsupport接口各有啥作用

struts2的拦截器跟spring2 AOP有啥区别?哪个好?

struts2 hibernate spring 三大框架有啥区别,他们各自适用的范围是啥?各自适用的场合是啥?

jsf struts jsp spring 啥关系和区别?

struts2和strtus1的主要区别

Struts 标签中的 # 、 % 和 $ 符号有啥区别?