我正在研究Struts2 in Action,了解到Struts 2中的Controller是
FilterDispatcher
,Model
是Action
。
但之前我知道
Action
和FilterDispatcher
都是Controller,Struts不提供对Model层的支持。以上哪一项是错误的?
我想说 FilterDispatcher 是一个 FrontController,而 Action 是一个类中的模型和控制器。
实际上 Struts2
Action
是控制器委托。 Struts2 在视图层上提供了一个valueStack
,其顶部有一个Action
,如果你想使用伪模型,那么action应该实现ModelDriven
接口。
您还应该注意,Struts2 操作是由 Struts2 容器管理的简单 POJO。这在 MVC 的角度来看有点不同,也称为 MVC Model2。例如,wikipedia给出的model的描述:
MVC 的核心组件,模型,根据其问题域捕获应用程序的行为,独立于用户界面。[5] 模型直接管理数据、逻辑和规则应用程序。
从这个角度来看,业务模型是与视图模型分开定义的,并且通常由持久层管理。 Struts2 控制器通过其委托与视图模型一起工作。
View可以是任何信息的输出表示,例如图表或图表;同一信息可以有多种视图,例如用于管理的条形图和用于会计师的表格视图。
在 Struts2 中,视图是控制器在
Result
对象中返回的 response
。 Struts2 可以使用不同的结果类型和模板来生成响应。
控制器,接受输入并将其转换为模型或视图的命令[6]。
Struts2 使用
request
作为输入,由 Action
处理以找到合适的委托,该委托可以直接使用视图模型或使用服务层。
在 Struts2 中,
Action
是一个控制器,它是一个简单的 POJO,也是一个模型。
Struts2 可以通过
ActionSupport
帮助您使用控制器并呈现视图,它还将 Action
推送到 valueStack
以从视图进行访问。您可以通过将业务模型与视图模型关联来设计模型。