请问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架构
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
一般所说的ssh是指利用spring框架中的某些特性譬如“依赖注入”来更好的利用struts框架编写代码。
也就是说这是两个不同的框架,而我们使用时习惯将两个框架的优点集中在一起
打个比方,想做爱做的事,找老婆也可以,找情人也可以。
难道你会问既然有了老婆,为什么还想找情人?
一言以蔽之,作用不同!
spring可以看作是个JEE的轻量级中间件
spring支持整套企业计算的特性,比如事务、切面、分布式调用、安全等,并且具有很强的第三方框架整合能力。
Struts最多就是个Web框架。