【问题标题】:MVC pattern, one or many controllers/servlets?MVC 模式,一个或多个控制器/servlet?
【发布时间】:2016-07-20 19:39:32
【问题描述】:

我正在开发一个 Java EE 应用程序,我正在尝试按照 MVC 模式来实现它。我不使用任何框架(例如 Spring)来实现 MVC 结构。我只是编写自己的模型、视图和控制器。

我开始为每个功能(例如 LoginServlet、RegisterServlet)使用不同的 Servlet 来实现我的应用程序,但我注意到很多人说一个控制器(Servlet)足以处理应用程序的所有功能。但是,我不明白如果没有得到一个混乱的代码,怎么会发生这种情况。我认为它的方式是拥有一个带有多个 if/else 语句的 Servlet/Controller,以检查请求的来源。结果将是一个巨大的 doPost 或 doGet 方法,其中包含大量 if/else 语句,这听起来是个坏主意。

总而言之,为应用程序的每个功能使用不同的 servlet 是好主意还是坏主意,如果不好的话,我如何通过使用一个 servlet 而不创建大量方法来实现相同的目标?

【问题讨论】:

  • 为什么要重新发明轮子?有什么理由不使用任何框架?
  • @Sundararaj 因为也许他想学习如何正确地做事?如果他总是依赖一个框架来做他的事情,他将永远无法真正正确地学习。
  • @Alexander,这可能是一个很好的理由

标签: java servlets jakarta-ee model-view-controller


【解决方案1】:

这取决于您使用的模式。我的建议是开始阅读设计模式。如何拥有单个控制器的一个示例是“前端控制器”模式。著名的“Struts”就是一个使用它的例子: https://en.wikipedia.org/wiki/Front_controller

这里是示例实现的链接:

http://www.oracle.com/technetwork/java/frontcontroller-135648.html

【讨论】:

    【解决方案2】:

    不,您应该以合乎逻辑的方式划分您的发球台。实际上你应该把你的包装分成大的逻辑部分。对于 Servlet,例如 AuthenticationServet 来处理所有身份验证流程、RegistrationServlet、EShopServlet 等

    com.myapp.servlets.*
    com.myapp.models.jpa*
    com.myapp.models.(something)*
    com.myapp.services.*
    

    【讨论】:

    • 问题是关于 no.of servlet,而不是包。
    • @SundararajGovindasamy 在否决投票之前,您应该再次阅读我的回答。我的回答是告诉他如何命名和组织 servlet,我也建议对包做同样的事情。
    • 我评论了你的回答,但投反对票?不是我。
    【解决方案3】:

    好与坏是主观的。

    通常有一个DispatcherServlet(又名前端控制器servlet)将接受HTTP 请求并将代码路由到给定URL 的适当处理程序。

    我认为 REST 和微服务更进一步,将功能公开为多个 HTTP 端点。

    这是另一个 Java EE 案例,或者您对它的解释,落后于时代。

    我会使用 Spring 使用多个 REST 端点来执行此操作。

    【讨论】:

    • 他没有使用任何框架,并且有一个炸毁的 servlet 会对他有任何帮助
    • 我明白这一点。我指出了其他人以前如何完成的例子。您可以在没有框架的情况下执行 REST 和微服务。如果您对此投了反对票,我希望看到您将其还原或发表评论以外的其他内容,以便我们了解您计划为聚会带来什么水平的专业知识。 “炸毁的servlet”?请解释一下。
    • @duffymo 对于微服务部分是正确的,尽管我不确定他在手动提到 REST 时是认真的还是在开玩笑:) 但是,是的,REST 可以手动编码,只要你遵循基本的 RESTful 原则。
    • REST 是一种风格。当然你也可以自己做。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-24
    • 2013-12-27
    • 2013-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多