JSF,Servlet和JSP有什么区别?

Che*_*ung 805 java jsf jsp servlets java-ee

JSP和Servlet如何相互关联?JSP是某种Servlet吗?JSP和JSF如何相互关联?JSF是一种基于预构建UI的JSP,如ASP.NET-MVC吗?

Bal*_*usC 1200

JSP(JavaServer Pages)

JSP是在服务器上运行的Java视图技术,它允许您使用客户端语言(如HTML,CSS,JavaScript等)编写模板文本.JSP支持taglibs,它由Java代码支持,允许您动态控制页面流或输出.一个着名的taglib是JSTL.JSP还支持表达式语言,可用于访问后端数据(通过页面中可用的属性,请求,会话和应用程序范围),主要与taglib结合使用.

当第一次请求JSP或Web应用程序启动时,servlet容器会将其编译为扩展的类,HttpServlet并在Web应用程序的生命周期内使用它.您可以在服务器的工作目录中找到生成的源代码.在例如Tomcat中,它是/work目录.在JSP请求中,servlet容器将执行已编译的JSP类,并通过网络将生成的输出(通常只是HTML/CSS/JS)通过网络发送到客户端,然后客户端将其显示在Web浏览器中.

Servlet的

Servlet是在服务器计算机上运行的Java应用程序编程接口(API),它拦截客户端发出的请求并生成/发送响应.一个众所周知的例子是HttpServlet提供使用流行的HTTP方法(例如和)挂钩HTTP请求的方法.您可以配置s以侦听某个HTTP URL模式,该模式可以在Java EE 6中配置,或者最近使用注释进行配置.GETPOSTHttpServletweb.xml@WebServlet

首次请求Servlet或在Web应用程序启动期间,servlet容器将创建它的实例并在Web应用程序的生命周期内将其保留在内存中.对于其URL与servlet的URL模式匹配的每个传入请求,将重用相同的实例.您可以通过访问请求数据HttpServletRequest并处理响应HttpServletResponse.这两个对象都可以作为任何重写方法中的方法参数使用HttpServlet,例如doGet()doPost().

JSF(JavaServer Faces)

JSF是一个基于组件的MVC框架,它构建在Servlet API之上,并通过taglibs 提供组件,可以在JSP或任何其他基于Java的视图技术(如Facelets)中使用.Facelets比JSP更适合JSF.它提供了很好的模板功能,例如复合组件,而JSP基本上只提供<jsp:include>模板化,因此您不得不使用原始Java代码创建自定义组件(这在JSF中有点不透明和繁琐的工作)您想要用单个组件替换重复的组件组.从JSF 2.0开始,JSP已被弃用为视图技术而转而支持Facelets.

作为MVC(模型 - 视图 - 控制器)框架,JSF提供FacesServlet了唯一的请求 - 响应控制器.它需要您手中的所有标准和繁琐的HTTP请求/响应工作,例如收集用户输入,验证/转换它们,将它们放入模型对象,调用操作和呈现响应.通过这种方式,您最终可以获得View的JSP或Facelets(XHTML)页面以及作为Model的JavaBean类.JSF组件用于将视图与模型绑定(例如ASP.NET Web控件),并FacesServlet使用JSF组件树完成所有工作.

