Springmvc和struts都是基于mvc模式的javaEE框架、
区别一:SpringMVC基于方法开发,struts基于类开发。
在使用SpringMVC框架进行开发时,会将URL请求路径与Controller类的某个方法进行绑定,请求参数作为该方法的形参。当用户请求该URL路径时,SpringMVC会将URL信息与Controller类的某个方法进行映射,生成一个Handler对象,该对象中只包含了一个method方法。方法执行结束之后,形参数据也会被销毁。
而在使用struts框架进行开发时,Action类中所有的方法使用的请求参数都是Action类中的成员变量,随着方法变得越来越多,就很难分清楚Action中那么多的成员变量到底是哪一个方法使用的,整个Action会变得十分混乱。
比较而言,SpringMVC的优点是,其所有的请求参数都会被定义为相应方法的形参,用户在网页上的请求路径会被映射到Controller类对应的方法上,此时请求参数会注入到对应方法的形参上。
区别二:SpringMVC可以进行单例开发,strtus无法使用单例。
SpringMVC支持单例开发模式,而strtuts由于只能通过类的成员变量接收参数,所以无法使用单例模式,只能使用多例。
(单例:1.私有的构造方法初始化2.常用一个单例的对象3.通过方法获取单例对象)
区别三:struts的处理速度略微比SpringMVC慢,原因是Struts使用了struts标签,struts标签由于设计原因,会出现加载数据慢的情况。
区别四:SpringMvc使用更加简洁,同时还支持JSR303,处理ajax的请求更方便。
(JSR303是一套参数校验的标准,它定义了很多常用的校验注解,我么可以直接将这些注解加在我们JavaBean的属性上面,尤其是JavaBean的属性上面,就可以在需要校验的时候进行校验了。)
Struct2的OGNL表达式使页面的开发效率相比SpringMVC更高,但执行效率并并没有JSTL提升,尤其是struts2的表单标签,远没有html执行效率高。