0%

2.2.2 Spring mvc和 Struts2的区别

2.2.2 Spring MVC和Struts 2的区别

  • 从机制上来说, Spring MVC的入口是Servlet,而Struts 2的入口是filter,这样就导致了二者的机制不同。
  • 从性能上来说,
    • Struts 2基于类的设计,每发一次请求都会创建一个Action实例,每个Action都会被注入属性;
    • Spring MVC基于方法的设计,粒度更细,一个方法对应一个request上下文,而方法同时又跟一个URL对应,从架构本身上Spring MVC就非常容易实现RESTful URL,而Struts 2的架构实现起来相对麻烦,因为Struts 2Action的一个方法可以对应一个URL,但是类属性却被所有方法共享,这也就无法用注解或其他方式标识属性所属的方法。由于Struts 2需要针对每个request进行封装,把requestsessionServlet生命周期的变量封装成一个一个的Map,提供给每个Action使用,并保证线程安全,所以在原则上, Struts 2是比较耗费内存的,所以Spring MVC在性能上高于Struts 2
  • 从参数上来说, Spring MVC的方法之间基本上是独立的,独享工requestresponse数据,请求数据通过参数获取,处理结果通过Model交回给框架,方法之间不共量;而Struts 2虽然方法之间也是独立的,但其所有Action变量是共享的,每次来了请求就创建一个Action,一个Action对象对应一个request上下文.
  • 从设计思想上来说, Strut s2使用的是拦截器( Interceptor)机制,而Spring MVC使用的是独立的AOP方式,这样导致Struts 2的配置文件量还是比Spring MVC大,Spring MVC的使用更加简洁
  • 从数据验证上来说, Spring MVC的验证功能是一个亮点,支持JSR303,处理Ajax的请求更是方便,只需一个注解@ResponseBody,然后直接返回响应文本即可,而Struts2的验证则比较烦琐。
  • 从配置上来说,在实际项目开发中使用Struts 2时大多采用传统的配置文件的方式, Spring MVC除了配置springmvc-servlet.xml文件之外,已经是100%的零配置开发,所以在开发效率上高于Struts2

    原文链接: 2.2.2 Spring mvc和 Struts2的区别