我有一些问题。这些是:

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


看见http://www.oracle.com/technetwork/java/faq-137059.html

JSP技术是Java的一部分技术家族。JSP页面是编译成servlet并可以调用JavaBeans组件(bean)或企业JavaBeans组件(企业bean)执行服务器上的处理。因此,JSP技术是高度可扩展的体系结构基于web的应用程序。

看见https://jcp.org/en/introduction/faq

A: JavaServer Faces技术是一种构建用户界面的框架用于web应用程序。JavaServer面技术包括:一组API用于:表示UI组件并管理其状态,处理事件和输入验证,定义页面导航,以及支持国际化和可访问性。JavaServerPages(JSP)自定义标记用于表示JavaServer的库JSP页面中的Faces接口。

JSP是一种专门的servlet。

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


JSP(JavaServer页面)

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

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

Servlet

Servlet是运行在服务器机器上的Java应用程序编程接口(API),它拦截客户端发出的请求并生成/发送响应。一个著名的例子是HttpServlet,它提供了使用流行的HTTP方法(如GET和POST)钩住HTTP请求的方法。您可以将HttpServlet配置为侦听特定的HTTP URL模式,该模式可以在web.xml中配置,也可以在最近的JavaEE6中使用@WebServlet注释进行配置。

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

JSF(JavaServer Faces)

JSF是一个基于组件的MVC框架,它构建在Servlet API之上,并通过标记库提供组件,标记库可以在JSP或任何其他基于Java的视图技术(如Facelets)中使用。Facelets比JSP更适合JSF。也就是说,它提供了强大的模板化功能,例如复合组件,而JSP基本上只提供了JSF中模板化的<JSP:include>,因此,当您想用单个组件替换重复的一组组件时,您必须使用原始Java代码创建自定义组件(这有点不透明,而且需要做很多繁琐的工作)。自JSF2.0以来,JSP已被弃用为支持Facelets的视图技术。

注意:JSP本身并没有被弃用,只是JSF和JSP的组合被弃用了。

注意:JSP通过Taglibs具有强大的模板功能,特别是(标记文件)变体。JSP模板与JSF相结合是所缺少的。

作为一个MVC(模型-视图-控制器)框架,JSF提供FacesServlet作为唯一的请求-响应控制器。它可以从您手中完成所有标准而乏味的HTTP请求/响应工作,例如收集用户输入、验证/转换它们、将它们放入模型对象、调用操作和呈现响应。这样,您最终基本上得到了一个用于View的JSP或Facelets(XHTML)页面和一个作为Model的JavaBean类。JSF组件用于将视图与模型绑定(例如ASP.NET web控件),FacesServlet使用JSF组件树来完成所有工作。

相关问题

ASP.NET/PHP的主流Java替代方案是什么?Java EE web开发,我需要什么技能?servlet是如何工作的?实例化、会话变量和多线程什么是Javabean,它们在哪里使用?如何避免JSP文件中的Java代码?JSF MVC框架中的MVC是什么组件?当可以使用jQuery和AngularJS等JavaScript库实现UI时,JSF需要什么


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


Servlet——它是java服务器端层。

JSP-它是带有html的ServletJSF-它的组件基于标记库JSP——当服务器收到请求时,它被转换为servlet一次。


从浏览器/客户端角度

JSP和JSF看起来都是一样的,根据应用程序需求,JSP更适合于基于请求-响应的应用程序。

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

从服务器角度

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

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


在某些情况下,您可以倾向于JSP而不是JSF。应用性质应是选择技术的决定因素。

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

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


