【问题标题】:How MVC web application works in java? [closed]MVC Web 应用程序如何在 Java 中工作? [关闭]
【发布时间】:2014-02-05 05:31:06
【问题描述】:

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

例如假设我们添加了 struts、spring、hibernate 等。项目中的 jars 那么它们如何协同工作?

【问题讨论】:

  • 这太宽泛了,您需要阅读您提到的技术,然后再提出任何具体问题
  • 请参考此链接:MVC Web Application in Java 希望对您有所帮助
  • 感谢您的快速回复 @santhosh...更多的是关于 spring 文档。 我想知道我们如何识别特定层正在做他的确切工作或我们可以说应用程序中每一层的识别信息非常通用。
  • 你想知道在Model View Control中哪个层执行了哪个功能详细吧...?

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


【解决方案1】:

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)
}

然后将控制权传递给发生业务逻辑的 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(例如,重定向浏览器或仅显示结果页面),用户可以在其中看到他/她的操作结果。

【讨论】:

    猜你喜欢
    • 2016-10-02
    • 1970-01-01
    • 2014-07-14
    • 2014-02-26
    • 2018-02-14
    • 1970-01-01
    • 1970-01-01
    • 2015-09-10
    • 2015-07-06
    相关资源
    最近更新 更多