Struts MVC架构中的混乱

我正在研究Struts2 in Action并且知道Struts2中的Controller是FilterDispatcher而Model是Action。 但之前我知道Action和FilterDispatcher都是Controller,而Struts不提供对模型层的支持。 上面哪一个是错的?

我会说FilterDispatcher是一个FrontController ,Action是一个类中的Model和Controller。

实际上Struts2动作是控制器代理。 Struts2在视图层提供了一个值栈,它具有更好的支持,如果你想使用伪模型,那么action应该实现ModelDriven接口。 您还应该注意,Struts2操作是由Struts2容器管理的简单POJO。 这在MVC的观点上有点不同,也称为MVC Model2。 例如, 维基百科给出的模型描述:

MVC的核心组件( 模型)根据其问题域捕获应用程序的行为,与用户界面无关。 [5]该模型直接管理应用程序的数据,逻辑和规则。

看起来模型是在外部定义的,可能由持久层管理。 Struts2控制器通过其代理与模型一起工作。

视图可以是信息的任何输出表示,例如图表或图表; 可以使用相同信息的多个视图,例如管理条形图和会计师的表格视图。

在Struts2中,视图是控制器在响应对象中返回的结果。 Struts2可以使用不同的结果类型和模板来生成响应。

控制器接受输入并将其转换为模型或视图的命令[6]

Struts2使用对输入的请求,该请求由控制器处理以查找适当的委托,该委托可以直接或在服务层上与业务模型一起使用。

要记住这里所说的问题,你的最后陈述更接近真理。 Struts2可以帮助您控制器并呈现视图,但它无法帮助您设计模型。 但是,还有许多其他框架可以实现,例如Hibernate,您可以使用Struts2在应用程序中完成缺少的MVC组件。