答案 0 :(得分:2)
MVC模式本身并未描述如何实现Web应用程序。它描述的是您的组件应如何相互交互,以实现具有可更换组件的模块化架构。
Martin Fowler的POEAA和Wikipedia详细解释了这种模式。有关MVC的更多信息,请参阅Wikipedia
使用Java,Spring和Hibernate的简单示例
在这种情况下,Spring MVC提供了一个可插入的框架,您可以在其中定义模型,控制器和视图,而无需将它们紧密地耦合在一起(这可以通过IOC / DI来实现)。
首先要注意的是DispatcherServlet,它是一个常规servlet,通过处理所有传入的HTTP请求并将它们路由到各自的控制器来充当入口点。通过它们的映射查找适当的控制器,例如。通过@RequestMapping注释。
控制器的职责是确定应该执行哪些操作作为对传入请求的响应。这通常通过检查标题,参数,会话信息,用户想要做的信息的路径来完成。这是一个非常简单的例子:
if (session.getAttribute("authenticated") == false) {
// we need to redirect to the login page
} else {
// everything was fine, so we do some business logic in the model
importantService.doSomethingReallyImportant(productOrder)
}
然后控件被传递到业务逻辑发生的模型层。这可能包括更改模型状态的任何操作,如更新密码,注册预订,清算交易等。在Web应用程序中,这些操作通常涉及使用持久性API,例如。休眠。
public class ImportantService {
public void doSomethingVeryImportant(final ProductOrder order) {
// Here we define the business operation
getCurrentBasket().add(order);
// An additional pseudo-persistence operation
getSession().update(order);
}
}
实际上,当模型完成后,控制权将返回到控制器,它决定如何更新视图(例如,重定向浏览器或只是显示结果用户看到他/她的行动结果的地方。