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

Tha*_*ham 33 java jsf jsp 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最适合面向服务的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.甚至不确定这是什么意思?提前致谢.

Bal*_*usC 31

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

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

  • JSP/Servlet只是用于开发Java Web应用程序的*basic/core/buildstone*技术.任何基于Java的MVC框架都在JSP/Servlet API之上运行,因此JSF也是如此.JSF提供了`FacesServlet`(是的,它是一个servlet!),您必须在`web.xml`中定义一次.然后,您可以仅使用模型对象和视图来开发/运行JSF. (6认同)
  • 他们确实是竞争者.但是,没有那么多的组件库可用于Spring MVC和JSF. (3认同)
  • 注意"Spring"!="Spring MVC".Spring框架不仅仅是Spring MVC.关于Spring MVC和JSF:好吧,看看你附近的工作趋势.选择最受欢迎和/或最佳报酬的那个.您可以随时在私人/业余爱好时间学习其他框架. (3认同)
  • @Harry:http://balusc.blogspot.com/2009/09/webapplication-performance-tips-and.html (3认同)

Boz*_*zho 10

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

JSF是一个基于组件的MVC框架,而JSP是一种视图技术.虽然Facelets是首选的视图技术,但
可以将JSP与JSF一起使用.