Spring MVC vs JSF
我在过去的所有应用程序中都使用过Struts框架,对于新应用程序,我的客户已请求使用Spring MVC或JSF? 我对这两个框架不熟悉,但是我们的时间表很严格。 因此,我不确定要选择哪个框架来构建应用程序。
谁能给我建议一下哪个框架很快就能学到?
谢谢
-
感谢专家的答案。我现在也在考虑使用Spring MVC而不是JSF。我们的Web设计人员为我们提供了静态html,我认为将静态html转换为JSF页面非常困难(因为它使用UI组件)。我希望Spring MVC还提供类似于struts逻辑的标签:iterate。
-
是的,如果您有Web设计人员提供的HTML页面,则将它们用于Spring MVC视图要比将其转换为JSF组件容易得多。至于标记-我想我通常为此使用JSTL c:forEach标记。 Spring标记库非常少-static.springsource.org/spring/docs/2.0.x/reference/-但也使用JSTL标记库-因为模型对象只是POJO / JavaBeans,所以JSTL可以正常工作。
-
同意,在这种情况下。我个人更喜欢JSF,因为它更适合我的编码风格,但是在这种情况下,Spring MVC可能会更好。
-
您会长时间使用Spring堆栈的其余部分吗?
-
因此,告诉我,Yatish,一年半之后,您如何看待Spring MVC? (尽管我害怕这是一个反问)
-
注意:我没有保护该问题,因为该问题有效,相反,我发现应该删除此问题。我之所以保护它,是因为我想防止新用户继续以不相关的主观性向该问题发送垃圾邮件,从而继续滥用Stack Overflow作为讨论论坛平台。我已经投票否决了这个问题,并投票赞成关闭,因为它根本不属于这里。但是,亲密的投票已经到期,显然没有其他人可以为这个问题在错误的位置上感到困扰。
当然,每个人的情况都会有所不同,但我建议使用Spring MVC,因为它是基于请求的框架,例如Struts。当然,您将想了解Spring的核心知识,例如控制反转/依赖注入(但我认为这是一个加号...),以及将用于数据库访问的任何内容(仅JDBC,Hibernate? iBatis?等)。
JSF是基于组件的,这与基于请求的框架有点不同。如果您打算走JSF路线,建议您从JBoss看一下Seam。它更多是一个从前到后的框架,该框架使用JSF作为Web /表示端,并使用EJB作为后端。几乎所有使用过它的人都声称,它使JSF和EJB比其本身更具可用性。
不过,无论您选择哪种技术,都祝您好运。 (听起来像您会需要它-严格的时间表和指定Web框架的客户端?)
-
仅供参考:JSF 2具有Seam提出的一些不错的功能(会话范围,CDI),并且大量使用注释而不是XML。与JSF 1.2和更早版本一起使用似乎更好。
由于时间限制,我建议使用SpringMVC:
-
您需要学习曲线不太陡峭的东西。 SpringMVC比JSF更像Struts
-
为了使用JSF的功能,您需要熟悉许多"技巧",而SpringMVC则或多或少简单明了
-
这概括了所有内容:)-为了使用JSF的功能,您需要熟悉许多"技巧"
我建议使用JSF + Primefaces组件库。我正在使用这种组合来构建我们的大多数项目。我记得我花了一个星期来学习技术,并在一个月内完成了我的第一个项目。开发时间比Struts至少快30%。
SpringMVC并不是一项糟糕的技术,它非常流行。
真的取决于您最喜欢哪一个。
-
在意识到Primefaces(和Primefaces Mobile)真正强大之前,我的团队为相同的决定奋斗了几天。请注意,Primefaces并不完美。我们不得不不时在.xhtml内编写一些Javascript和CSS技巧,以适应浏览器呈现差异。但是,Primefaces确实使它保持简单和强大-RAD处于最佳状态。
-
我会持不同意见。 Primefaces是一个功能强大的库,但是其文档非常糟糕。我花了数周时间来破解事物,使其痛苦。我建议使用Spring,因为有更多可用资源,我绝对建议使用eclipse上的intellij进行操作,并使用像tomcat这样的受支持的应用程序容器进行操作。
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层。
-
"带有诸如EJB之类的JSF则要简单得多……"并非如此。使用SpringMVC,从2.5开始,应用程序可以选择由注释驱动,并且可以使用最少的XML配置用注释完成所有操作。
-
"我已经使用Spring MVC大约一个月了"如果您刚刚开始使用Spring,您如何看待您的熟练程度,可以权衡一下JSF和Spring?
-
(原文如此):"我发现我们有太多要处理的XML有点烦人"绝对不再是有效的论点。您可以在Spring中使用批注声明和挂钩所有组件(向前使用v3)。双重性非常方便,因为您可以将"集中式"的基于XML的配置元数据与代码中分配的注释进行混合,例如,使用前者可以在一处控制dev / test / qual / prod配置文件,并稍后将管理所有不依赖于运行时环境而是从您固有的组件体系结构派生的绑定。
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学习曲线简单得多。
-
嗯,您能提供一个JSF使用IoC的示例吗?
-
是的,我想它的IoC。只是一个问题,您没有在上面的答案中澄清它;-) BTW,尽管Im是JSF支持者,但我必须承认学习曲线会因您以前的经验和知识而有所不同,对吗?
-
示例:在JSF中,在bean中使用批注注入其他bean:假设bean1是SomeBean1的实例。在另一个bean中,使用@ManagedProperty(value ="#{bean1}")。将其放置在将接受注入的bean1的属性的声明之前:私有瞬态SomeBean1 refToBean1;另外,也可以在faces-config中将其用于目标bean: refTobean1 property-name> #{bean1} value> managed-property>。