Struts 通过提供一个控制器Servlet 实现了Sun 的 Model 2 架构,这个控制器可以用来管理JSP 页面和其他表现设备之间的流程。Struts 通过使用ActionForward和ActionMapping来保证表现层之外的控制流决策来实现 MVC/层 模式。JSP 可以引用一个逻辑目标。控制器组件在运行是提供准确的URI。
表列出了Struts 的核心类,即对应的经典的MVC 组件职责。
类 | 描述 |
ActionForward | 用户指向或者视图选择 |
ActionForm | 状态改变的数据 |
ActionMapping | 状态改变事件 |
ActionServlet | 控制器,接受用户请求和状态改变,以及发出视图选择 |
Action | 控制器的一部分,与模型交互,执行状态改变或状态查询, 以及告诉ActionServlet 下一个选择的视图 |
除了这些核心类, Struts 使用一些配置文件和视图助手(view helpers)来沟通控制器和模型。下表列出了Struts 配置文件和描述了他们在架构中的角色。
文件 | 目的 |
ApplicationResources.properties | 存储本地化信息和标签,以使应用可以国际化 |
struts-config.xml | 存储控制器对象的缺省配置,包括模型支持的用户指向,状态改变,状态查询 |
为将Struts 配置数据暴露给视图,框架以JSP 标签的形式提供了大量的助手类,如表:
标记库描述符 目的
struts-html.tld ------->扩展HTML Form的JSP标记
struts-bean.tld ------>扩展处理JavaBean的JSP标记
struts-logic.tld ------->扩展测试属性值的JSP标记
将以上内容放在一起,下表按层列出了Struts 组件:
视图层 控制器层 模型层
------------------------------------------------------
JSP 标签扩展
ActionForward
ActionForm 类
ActionMapping
ActionServlet
Action 类
ActionErrors
MessageResources
GenericDataSource
---------------------------------------------------------
JSP, Velocity 模板, 以及其他表现系统
各种工具类, 比如CommonsDigester和CommonsBeanUtil
开发者提供的其他数据服务和API