【问题标题】:what's the 'right' way to do a MVC for JSPs in Java EE 5?在 Java EE 5 中为 JSP 执行 MVC 的“正确”方法是什么?
【发布时间】:2012-05-14 18:54:36
【问题描述】:

我继承了一个不完整但很小的 Web 项目(Java EE 5,在 WebSphere 7 上运行)。

该项目主要由可通过其 URL 直接访问的 JSP 组成,并且大多数 JSP 会查找自己对所需 EJB(服务)的引用。此外,JSP 中的 HTML 代码提交的每个表单都有一个 Servlet。

从架构上讲,这有什么错误吗?

我在想有一个 MVC 设计会更好。我不想将所有内容都转换为 JSF,因为我不想将所有 HTML 和嵌入式 Java scriptlet 转换为 JSF 标记和托管 bean。

我真的不想使用 Struts 或 Spring MVC,因为它们不是 WebSphere 开箱即用的 Java EE 5 工具包的一部分,而且我不想通过额外的库增加额外的复杂性和配置文件。

我正在考虑使用“ControllerServlet”构建我自己的小 MVC,它接受命令并动态构建和执行命令对象,并重定向到 JSP 视图。

但我再次问自己,发布到 Servlet 的 JSP 有什么“错误”吗?它的简单实际上有点优雅。

你怎么看?

非常感谢任何建议!抢

【问题讨论】:

  • 一个简单的前端控制器是Bear's FrontMan。担心添加非 EE 库可能会适得其反;任何复杂的应用程序都已经有一堆依赖项,将它按摩到一个框架中可能值得付出努力。我不喜欢多应用程序入口模式(例如,有些 URL 是 JSP,有些是 servlet),我宁愿事情是一致的——它必须没有技术原因不过要保持一致。

标签: model-view-controller jsp jsf jakarta-ee servlets


【解决方案1】:

您问的是一个相当主观/本地化的问题。但是,唉。

提交给单个 servlet 的单个 JSP 在技术上没有任何问题。唯一真正的问题是,当 servlet 包含重复的代码时,这些代码用于非常常见的任务,例如收集请求参数、转换/验证它们、设置 bean 属性、调用操作、执行导航。 不是 DRY,它是具有单个前端控制器和明确定义的生命周期的 MVC 框架应该解决的问题。

或者,如果 servlet 的任务实际上是用本地代码很好地重构来执行这些常见任务,那么这反过来就不是很容易维护,因为除了原始开发人员之外没有其他人知道这个自定义框架的来龙去脉。因此,如果不再次学习另一个框架,很难找到愿意维护这个 webapp 的其他人,而新开发人员不太可能在其他未来的 webapps 中看到这种框架。 是为什么公司通常采用现有的和完善的 MVC 框架,如 JSF、Spring MVC、Stripes、Struts 等。

【讨论】:

  • 谢谢@BalusC,很好的回答。除了 JSF,Java EE 是否包含另一种更轻量的面向 JSP 的 MVC 技术?
  • 不,JSF 是唯一由 Java EE 提供的。基于组件的 MVC 框架往往更“重量级”,但您最终会得到更简单的代码。如果您正在寻找基于“轻量级”请求的 MVC 框架,您可能会发现 Spring MVC 或 Stripes 很有趣。无论新框架的选择如何,这都需要对现有的 webapp 进行相当多的重构。 “如果它没有坏,就不要修理它”。
  • 谢谢,您对此的冷静第二意见非常有用。
猜你喜欢
  • 2012-02-25
  • 1970-01-01
  • 1970-01-01
  • 2014-07-04
  • 2012-11-14
  • 2020-06-28
  • 2014-01-10
  • 2021-09-12
  • 2021-08-23
相关资源
最近更新 更多