【问题标题】:Architecture of AJAX MVC applicationAJAX MVC 应用的架构
【发布时间】:2011-06-01 14:51:04
【问题描述】:

我已经使用 MVC 模式编写了我的应用程序的基本框架。我目前在我的应用程序中没有任何 AJAX 功能,但我正在寻找有关如何更改我的应用程序架构以实现此目的的建议,为此我将尽力描述我当前的架构:

  • 我有一个控制器 servlet“controller.java”,它读取 servlet 路径,即request.getServletPath(),以确定所需的操作
  • 我有许多不同的 Enterprise Java Bean (EJB 3.1),它们处理业务逻辑并由我的控制器 servlet 根据请求的操作调用
  • 我有许多视图,这些视图与我的应用程序的不同方面相关,根据请求的操作(即request.getRequestDispatcher(url).forward(request, response);)将请求(由控制器 servlet)转发到这些方面

我知道当前架构可以支持 AJAX 功能(通过匹配我的“controller.java”servlet 中的模式),但我已经到了我的控制器支持大量操作的地步,而且它越来越乱七八糟的。

有人有什么建议吗? 有这样做的标准模式吗?我现在正试图摆脱任何框架,因为我是一个相对初学者! :-)

谢谢

【问题讨论】:

    标签: java ajax model-view-controller architecture servlets


    【解决方案1】:

    如果您的控制器支持大量操作 - 这就是您需要重构的地方。一般来说,如果每个控制器的操作数量合理(我会说最多 10 个),您的架构看起来是正确的。

    一种可能的重构方式是将控制器分组到模块中。

    【讨论】:

    • 感谢您的回复...我同意您的观点,这绝对是我需要做的事情。你能告诉我这是特定于某个框架的东西吗(一个快速的谷歌带回了一些特定于 Spring-MVC 的结果)或者我是否可以简单地通过一个单独的 servlet 来响应不同的 URL 模式来实现这一点?
    • 我建议你远离任何框架。主要是因为您现在正在学习技术(正如您在问题中提到的那样)。是的,你是对的,通过 URL 模式/前缀分隔模块,稍后将其映射到不同的 Java 包。我会创建一个“主 servlet”,并将其称为调度程序..
    【解决方案2】:

    您可以按如下方式检查 ajax 请求:

    boolean ajax = "XMLHttpRequest".equals(request.getHeader("X-Requested-With"));
    

    然后相应地处理响应类型。 IE。返回将在转发或重定向中使用的视图 ID,或返回一些 JSON,然后将其写入响应正文,或返回包含此类信息的特殊 View 对象。鉴于 this basic MVC example,使用 ajax 支持扩展它应该不难。

    【讨论】:

      【解决方案3】:

      与 BalusC 的想法相同。

      我们有一个自行运行的 MVC 应用程序。现在要添加 AJAX 功能,我们添加了 JQuery 并在表示层中使用了 jqGrid。它通过 AJAX 与后端通信。如果我们删除 JQuery 和 jqGrid,我们仍然有一个完全运行的 MVC 应用程序。

      我在http://krams915.blogspot.com/2010/12/jqgrid-and-spring-3-mvc-integration 上放了一个演示。这里我们集成了 Spring MVC 3 和 jqGrid/JQuery

      【讨论】:

        猜你喜欢
        • 2010-11-16
        • 2011-05-03
        • 1970-01-01
        • 1970-01-01
        • 2011-02-02
        • 1970-01-01
        • 2010-12-22
        • 2013-01-31
        • 1970-01-01
        相关资源
        最近更新 更多