1.struts1和struts2比较
| Struts1 | Struts2 |
Action类的实现方式 | 扩展Action类或者Action的子类 | 不用实现任何类和接口,虽然Struts2中提供一个ActionSupport类,但是,不是必须的。 |
线程模式 | 单例模式,必须设计成线程安全的 | 每个请求产生一个实例 |
单例模式:
| ||
Servlet 依赖: | 依赖于Servlet API ,因为当一个Action被调用时HttpServletRequest 和 HttpServletResponse 被传递给execute方法,不易于测试 | 不依赖,Action不依赖于容器,允许Action脱离容器单独被测试 |
捕获输入 | ActionForm对象捕获输入 | 直接使用Action属性作为输入属性,但Struts2也支持ActionForm模式 |
表达式语言 | JSTL | JSTL,OGNL |
绑定值到页面 | 标准JSP机制把对象绑定到页面中来访问S | ValueStack策略允许通过一系列名称相同但类型不同的属性重用页面 |
封装请求参数 | 强制使用ActionForm对象封装请求的参数 | Struts2可以选择使用POJO类来封装请求的参数,或者直接使用Action的属性。 |
2. struts2和springmvc比较
| Struts2 | springmvc |
机制(入口)核心控制器 | Filter FilterDispatcher | Servlet DispatcherServlet |
应用区别: 1、Filter用来定义对哪些url就行单独处理。 2、Servlet则是用来定义url以及url对应后台java类:解决url和后台类的映射关系。
| ||
拦截方式 | 类级别的拦截, 一个类对应一个request上下文 | 方法级别的拦截,一个方法对应一个request上下文 |
性能 | spring mvc是基于方法的设计,而sturts是基于类,每次发一次请求都会实例一个action,每个action都会被注入属性,而spring基于方法,粒度更细,但要小心把握像在servlet控制数据一样。spring3 mvc是方法级别的拦截,拦截到方法后根据参数上的注解,把request数据注入进去,在spring3 mvc中,一个方法对应一个request上下文。而struts2框架是类级别的拦截,每次来了请求就创建一个Action,然后调用setter getter方法把request中的数据注入;struts2实际上是通过setter getter方法与request打交道的;struts2中,一个Action对象对应一个request上下文。 | |
低 | 高 | |
拦截器 | Struts2拦截器机制 | 独立的AOP方式 |
Ajax支持 | 截器集成了Ajax,在Action中处理时一般必须安装插件或者自己写代码集成进去 | 配置注解 @ResponseBody直接返回响应文本 |
以上只是对比后台差异,前台无差异 | ||
集成spring | 集成 | 无缝支持 |
传参 | 属性可以接受 |
|
Restful | 不支持 | 支持 |
Struts2和springmvc原理图:
http://blog.csdn.net/gstormspire/article/details/8239182
3. spring 和springmvc关系
spring是一个开源框架,spring mvc是一个实现MVC模式的框架,spring mvc是spring的一部分