进行java开发,我们都需要用到框架,合理的使用java框架能够提高开发项目效率,而struts2和springMVC就是常用的框架之一,那struts2和springMVC的区别有哪些?下面来我们就来给大家讲解一下。
一、拦截机制的不同
Struts2是类级别的拦截,每次请求就会创建一个Action,和Spring整合时Struts2的ActionBean注入作用域是原型模式prototype,然后通过setter,getter吧request数据注入到属性。Struts2中,一个Action对应一个request,response上下文,在接收参数时,可以通过属性接收,这说明属性参数是让多个方法共享的。Struts2中Action的一个方法可以对应一个url,而其类属性却被所有方法共享,这也就无法用注解或其他方式标识其所属方法了,只能设计为多例。
SpringMVC是方法级别的拦截,一个方法对应一个Request上下文,所以方法直接基本上是独立的,独享request,response数据。而每个方法同时又何一个url对应,参数的传递是直接注入到方法中的,是方法所独有的。处理结果通过ModeMap返回给框架。在Spring整合时,SpringMVC的Controller Bean默认单例模式Singleton,所以默认对所有的请求,只会创建一个Controller,有应为没有共享的属性,所以是线程安全的,如果要改变默认的作用域,需要添加@Scope注解修改。
Struts2有自己的拦截Interceptor机制,SpringMVC这是用的是独立的Aop方式,这样导致Struts2的配置文件量还是比SpringMVC大。
二、底层框架的不同
Struts2采用Filter(StrutsPrepareAndExecuteFilter)实现,SpringMVC(DispatcherServlet)则采用Servlet实现。Filter在容器启动之后即初始化;服务停止以后坠毁,晚于Servlet。Servlet在是在调用时初始化,先于Filter调用,服务停止后销毁。
三、性能方面
Struts2是类级别的拦截,每次请求对应实例一个新的Action,需要加载所有的属性值注入,SpringMVC实现了零配置,由于SpringMVC基于方法的拦截,有加载一次单例模式bean注入。所以,SpringMVC开发效率和性能高于Struts2。
四、配置方面
spring MVC和Spring是无缝的。从这个项目的管理和安全上也比Struts2高。
struts2有什么优点?
1.实现了MVC模式,层次结构清晰,使程序员只需关注业务逻辑的实现。
2.丰富的标签库,大大提高了开发的效率。
3.Struts2提供丰富的拦截器实现。
4.通过配置文件,就可以掌握整个系统各个部分之间的关系。
5.异常处理机制,只需在配置文件中配置异常的映射,即可对异常做相应的处理。
6.Struts2的可扩展性高。
7.面向切面编程的思想在Strut2中也有了很好的体现。
Struts2主要是用于创建企业级 Java web 应用程序,它虽然有优点,但是也是有缺点的,从jsp中传过来的参数时还是有点麻烦,并且安全性还有待提高。最后大家如果想要了解更多java架构师知识,敬请关注奇Q工具网。
推荐阅读: