Java EE 6: JSF vs Servlet + JSP.我应该费心学习JSF吗?

2022-09-01 08:49:08

我试图通过阅读 http://java.sun.com/javaee/6/docs/tutorial/doc/gexaf.html 来熟悉Java EE 6。我对JSF的使用有点困惑。
通常,我开发Web应用程序的方式是,Servlet就像控制器一样,JSP就像MVC模型中的视图。那么JSF会尝试取代这种结构吗?以下是上述教程中的引用:

Servlet最适合于面向服务的App和面向呈现的App的控制功能,如调度请求
JSF和Facelet更适合于生成像XHTML这样的标记,一般用于面向表示的App。

不知道我是否太理解上面的引用,他们没有很好地解释什么是面向服务与面向演示。

JavaServer Faces 应用程序可以将 HTTP 请求映射到特定于组件的事件处理,并将组件作为服务器上的有状态对象进行管理。

任何知识渊博的Java开发人员都可以给我一个关于JSF,JSP和Servlet的快速概述?我是将它们全部集成,还是根据应用程序将它们分开使用?如果是这样,那么与Servlet和JSP相比,什么样的应用程序使用JSF

JavaServer Faces 应用程序可以将 HTTP 请求映射到特定于组件的事件处理,并将组件作为服务器上的有状态对象进行管理。

听起来像是 servlet 可以做什么,但不确定 .甚至不确定这是什么意思?提前致谢。manage components as stateful objects on the server


答案 1

JSF基本上使您能够开发一个只有模型对象(JavaBeans)和视图(JSP / XHTML页面)的Web应用程序。使用“普通”JSP /Servlet,您必须引入大量代码来控制,预处理,后处理,收集数据,验证,转换,监听等HTTP请求和响应。然后我不是在谈论将其重构到高度(抽象)程度,以便您也可以像JSF一样最终获得相同的结果(每个用例只是一个JavaBean类和一个JSP / XHTML页面)。

在此之前,我已经发布了有关该主题的更详细的答案:JSF,Servlet和JSP之间有什么区别?


答案 2

在 JSF 中,使用一个特定的 Servlet(Faces Servlet)来处理所有传入的请求,并将它们分派给相应的 Bean。

JSF 是一个基于组件的 MVC 框架,而 JSP 是一种视图技术。
您可以将 JSP 与 JSF 一起使用,尽管 Facelets 是首选的视图技术。