繁体   English   中英

可用的JSF MVC组件

[英]Available JSF MVC components

我是基于Java的Web编程的新手,并且正在尝试从头开始学习JSF。 我听说JSF解释为一个完整的MVC解决方案,Facelets是一种纯XML技术,包含MVC体系结构的“视图”组件。

因此,不知道有什么更好的地方,这使我问:每个组件都有哪些选择/替代方案? 对于这3种(模型,视图和控制器)中的每一种,都有哪些工具/ API / libs /技术可与JSF一起使用。 例如,如果正确理解View基础,则JSP是Facelets的(旧的/过时的)替代方法。 还有其他吗? 那么Model组件呢:我有哪些选择? 控制器?

再一次,只是有兴趣暂时将所有内容保留在JSF的保护下:如果该组件作为JSF解决方案的一部分是兼容的,我想听听它!

感谢您的任何建议!

令我惊讶的是BalusC还没有给出他令人作呕的完整答案之一。 我怀疑他会解决这个问题,当他这样做时,我会投票支持,因为它很棒,因此请不要立即接受我的回答。 同时,以下是一些想法:

JSF是完整的MVC堆栈,重点是VC。 您已经正确设置了JSP / Facelets。 简而言之,不要使用JSP。 使用Facelets。 它们是JSF 2的默认视图技术。它们基于xml,可以防止您在JSF生命周期和JSP生命周期之间的“有趣”交互中伤害自己。

您将编写Java类和导航规则来填充JSF中的控制器角色。 您可以将JSF托管bean用于您的服务,也可以使用诸如Spring之类的其他框架,但是您将实现特定的类以用作JSF中的控制器。

至于模型……好吧,任何好的MVC框架都会让模型自行处理。 模型不应该知道或关心模型处于哪个视图。希望您可以使用该模型并使用从JSF到Wicket到Vaadin的任何内容将其显示在网页中,然后在桌面应用程序或基于RESTful JSON的模型中使用它api。

我建议您通过以下链接了解JSF。

我认为您的理解是正确的。

我想说的是,JSF占据了控制器的大部分部分。 但是,还有其他与JSF兼容的库。 例如,您可以将Spring WebFlow与JSF结合使用以获得更强大的导航功能。

当涉及到模型时,JSF并不是很麻烦。 理想情况下,在域模型中没有使用JSF的任何痕迹(例外是JSF提供了可以选择使用的注释,例如@ManagedBean)。 这意味着您可以自由使用所需的任何库。 如果需要,可以使用Spring IOC或EJB,也可以在普通的旧Java对象中编码整个模型。

话虽如此,我想强调指出,JSP并不是过时的。 正如digitaljoel指出的那样,Facelets已取代JSP成为JSF中的视图技术,但在其他框架中JSP仍然有效。 尚未达成共识,包括Facelets的JSF比JSP(以及另一个Web框架)“更好”; 并且JSF尚未成为行业标准。

使用JSF编写Web应用程序更类似于编写桌面应用程序,因为它们已经抽象出许多请求-响应处理。 客户端每次执行请求时都不会调用特定的方法,而是每个请求都会经过您无法完全控制的生命周期。 不鼓励直接与HttpServletRequest进行交互。

忽略Web的请求-响应性质会增加请求的复杂性,并与另一个增长趋势冲突:严重依赖Javascript的富Web应用程序。 视图逻辑的职责从服务器移到浏览器,浏览器使用瘦HTTP API使用Ajax与服务器交互。

关键是,JSF并不是学习和忽略其他所有内容所需的最终框架。 对于某些应用程序,它可能是正确的选择,但并非对所有应用程序都是正确的选择。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM