和控制器(C)三个方面提供了对应的技术支持组件,从而构成了 Struts 框架系统中的核心
功能组件。
1. Struts 框架中与 MVC 设计模式相关的各个层组件
(1)Struts 框架中各个层的组件
如图 9.4 所示为 Struts 框架所对应的 MVC 各个层中组件类之间的关系图,是对 Web
MVC 系统架构模式的标准的实现描述。
图 9.4 Struts 框架中与 MVC 相关的各个层组件的类关系图
从图中可以了解到,Struts 框架中的表示层中要有以下几个组件类——JSP 页面(包含
表单)、表单数据的 ActionForm 组件和响应结果的 JSP 页面组件类;而在控制层有前端控
制器 ActionServlet 组件、ActionMapping 组件、ActionForward 组件和业务调度 Action 组件
等;在模型层中没有提供基础性的功能组件,完全由开发者自己开发实现,通常包含
JavaBean 、EJB、WebService 等。
(2)Struts 框架的系统工作原理
Struts 框架的工作流程充分体现了 MVC 系统的表示层和业务处理相互分离的特点。
各逻辑层中的各个功能各司其职,但相互配合,并通过 struts-config.xml 文件中的各个
配置项目来降低系统中的各个逻辑层之间的耦合性。
完整的一个 Struts 访问流程如下:
某个操作者用户在 Web 页面中假如发出/showInfo.do 的 HTTP 表单请求,该请求将
被前端控制器 ActionServlet 组件所接收;
ActionServlet 组件将表单中的各个请求参数首先包装到 ActionForm 组件中,然后
再根据在 struts-config.xml 文件中的<action-mapping>标签中所定义的 Action 类的配
置获得目标 Action 组件,并对该目标 Action 组件的 execute 方法进行调用。
目标 Action 组件再从 ActionForm 组件中获得请求参数、检查数据的合法性,并对
具体业务功能组件中的业务方法进行调用,由业务功能方法完成特定的业务功能;
业务方法返回执行后的结果,目标 Action 组件根据业务方法返回的结果再创建出
包装目标页面的 ActionForward 组件,并将该 ActionForward 组件返回给前端控制
器 ActionServlet 组件。
根据 ActionForward 组件中所包装的目标文件名称,由 ActionServlet 组件加载该目
标那个在客户端显示输出其结果,操作者最后将能够看到本次请求的处理结果
(响应结果的 JSP 页面)。