Struts 2 MVC 架构中的混乱

问题描述 投票:0回答:2

我正在研究Struts2 in Action,了解到Struts 2中的Controller是

FilterDispatcher
Model
Action

但之前我知道

Action
FilterDispatcher
都是Controller,Struts不提供对Model层的支持。以上哪一项是错误的?

java model-view-controller architecture struts2 struts
2个回答
1
投票

我想说 FilterDispatcher 是一个 FrontController,而 Action 是一个类中的模型和控制器。


0
投票

实际上 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
以从视图进行访问。您可以通过将业务模型与视图模型关联来设计模型。

© www.soinside.com 2019 - 2024. All rights reserved.