首先说一下Struts2的的要点
实现机制: struts2 基于filter机制
处理方式: struts2是类级别的拦截,每次来个请求就会创建一个action,然后调用setter,getter方法把request中的 数据 注入,struts2实际上是通过setter getter方法同request打交道的。Struts2中一个action对象对应一 个request上下文;
性能: struts2是基于类的,每次发一次请求都会实例一个action,每个action都会被注入属性;
参数传递: struts2接受参数的时候,可以用属性来接受参数,说明参数是让多个方法共享的
设计思想: struts2更符合oop编程思想,struts2脱离了servlet,struts2的action可以是一个普通的java类
Interceptor的实现机制: Struts2有自己的interceptor机制
优点 : struts2的多层拦截器,多实例action性能都很好,并不是导致性能问题的原因
缺点: struts2由于采用了值栈,OGNL表达式等,会导致性能下降,如果避免使用或者减少使用性能还是不错的;
Struts2需要针对每个Request进行封装,把Request,Session等Servlet生命周期的变量封装成一个一个 Map,供给每个Action使用,并保证线程安全。所以在原则上,是比较耗费内存的;
SpringMVC的要点
实现机制: springmvc 基于servlet机制
处理方式: springmvc是方法级别的拦截,一个方法对应一个request上下文,而方法同时又和一个url对应。所以 说从框架本身上,springmvc就容易实现restful url
性能: springmvc会稍微比struts2快,springmvc是基于方法的设计
参数传递: springmvc是基于方法的,每个方法都可以设置自己的参数
设计思想: springmvc在servlet上扩展
Interceptor的实现机制: spring mvc用的是独立的aop方式
优点 : 除了spring-mvc.xml基本可以做到零配置。方法的访问支持restful风格,参数的传递和配置都很灵活, springmvc3的验证也是一个亮点,支持jsp303处理ajax的请求更是方便,只需一个注解@ResponseBody, 然后直接返回响应文本即可;springMVC是spring的一个子框架,于spring整合的话,是无缝整合
缺点: 基于springmvc的注解非常灵活,不利于维护,配置文件可以看清所有的mvc框架,