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)
}
然后将控制权传递给发生业务逻辑的 model 层。这可能包括更改模型状态的任何操作,例如更新密码、注册预订、清算交易等。在 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);
}
}
实际上,当模型完成后,控制权会返回给 controller,该控制器决定如何更新 view(例如,重定向浏览器或仅显示结果页面),用户可以在其中看到他/她的操作结果。