Answers:
JSP是在服务器计算机上运行的Java视图技术,它允许您用客户端语言(例如HTML,CSS,JavaScript等)编写模板文本。JSP支持taglibs,这些标签库由Java代码片段支持,可让您动态控制页面流或输出。著名的taglib是JSTL。JSP还支持Expression Language,该语言可用于访问后端数据(通过页面,请求,会话和应用程序范围中可用的属性),通常与taglib结合使用。
当首次请求JSP或Web应用程序启动时,servlet容器会将其编译为一个扩展类,HttpServlet
并在Web应用程序的生命周期内使用它。您可以在服务器的工作目录中找到生成的源代码。例如在Tomcat中,它是/work
目录。根据JSP请求,servlet容器将执行已编译的JSP类,并将生成的输出(通常只是HTML / CSS / JS)通过网络服务器通过网络服务器发送到客户端,客户端再将其显示在网络浏览器中。
Servlet是在服务器计算机上运行的Java应用程序编程接口(API),可拦截客户端发出的请求并生成/发送响应。一个著名的例子是,HttpServlet
它提供了使用流行的HTTP方法(例如和)挂接HTTP请求的方法。您可以将进行配置以侦听特定的HTTP URL模式,该模式可以在中进行配置,或者在Java EE 6中通过注解进行更新。GET
POST
HttpServlet
web.xml
@WebServlet
首次请求Servlet或在Web应用程序启动期间,Servlet容器将创建它的一个实例,并将其在Web应用程序的生存期内保存在内存中。URL匹配servlet的URL模式的每个传入请求都将重用同一实例。您可以通过访问数据,HttpServletRequest
并通过处理响应HttpServletResponse
。这两个对象都可以用作的任何覆盖方法中的方法参数HttpServlet
,例如doGet()
和doPost()
。
JSF是基于组件的MVC框架,该框架建立在Servlet API之上,并通过可在JSP或任何其他基于Java的视图技术(例如Facelets)中使用的标记库提供组件。Facelets比JSP更适合JSF。它即提供了强大的模板功能,例如复合组件,而JSP基本上仅提供JSF中的for模板功能,因此当您使用原始Java代码(这有点不透明且繁琐的工作)时,您不得不创建自定义组件。您想要用单个组件替换重复的组件组。从JSF 2.0开始,已弃用JSP作为支持Facelets的视图技术。 <jsp:include>
注意:不建议不要使用JSP本身,仅建议不要使用JSF和JSP的组合。
注意:JSP通过Taglib(特别是(Tag File)变体)具有强大的模板功能。缺少与JSF结合使用的JSP模板。
作为MVC(模型-视图-控制器)框架,JSF提供了FacesServlet
作为唯一的请求-响应控制器。它需要您完成所有标准且繁琐的HTTP请求/响应工作,例如收集用户输入,验证/转换它们,将它们放入模型对象,调用操作并呈现响应。这样,您最终获得了View的JSP或Facelets(XHTML)页面以及Java的Model类。JSF组件用于将视图与模型绑定(例如ASP.NET Web控件所做的工作),并且FacesServlet
使用JSF组件树来完成所有工作。
<c:forEach>
标记来自JSTL。另请参见stackoverflow.com/tags/jstl/info
<mytag:doesSomething/>
看起来像一个自定义标签和<jsp:attribute>
一个jsp标签。
参见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一起使用的一组标记。
Servlet:
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来工作,该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 ]
Servlet-它是Java服务器端层。
JSP:means HTML+Java Code:
JSP有其自己的生命周期jsp_init()jsp_service()jsp_destroy
第一次请求后,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,我们使用面板网格,并且为此具有不同的面。
Rich Faces
Prime Faces.
JSF是一个高级框架,其中非常容易为项目实现基于模型-视图-控制器(MVC)的体系结构。与JSP相比,JSF的主要优点是可以根据条件在浏览器上轻松动态呈现组件,并且可以轻松集成ajax事件。
JSF应用程序的前端(即xhtml文件)是通过浏览器显示给用户的文件。这些xhtml文件在内部调用托管bean,例如其中写入实际应用程序逻辑的控制器。
控制器在内部调用与数据库通信的各种服务(使用Hibernate或JPA API)。简而言之,这就是流程的发生方式。
JSF还与RichFaces结合使用,RichFaces是一个框架,可为Web应用程序提供丰富的外观。
JSF + RichFaces + Hibernate / JPA是一项值得肯定学习的好技术!
Jsp还具有内置的servlet代码,不需要任何外部编译,因此可以直接运行。更改将直接在浏览器中的jsp中生效。
Servlet需要进行编译(即将创建特定的类)
Jsf是MVC框架的视图组件
JSP代表JAVA SERVER PAGE ........ jsp不是servlet。Jsp本身就使用代码和HTML标记,您不需要分别制作HTML和servlet。Jsp在Web应用程序中扮演着重要的角色。Servlet是一个Java类,它使HTML页面从静态变为动态。