MVC Web应用程序如何在java中运行?

时间:2014-01-16 10:47:22

标签: java spring hibernate java-ee web-applications

我们在应用程序中定义视图,控制器,服务和Dao层,然后数据如何在它们之间流动。

例如假设我们添加了struts,spring,hibernate等。项目中的罐子然后如何一起工作?

1 个答案:

答案 0 :(得分:2)

MVC模式本身并未描述如何实现Web应用程序。它描述的是您的组件应如何相互交互,以实现具有可更换组件的模块化架构。

Martin Fowler的POEAAWikipedia详细解释了这种模式。有关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);
    }
}

实际上,当模型完成后,控制权将返回到控制器,它决定如何更新视图(例如,重定向浏览器或只是显示结果用户看到他/她的行动结果的地方。