JSF,Servlet和JSP有什么区别?

JSP和Servlet是如何相互关联的? JSP是什么样的Servlet? JSP和JSF如何相互关联? JSF是一种像ASP.NET-MVC一样的基于预构buildUI的JSP吗?

JSP(JavaServer Pages)

JSP是在服务器机器上运行的Java视图技术 ,它允许你在客户端语言(如HTML,CSS,JavaScript等)中编写模板文本。 JSP支持taglib ,这些taglib是由Java代码支持的,可以让你dynamic地控制页面stream或输出。 一个众所周知的taglib是JSTL 。 JSP还支持expression式语言 ,可用于访问后端数据(通过页面,请求,会话和应用程序范围中可用的属性),大多数情况下是与taglibs结合使用。

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

Servlet的

Servlet是在服务器机器上运行的Java应用程序编程接口(API) ,它拦截客户端发出的请求并生成/发送响应。 一个众所周知的例子是HttpServlet ,它提供了使用stream行的HTTP方法 (如GETPOST来挂接HTTP请求的方法 。 您可以将HttpServletconfiguration为通过@WebServlet注释来侦听可在web.xmlconfiguration的特定HTTP URL模式,或者最近使用Java EE 6进行configuration。

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

JSF(JavaServer Faces)

JSF是一个基于组件的MVC框架 ,它构build在Servlet API之上,通过taglibs提供组件 ,可以在JSP或任何其他基于Java的视图技术(如Facelets)中使用 。 Facelets比JSP更适合于JSF。 它提供了很好的模板function ,如复合组件 ,而JSP基本上只提供用于模板化的<jsp:include> ,所以你不得不用原始的Java代码创build自定义组件(这有点不透明并且很繁琐在JSF中工作)当你想用一个单一的组件replace一个重复的组件组。 自JSF 2.0以来,JSP已被弃用为视图技术,以支持Facelets。

作为MVC( 模型 – 视图 – 控制器 )框架,JSF提供了FacesServlet作为唯一的请求 – 响应控制器 。 它从你手中采集所有标准和繁琐的HTTP请求/响应工作,例如收集用户input,validation/转换它们,将它们放入模型对象,调用动作和呈现响应。 这样你最终基本上是一个View或一个JavaBean类的Model的JSP或Facelets(XHTML)页面。 JSF组件用于将视图与模型(如ASP.NET Web控件)绑定在一起, FacesServlet使用JSF组件树完成所有工作。

相关问题

  • 什么是ASP.NET / PHP的主streamJava替代品?
  • Java EE web开发,我需要什么技能?
  • servlets如何工作? 实例化,会话variables和multithreading
  • 什么是Javabean,他们在哪里使用?
  • 如何避免JSP文件中的Java代码?
  • JSF MVC框架中的MVC是什么组件?
  • 当用户界面可以通过CSS,HTML,JavaScript,jQuery实现时,JSF有什么需要?

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

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

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

答:JavaServer Faces技术是为Web应用程序构build用户界面的框架。 JavaServer Faces技术包括:

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

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

JSP是一种特殊的servlet。

JSF是一组可以用于JSP的标记。

从浏览器/客户端的angular度

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

JSF旨在用于更丰富的基于事件的Web应用程序。 我看到的事件比请求/响应更精细。

从服务器angular度

JSP页面被转换为servlet,并且只有最小的行为。

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

Servlets:

Java Servlet API使Java开发人员能够编写用于交付dynamicWeb内容的服务器端代码。 像其他专有的Web服务器API一样,Java Servlet API提供了比CGI更好的性能。 不过,它还有一些关键的附加优势。 因为servlet是用Java编码的,所以它们提供了面向对象(OO)的devise方法,更重要的是它能够在任何平台上运行。 因此,相同的代码可以移植到任何支持Java的主机上。 Servlet对Java的普及作出了重大贡献,因为它已成为服务器端Web应用程序开发中广泛使用的技术。

JSP:

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

JSF:

JavaServer Faces是用于为Web应用程序构build用户界面的标准Java框架。 最重要的是,它简化了用户界面的开发,而用户界面通常是Web应用程序开发中较为困难和乏味的部分之一。
尽pipe没有为企业Web应用程序开发devise的全面框架,通过使用基础Java Web技术(如Java servlet和JavaServer Pages)可以构build用户界面,但这些核心技术常常会导致各种开发和维护问题。 更重要的是,在开发人员实现生产质量解决scheme的时候,JSF解决的同样一组问题将以非标准方式解决。 JavaServer Faces旨在通过以下方式简化Java Web应用程序用户界面的开发:
•它提供了一个以组件为中心,独立于客户端的开发方法来构buildWeb用户界面,从而提高了开发人员的生产力和易用性。
•它简化了Web用户界面对应用程序数据的访问和pipe理。
它以一种简单和不显眼的方式自动pipe理多个请求和多个客户之间的用户界面状态。
•它提供了一个开发框架,对不同的开发人员和不同技能的用户友好。
它描述了一个Web应用程序的标准体系结构模式集。

[ 来源: 完整参考:JSF ]

还有一些情况可以通过JSF来支持JSP。 应用性质应该是select技术的决定性因素。

如果你有一个丰富的GUI交互和大量的Java脚本需要,那么支持JSF。 基本上,如果你的GUI应用程序体系结构像面向组件和甚至像Swing一样被驱动,那么JSF是最好的。

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

Servlet – 这是Java服务器端的图层。

  • JSP – 它是与HTML的Servlet
  • JSF – 它是基于标签库的组件
  • JSP – 当服务器有请求时它被转换成servlet。

在执行的时候JSP是转换成servlet的,JSF是全新的东西,为了使网页更具可读性,因为JSF允许以标签的forms编写所有的编程结构。

Servlet和JSP之间的基本区别在于,在Servlet中,我们编写了Java代码,并且在其中embedded了HTML代码,并且与JSP相反。 在JSP中,我们编写HTML代码,并使用JSP提供的标签embeddedJava代码。

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

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

这里是一个比较脚本和faceletsfunction的表格:

在这里输入图像描述 资源

  1. JSF是一个Web应用程序,用于简化基于Web的用户界面的开发集成; JSP是一种基于Java的技术,专门用于帮助软件开发人员创builddynamic网页。

  2. JSF包含多个核心function,包括但不限于Managed Beans,基于模板的组件系统和两个基于XML的标签库; JSP必须以Java字节码编译才能正常运行。

JSF是一个高级框架,其中非常容易实现基于模型 – 视图 – 控制器(MVC)的项目架构。 JSF优于JSP的主要优点是基于条件和易于集成的Ajax事件,在浏览器上轻松dynamic地呈现组件。

JSF应用程序(即xhtml文件)的前端是通过浏览器显示给用户的。 这些xhtml文件在内部调用托pipe的bean,例如写有实际应用程序逻辑的控制器。

控制器在内部调用与数据库通信的各种服务(使用Hibernate或JPA API)。 这就是stream程如何发生的。

JSF还与RichFaces结合使用,这是一个为您的Web应用程序提供丰富外观的框架。

JSF + RichFaces + Hibernate / JPA是一个很好的学习技术!

Jsp也有内置的servlet代码,不需要任何外部编译就可以直接运行运行。 更改将在jsp中直接在浏览器中生效。

需要编译Servlet(即它将有特定的类创build)

Jsf是MVC框架的一个视图组件

JSP代表JAVA SERVER PAGE …….. jsp不是一个servlet。 Jsp使用代码和HTML标签本身你不需要做一个HTML和一个servlet seprately.Jsp在web应用程序中扮演着macros伟的angular色。 Servlet是一个java类,起着使你的HTML页面从静态变为dynamic的作用。

JSP是MVC(模型视图控制器)的视图组件。 Controller接收传入的请求并将其传递给Model,该Model可能是一个执行某些数据库访问的Bean。 JSP然后使用HTML,CSS和JavaScript格式化输出,然后将输出发送回请求者。

 JSP:means HTML+Java Code: 

JSP拥有自己的生命周期jsp_init()jsp_service()jsp_destroy

首先请求JSP转换成.java文件。 有三种types的标签,我们正在使用
1.)无脚本

 <% %> 

这里开发人员可以声明开发人员想要获取数据的所有内容

2.)expression式标签

 <%= %> 

这里开发者可以使用一些打印相关的数据

3)声明

 <!% %> 

这里开发人员可以声明一些方法相关的数据。

 Servlet: 

Servlet有它自己的生命周期。

 init() service() destroy() 

首先请求容器将从web.xml文件读取数据,然后显示欢迎填充。
在执行操作之后,它会searchurl,在这个过程之后,它会自己search特定的servlet。 服务操作将执行。

 JSF: 

JSF有它自己的UI,它的生命周期可以以六种方式执行,

 A)Restore view phase B)Apply request values phase C)Process validations phase D)Update model values phase E)Invoke application phase F)Render response phase 

对于这里用于表格我们使用面板网格,这是不同的面孔。

 Rich Faces Prime Faces.