相关问题

  • 那是[JSTL](http://www.tutorialspoint.com/jsp/jsp_standard_tag_library.htm). (9认同)
  • @Shashank:不完全.只有`<c:forEach>`标签来自JSTL.另请参见http://stackoverflow.com/tags/jstl/info (7认同)
  • 由于这是一个非常受欢迎的答案,我想添加一个非常重要的位,即[JSP标记文件](http://docs.oracle.com/javaee/1.4/tutorial/doc/JSPTags5.html),它允许自定义用于页面组合和布局的标记创建,无需编写Java代码.这个功能非常有用,多年来一直是标准的一部分,但仍未得到充分利用. (3认同)

S.L*_*ott 80

请参阅http://www.oracle.com/technetwork/java/faq-137059.html

JSP技术是Java技术系列的一部分.JSP页面被编译为servlet,可以调用JavaBeans组件(bean)或Enterprise JavaBeans组件(企业bean)来在服务器上执行处理.因此,JSP技术是基于Web的应用程序的高度可扩展架构中的关键组件.

请参阅https://jcp.org/en/introduction/faq

答:JavaServer Faces技术是一个用于构建Web应用程序用户界面的框架.JavaServer Faces技术包括:

一组API,用于:表示UI组件并管理其状态,处理事件和输入验证,定义页面导航以及支持国际化和可访问性.

JavaServer Pages(JSP)自定义标记库,用于在JSP页面中表示JavaServer Faces接口.

JSP是一种特殊的servlet.

JSF是一组可以与JSP一起使用的标记.

  • "JSP是一种特殊的servlet.JSF是一组可以与JSP一起使用的标记." 这句话最能描述三者之间的关系! (6认同)

Vh2*_*h24 33

从浏览器/客户端角度

JSP和JSF看起来都一样,按照应用程序要求,JSP更适合基于请求 - 响应的应用程序.

JSF针对更丰富的基于事件的Web应用程序.我认为事件比请求/响应更精细.

从Server Perspective

JSP页面转换为servlet,它只有最小的行为.

JSF页面转换为组件树(通过专门的FacesServlet),它遵循spec定义的组件生命周期.


Kis*_*ash 22

Servlets:

Java Servlet API使Java开发人员能够编写用于提供动态Web内容的服务器端代码.与其他专有Web服务器API一样,Java Servlet API提供了比CGI更高的性能; 但是,它有一些关键的额外优势.因为servlet是用Java编写的,所以它们提供面向对象(OO)设计方法,更重要的是,它们能够在任何平台上运行.因此,相同的代码可以移植到任何支持Java的主机.Servlet极大地促进了Java的普及,因为它成为服务器端Web应用程序开发的一种广泛使用的技术.

JSP:

JSP构建于servlet之上,提供了一种更简单的基于页面的解决方案,可为Web用户界面生成大量动态HTML内容.JavaServer Pages使Web开发人员和设计人员能够简单地编辑带有动态Java部分特殊标记的HTML页面.JavaServer Pages通过一个称为JSP容器的特殊servlet来工作,该容器安装在Web服务器上并处理所有JSP页面查看请求.JSP容器将请求的JSP转换为servlet代码,然后编译并立即执行.对同一页面的后续请求只是调用页面的运行时servlet.如果对服务器上的JSP进行了更改,则查看它的请求会触发另一个转换,编译和重新启动运行时servlet.

JSF:

JavaServer Faces是用于为Web应用程序构建用户界面的标准Java框架.最重要的是,它简化了用户界面的开发,这通常是Web应用程序开发中比较困难和繁琐的部分之一.
虽然可以通过使用基础Java Web技术(例如Java servlet和JavaServer Pages)来构建用户界面,而无需为企业Web应用程序开发设计全面的框架,但这些核心技术通常会导致各种开发和维护问题.更重要的是,当开发人员实现生产质量解决方案时,JSF解决的同一组问题将以非标准方式得到解决.JavaServer Faces旨在通过以下方式简化Java Web应用程序用户界面的开发:
•它提供了一种以组件为中心,独立于客户端的开发方法来构建Web用户界面,从而提高了开发人员的工作效率和易用性.
•它简化了Web用户界面对应用程序数据的访问和管理.
•它以简单且不引人注目的方式自动管理多个请求与多个客户端之间的用户界面状态.
•它提供了一个开发框架,对不同技能的不同开发人员友好.
•它描述了Web应用程序的一组标准体系结构模式.

[ 来源:完整参考:JSF ]

  • @Oberon:谢谢你的回复.我花了一段时间才找到准确的单词,所以去了书.如果不合适,那么您或任何人都可以建议我取消答案.我很乐意这样做. (7认同)
  • 这不是我,但我想是因为你基本上复制并粘贴了一本书的答案. (3认同)

Kar*_*thi 17

在某些情况下,您可以支持JSP而不是JSF.应用性质应该是选择技术的决定性因素.

如果你有丰富的GUI交互和大量的Java脚本需要,那么赞成JSF.基本上,如果您的GUI应用程序架构像面向组件甚至像Swing一样驱动,那么JSF是最好的.

如果应用程序只是一个简单的表单提交,并不需要很多GUI交互,那么如果学习新技术是一种开销而且复杂的框架是不必要的,那么JSP可以做得很好.


cac*_*kle 12

Servlet - 它是java服务器端层.

  • JSP - 它是带有html的Servlet
  • JSF - 它是基于标记库的组件
  • JSP - 当服务器收到请求时,它会被转换为servlet.

  • 当服务器获得请求时,JSP被转换为servlet. (2认同)

mah*_*esh 10

确实,JSP在执行时被转换为servlet,而JSF是一个全新的东西,以使网页更具可读性,因为JSF允许以标记的形式编写所有编程结构.


use*_*245 6

Servlet和JSP之间的基本区别在于,我们在Servlet中编写java代码,并且我们嵌入了HTML代码,而JSP只是反向的.在JSP中,我们编写HTML代码,并使用JSP提供的标记嵌入java代码.


Yst*_*ter 5

Java Server Pages(JSP)是一种Java技术,它使Web开发人员和设计人员能够快速开发和轻松维护利用现有业务系统的信息丰富的动态Web页面.JSP技术将用户界面与内容生成分开,使设计人员能够在不改变底层动态内容的情况下更改整体页面布局.

Facelets是第一个为JSF(Java Server Faces)设计的非JSP页面声明语言,与JSP相比,它为JSF开发人员提供了更简单,更强大的编程模型.它解决了JSP中用于Web应用程序开发的不同问题.

这是一个比较scriplets和facelets功能的表:

在此输入图像描述 资源


归档时间:

查看次数:

413364 次

最近记录:

6 年,3 月 前