那几本上关于struts1和struts2好像没有说太多,我再这补充一下,你也许在其他地方也看到过:
首先,Struts2和Struts1体系的差别非常大,从数据流程上看,Struts2和WebWork相差不大,主要是因为Struts2是以 WebWork的设计思想为核心,吸收了Struts1的部分优点,建立了一个兼容WebWork和Struts1的MVC框架。
Struts1框架的程序运行流程:
struts1框架以ActionServlet作为核心控制器,整个应用由客户请求驱动。当客户端向Web应用发送请求时,请求将被Struts1的核心控制器ActionServlet拦截,ActionServlet根据请求决定是否需要调用逻辑控制器处理用户请求,当用户请求处理完成后,其处理结果通过JSP呈现给用户。
Struts1是非常优秀的设计,但是也有不足之处:
1、支持的表现层技术单一,只支持jsp作为表现层技术。
2、与Servlet API严重耦合,难于测试:依赖Servlet API,而Servlet API严重依赖于Web服务器,脱离了web服务器,测试非常困难。
3、代码严重依赖于Struts1API,属于侵入式设计:其中的Action类必须继承Struts1的Action基类,实现处理方法时,包含大量Struts1API:如ActionMapping,ActionForm,ActionForward等,一旦系统需要重构,这些Action完全没有利用价值。
Struts2框架的大致处理流程:
1、浏览器发送请求
2、核心控制器FilterDispatcher根据请求决定调用合适的Action
3、拦截器链自动对请求应用通用功能(validation,文件上传等)
4、回调Action的execute方法,该execute方法先获取用户请求参数,然后执行某种数据库操作。实际上,因为Action只是一个控制器,它会调用业务逻辑组件来处理用户的请求。
5、Action的execute方法处理结果信息将被输出到浏览器中,可以是HTML页面、图像,也可以是PDF文档或者其他文档。
相对于Struts1的优点:
1、没有线程安全问题
2、不再依赖于Servlet API
3、仍然可以使用JSTL,还整合了OGNL(Object Graph Notation Language)使表达式语言功能更强大
希望能够对你有所帮助。