关于Java:Spring MVC vs JSF

Spring MVC vs JSF

本问题已经有最佳答案,请猛点这里访问。

我在过去的所有应用程序中都使用过Struts框架,对于新应用程序,我的客户已请求使用Spring MVC或JSF? 我对这两个框架不熟悉,但是我们的时间表很严格。 因此,我不确定要选择哪个框架来构建应用程序。

谁能给我建议一下哪个框架很快就能学到?

谢谢


当然,每个人的情况都会有所不同,但我建议使用Spring MVC,因为它是基于请求的框架,例如Struts。当然,您将想了解Spring的核心知识,例如控制反转/依赖注入(但我认为这是一个加号...),以及将用于数据库访问的任何内容(仅JDBC,Hibernate? iBatis?等)。

JSF是基于组件的,这与基于请求的框架有点不同。如果您打算走JSF路线,建议您从JBoss看一下Seam。它更多是一个从前到后的框架,该框架使用JSF作为Web /表示端,并使用EJB作为后端。几乎所有使用过它的人都声称,它使JSF和EJB比其本身更具可用性。

不过,无论您选择哪种技术,都祝您好运。 (听起来像您会需要它-严格的时间表和指定Web框架的客户端?)


由于时间限制,我建议使用SpringMVC:

  • 您需要学习曲线不太陡峭的东西。 SpringMVC比JSF更像Struts
  • 为了使用JSF的功能,您需要熟悉许多"技巧",而SpringMVC则或多或少简单明了


我建议使用JSF + Primefaces组件库。我正在使用这种组合来构建我们的大多数项目。我记得我花了一个星期来学习技术,并在一个月内完成了我的第一个项目。开发时间比Struts至少快30%。

SpringMVC并不是一项糟糕的技术,它非常流行。

真的取决于您最喜欢哪一个。


JSF只是MVC的视图层,并且需要与其他技术(例如Spring / Hibernate或EJB)一起使用,以获得完整的MVC。

我已经使用Spring MVC大约一个月了,虽然它可能不是最先进的SpringMVC版本,但是我发现有这么多XML需要处理,这让我有点烦。所有托管bean和DAO都有XML配置。同样,一切似乎都必须通过一种名为onSubmit()的方法进行。

在我看来,带有EJB之类的JSF的方法要简单得多...一切都可以使用注释来完成,因此只需在您的后备bean中使用@ ManagedBean = theBean,然后在您的JSF中将{thebean.param}放入,您就可以访问该后备bean的数据。您也可以将EJB的Session bean用作JSF的支持bean,然后直接访问DAO(模型层)实体bean。同样,只需使用@Entity批注和EntityManager类

Spring MVC是Spring框架内部的Web框架。它确实提供了JSF 2.0中的功能:
Ajax支持
验证
依赖注入等
但是,您可以将Spring(不是Spring MVC)与JSF 2.0一起使用,其中spring提供依赖项注入,aop,事务管理机制,而JSF提供Web层。


Of course, you'll want to learn about core Spring stuff like Inversion of Control / Dependency Injection (but I'd consider that a plus...)

JSF确实基于IoC,并且比Spring学习曲线简单得多。