一、SSH引入:
SSH(Struts+Spring+Hibernate),java的一个开源框架,各部分关系见下图:
二、Struts的框架结构:
1、Struts架构图:
2、对比model2的结构图:
3、一点总结:
- model2和Struts都是基于MVC的框架结构。Struts基于model2,是专门针对Web层进行的一些操作优化。
- MVC框架分为面向请求驱动(Struts/Webwork)和面向事件(JSF/Tapestry)。
- .NET是面向事件的MVC框架的封装(将Request和Response做了进一步的封装,开发者在使用的时候,就像使用事件按钮一样,比较方便)。
4、关于Struts的一点理解:
结构理解:Struts是对C部分的进一步解耦,通过配置文件将请求对应到一个接口。
优点:简化了对表单数据的处理,使jsp和servlet之间的交互,用代码操作起来更简洁。
缺点:增加了类的数量,影响效率。
5、Struts的请求流程图:
6、Struts核心类和方法交互图:(从Web——Tomcat——Struts核心类——Jsp)
7、详细工作流程图:
Struts核心类包括:ActionServlet/RequestProcessor/ActionForm/Forward 等,Struts也集成了对 错误和消息的提醒,同时也支持个性化的扩展和第三方组件的引入。
8、关于Struts的总结:
- ActionForm:收集表单数据
- ActionMapping:配置信息
- Action:处理请求,拿到数据,调用业务逻辑
- ActionForward:包装返回信息
- ActionMapping一个实例对应了struts-config.xml文件中的一个<action>标签
- Struts1中是单实例的,具有线程安全问题。使用前先从map中查找是否已经创建好。是,直接用;否,创建,放到map中。Struts2的Action:不是单实例的。
- 动态ActionForm不需要手动创建ActionForm类,基本上可以完成所有的静态的AF的所有功能。
- 动态验证框架支持服务器和客户端的两种验证
- 类似JSTL,有自己的一套标签库
- 可以集成其他的组件,如,上传组件
- 允许用户自己扩展,如,扩展数据类型转化器等。
- 支持资源文件国际化
- 集成了对异常和提示信息的处理
三、总结:
这里重点介绍了SSH框架之一的Struts1框架结构,旨在对Struts框架有一个整体的认识。后续部分会通过代码示例总结一些核心类以及核心方法的实现。最终希望通过对开源框架架构思路和源码和的研究提高对编程的认识。