Java EE 6:JSF与Servlet + JSP。我应该学习JSF吗?

时间:2010-04-23 18:35:35

标签: java jsp jsf servlets java-ee

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

  

Servlet最适合面向服务的应用程序和面向演示的应用程序的控制功能,如调度请求
  JSF和Facelet更适合用于生成像XHTML这样的标记,并且通常用于面向表示的应用程序

我不确定我是否理解上述引用,他们没有解释什么是面向服务与面向表达。

  

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

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

  

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

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

5 个答案:

答案 0 :(得分:31)

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

我在此之前发布了有关此主题的更详细答案:What is the difference between JSF, Servlet and JSP?

答案 1 :(得分:10)

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

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

答案 2 :(得分:4)

JSF提供了一个具有多个职责的抽象层,但最重要的是它处理HTML表单的所有混乱细节,并在Web页面和Java POJO bean(getX,setX方法)之间来回传输数据,这是众所周知的难以做到的右。

它还提供导航功能,并且在Java EE 6的最新版本中提供了基本的AJAX支持,允许在用户输入数据时对网页进行简单更新。

您可能会发现将其视为一种避免自己编写JavaScript的方法更容易。

答案 3 :(得分:3)

如果您喜欢XML,请选择JSF。如果你是actionlistener粉丝 doPost,doGet等选择Servlet和JSP。

答案 4 :(得分:2)

JSF Framework旨在简化基于Web的用户界面的开发集成。正如@bozho所说,你可以混合使用JSP和JSF。然而,JSF中的“视图”组件是facelets - 可以看作是小UI小部件,它们或多或少地包含在DHTML样式和JavaScript事件生成和回调方面。

“我应该费心学习吗??”

不确定。我还没有看到JSF在过去的5年里(即理论上说是最近的)就吸收了那么多的蒸汽。