介绍
Struts 是Apache于2002年推广的一个开源项目,主要是进行MVC实现的开发框架。但是为什么需要为MVC设计一个框架呢?
发展历程
标准开发技术
如果没有进行任何的设计会发现代码重复量惊人
- 验证操作需要重复编写;
- 用户需要自己手工接收参数,手工进行数据的专项,而后设置到VO对象
- 所有的跳转路径都统一定义在了程序之中,后期维护困难
- 文件上传操作需要自己手工处理
自主设计开发框架
开发了一个DispacherServlet,它提供如下好处:
- 自动进行接收以及VO对象的转换,将VO类的概念进一步提升;
- 可以定义专门的资源文件进行各种信息以及跳转路径的保存;
- 上传的操作对用户而言几乎隐藏,用户接收参数时,也不再需要区分表单到底是否封装;
- 提供统一的验证操作形式,保证服务器端的简化
- 利用反射机制的操作进行一个控制器的多业务处理
利用自己的设计来解决开发的重复性操作固然是一件非常兴奋的事情,但事实上这样的开发操作如果用于项目设计之中,那么要想实现一个几乎完美的DispatcherServlet实在是太难了。而且如果你真的开发完成了,并且希望在项目中实际使用,那么至少应该将代码变为接近于90%的完美无缺才可以。
所以在后来使用JSP、Servlet进行MVC标准开发的过程之中,就特别需要有一家组织可以帮助所有的公司提供一个近乎于完美的开发类库,那么就可以为我们的开发与设计节约大量的时间,在这样的背景下产生了最早的Struts技术。随着技术的不断成熟和发展,Struts产生了v1.1、 v1.2、v1.3 (最终定格在了1.3版本)。
在Struts 1.x 中“完美”的实现MVC设计模式的体现,在这里面用户可以使用统一的风格进行数据的验证,也可以使用第三方验证框架(及其不好用,没有任何一个开发框架的验证框架好用)、支持FileUpload进行上传,并且支持开发多业务处理等等优势,所以在最初的时候Struts 1.x 被大量的采用。
被Struts2.x所替代主要是因为Struts1.x有一些天热的劣势(初期的设计问题),而在Struts 2.x支持了拦截器的操作。到了今天,所有的新项目已经很难见到Struts 1.x的身影了。
在最初的几年里,只要你从事Java开发,如果不会Struts,那么基本上就不叫Java开发。
MVC与Struts的对比
MVC是一个标准的设计模式,重点在于控制层、显示层和模型层彼此独立。而Struts只是MVC的一种实现,把MVC当做接口来看,那么Struts就是这个接口的实现。