Servlet:Java Servlet API使Java开发人员能够编写服务器端代码用于传送动态Web内容。与其他专有Web服务器一样API,Java Servlet API提供了比CGI更好的性能;然而,它还有一些关键的附加优势。因为servlet是它们用Java编码,提供了面向对象(OO)的设计方法更重要的是,能够在任何平台上运行。因此,相同代码可移植到任何支持Java的主机。大大小小的服务促进了Java的流行,因为它被广泛使用服务器端Web应用程序开发技术。JSP:JSP构建在servlet之上,提供了一个更简单的基于页面的为Web生成大量动态HTML内容的解决方案用户界面。JavaServer Pages支持Web开发人员和设计者只需编辑带有特殊标记的HTML页面部分。JavaServerPages通过一个特殊的servlet(称为JSP容器,安装在Web服务器上,处理所有JSP页面视图请求。JSP容器转换请求的JSP转换为servlet代码,然后编译并立即执行。对同一页面的后续请求只需调用运行时servlet对于页面。如果对服务器上的JSP进行了更改查看它会触发另一个翻译、编译和重新启动运行时servlet。JSF格式:JavaServerFaces是用于构建用户的标准Java框架Web应用程序的接口。最重要的是,它简化了开发用户界面,这通常是Web应用程序开发中困难而乏味的部分。尽管可以通过使用基础Java Web技术(如Java servlet和JavaServer Pages)没有为企业Web设计的全面框架这些核心技术往往会导致各种开发和维护问题。更重要的是开发人员实现生产质量解决方案的时间JSF解决的同一组问题将在非标准方式。JavaServer Faces旨在简化开发Java Web应用程序的用户界面以下方式:•它以组件为中心,构建Web用户的独立于客户端的开发方法界面,从而提高开发人员的生产力和易用性。•它简化了从Web用户界面。•它自动管理用户界面在简单和不引人注目的方式。•它提供了一个开发框架对具有不同技能的不同开发人员观众友好。•它描述了一组标准的网络架构模式应用

[来源:完整参考:JSF]


Servlet和JSP之间的基本区别在于,在Servlet中我们编写java代码,并且嵌入HTML代码,而JSP的情况正好相反。在JSP中,我们编写HTML代码,并使用JSP提供的标记嵌入java代码。


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

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

Jsf是MVC框架的视图组件


JSP代表JAVA SERVER PAGE。。。。。。。。jsp不是servlet。Jsp本身使用代码和HTML标记,您不需要分别制作HTML和servlet。Jsp在web应用程序中发挥着巨大的作用。Servlet是一个java类,它扮演着使HTML页面从静态变为动态的角色。


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

Facelets是为JSF(JavaServerFaces)设计的第一种非JSP页面声明语言,与JSP相比,它为JSF开发人员提供了更简单、更强大的编程模型。它解决了JSP中web应用程序开发中出现的不同问题。

下面是一张表格,比较了scriples和facelets的特征:

来源


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


JSP:means HTML+Java Code:

JSP有自己的生命周期jsp_init()jsp_service()jsp销毁

在第一次请求之后,JSP转换为.java文件。我们使用的标签有三种类型1.)无脚本

<%  %>

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

2.)表达式标签

<%=  %>

在这里,开发人员可以使用一些与打印相关的数据

3.)声明

<!% %>

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

Servlet:

Servlet有自己的生命周期。

init()
service()
destroy()

第一次请求后,容器将从web.xml文件中读取数据之后,将显示欢迎填充。现在,在执行操作之后,它将搜索url,在这个过程之后,它会搜索自己所在的特定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

对于这里的ui和这里的table,我们使用面板网格,这是不同的面。

Rich Faces
Prime Faces.

JSF是一个高级框架,它非常容易为项目实现基于模型-视图-控制器(MVC)的架构。JSF与JSP相比的主要优势是,可以根据条件在浏览器上轻松地动态呈现组件,并且可以轻松地集成ajax事件。

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

控制器内部调用与数据库通信的各种服务(使用Hibernate或JPA API)。简而言之,流动就是这样发生的。

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

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


Servlet是在web容器内执行的服务器端java程序。servlet的主要目标是处理从客户端接收的请求。

Java Server Pages用于创建动态网页。Jsp被引入来在单个文件中编写java加html代码,这在servlet程序中并不容易做到。当jsp文件被翻译时,它被转换为javaservlet。

Java Server Faces是一个MVC web框架,它简化了UI的开发。


JSP代表JavaServerPages,而JSF代表JavaServerFaces。JSP是一种帮助开发人员使用HTML、XML和其他类似语言等技术开发动态网页的技术。JSF是一个帮助开发人员为服务器端应用程序开发用户界面的框架。这两种技术都基于Java,主要用于基于web的应用程序。JSP更像ASP或PHP,只是它基于Java,这意味着它使用Java编程语言。这两项技术均由Sun Microsystems开发。值得注意的是,JSP1.x版本使用JSP作为模板的默认系统,而JSP2.x使用Facelets而不是JSP。