我试图弄清楚除了 JSF 实现提供的一组不同的 UI 组件之外,将 JSF 与 Spring MVC 一起使用的优势是什么?两者都是 MVC,并且都具有不同的透视导航处理方式(两者都很容易理解)。假设我在我的应用程序中同时使用 JSF 和 Spring MVC,对设计、实现和维护有什么好处?
3 回答
它们都是 MVC,但是 JSF 是面向组件的,而 Spring MVC 是基于动作的。
您最好自己查找这些术语的确切含义,但简而言之,JSF 允许 UI 由高级可视化构建块(滑块、面板、进度条等)组合而成。
Spring MVC 对实际的 UI 并没有说太多。它强调一个控制器,您将其映射到 URL 路径及其参数。处理后,您直接/转发到呈现视图的内容(通常是 JSP,但最近经常使用 Thymeleaf)。
JSF 是 Java EE 的一部分,它还附带一个框架,该框架具有某种 Spring MVC 的“类到 URL”绑定方面;JAX-RS。JAX-RS 本身既不是 MVC 也不是基于请求的 Web 框架,而是一个 Web 服务框架。
在一个应用程序中使用两个不同的 Web 框架非常令人困惑,我不推荐这样做。
等人!!!
MVC 是一种架构模式,它在以下之间创建概念划分(在应用程序架构中):
- 模型:提供访问应用程序使用的数据的方法
- View:处理模型中包含的数据的显示,并管理与用户和代理的交互
- 控制器:接收用户的命令(通常通过视图)并实现改变其他两个组件的状态
除其他外,该方案还意味着应用程序逻辑(在此上下文中通常称为“业务逻辑”)之间的传统分离,控制器和模型之外,以及加载视图的用户界面
所以 MVC 是一种架构模式,与特定语言或特定技术无关。Spring MVC 是一个实现这种模式的 Java 框架!!!
好的,对于视图,我们可以使用不同的技术,包括 JSF(Java Server Faces),它为您提供一些预制组件(由特定的视图框架实现),您必须直接在视图中使用标记库声明这些组件。
现在有许多从 JSF 派生的免费 View 框架,例如 PrimeFaces 和 IceFaces。
JSP及其衍生的所有框架都原生支持对程序员隐藏的AJAX,开发者无需担心
我建议你看一下 PrimeFaces 组件展示,它向你解释了这种视图技术的所有力量:
http://www.primefaces.org/showcase/ui/home.jsf
例如,您可以在不深入了解 AJAX FORM 的情况下处理它,尤其是在不了解或使用 Javascript 的情况下。
这是您可以在展示中找到的最简单的 AJAX 表单示例:http: //www.primefaces.org/showcase/ui/pprUpdate.jsf
使用这种视图技术,您可以将许多组件用于表单、菜单和许多其他内容
主要优点是不必编写一行 JavaScript 来代替组件
我不会重复其他答案的定义。JSF(及其组件套件)可帮助您更快地构建应用程序,因为您的工作只是将所有内容粘合一次,然后专注于业务规则(或为您的应用程序增加价值)并通过组合组件来构建 UI。您没有主要针对 Javascript 测试您的组件或 Concert。
在 Spring MVC 中,您起步缓慢,但它提供了很大的自由来实现您想要的任何东西,而不是依赖于组件(主要是与 JSF 通信的 Javascript UI),甚至可以毫不费力地实现 Web 服务。但是您将不得不测试、测试和测试这样的 UI 结构。
如果您正在寻找混合动力,也许Spring Web Flow会有所帮助。有了它,您可以使用 JSF 组件和 Spring MVC 控制器的一个很好的抽象层,甚至如果您愿意,您仍然可以使用它们。