拨开荷叶行,寻梦已然成。仙女莲花里,翩翩白鹭情。
IMG-LOGO
主页 文章列表 JSF,Servlet和JSP之间的区别

JSF,Servlet和JSP之间的区别

白鹭 - 2021-11-14 2153 0 2

1.简介

在开发任何应用程序时,正确技术的选择都起着重要作用。但是,决定并不总是那么简单。

在本文中,我们将提供三种Java流行技术的比较视图。在进行比较之前,我们将从探索每种技术的目的及其生命周期开始。然后,我们将了解它们的主要特征,并在几个特征的基础上进行比较。

2. JSF

Jakarta Server Faces(以前称为JavaServer Faces)是一个Web框架,用于为Java应用程序构建基于组件的用户界面。像许多其他方法一样,它也遵循MVC方法。MVC的“视图”借助可重复使用的UI组件简化了用户界面的创建。

JSF具有广泛的标准UI组件,还提供了通过外部API定义新组件的灵活性。

任何应用程序的生命周期都涉及从启动到结束的各个阶段。同样,当客户端发出HTTP请求时,JSF应用程序的生命周期开始;当服务器响应时,JSF应用程序的生命周期结束。JSF生命周期是一个请求-响应生命周期,它处理两种请求:初始请求和回发。

JSF应用程序的生命周期**包括两个主要阶段: executerender** 。

execute阶段又分为六个阶段:

  • 恢复视图:从JSF收到请求开始

  • 应用请求值:在回发请求期间恢复组件树

  • 处理验证:处理在组件树上注册的所有验证器

  • 更新模型值:遍历组件树并设置相应的服务器端对象属性

  • 调用应用程序:处理应用程序级事件,例如提交表单

  • 渲染响应:构建视图并渲染页面

在render阶段,系统将请求的资源渲染为对客户端浏览器的响应。

JSF 2.0是一个主要版本,其中包括Facelets,复合组件,AJAX和资源库。

在Facelets之前,JSP是JSF应用程序的默认模板引擎。在JSF 2.x的较早版本中,引入了许多新功能,以使该框架更加健壮和高效。这些功能包括对注释,HTML5,Restful和无状态JSF的支持。

3. Servlet

Jakarta Servlet(以前称为Java Servlet)扩展了服务器的功能。通常,Servlet使用容器实现的请求/响应机制与Web客户端进行交互。


Servlet容器是Web服务器的重要组成部分。它管理servlet,并根据用户请求创建动态内容。每当Web服务器接收到请求时,它将服务器将请求定向到已注册的servlet。


生命周期仅包含三个阶段。首先,调用init()方法来初始化servlet .然后,容器将传入的请求发送到执行所有任务的service()方法。最后, destroy()方法清除了一些内容并拆除了servlet。


Servlet具有许多重要功能,包括对Java及其库的本地支持,用于Web服务器的标准API以及HTTP / 2的功能。此外,它们允许异步请求并为每个请求创建单独的线程。

4. JSP

Jakarta服务器页面(以前称为JavaServer页面)使我们能够将动态内容注入到静态页面中。 JSP是Servlet的高级抽象,因为JSP在执行开始之前已转换为Servlet。


常见的任务,例如变量声明和打印值,循环,条件格式设置和异常处理,都是通过JSTL库执行的。


JSP的生命周期与servlet相似,只是增加了一个步骤-编译步骤。当浏览器请求页面时,JSP引擎首先检查它是否需要编译页面。编译步骤包括三个阶段。


最初,引擎解析页面。然后,它将页面转换为servlet。最后,生成的servlet编译为Java类。


JSP具有许多值得注意的功能,例如跟踪会话,良好的表单控件以及向服务器发送数据或从服务器接收数据。因为JSP构建在Servlet之上,所以它可以访问所有重要的Java API,例如JDBC,JNDI和EJB。

5.主要差异

Servlet技术是J2EE中Web应用程序开发的基础。但是,它没有视图技术,开发人员必须将标记标签与Java代码混合在一起。此外,它缺少执行常见任务的实用程序,例如构建标记,验证请求和启用安全功能。


JSP填补了Servlet的标记空白。借助JSTL和EL,我们可以定义任何自定义HTML标签来构建良好的UI。不幸的是,JSP编译缓慢,难以调试,将基本的表单验证和类型转换留给开发人员并且缺乏对安全性的支持。


JSF是一个合适的框架,它将数据源与可重用的UI组件连接在一起,为多个库提供支持,并减少了构建和管理应用程序的工作量。作为基于组件的,JSF始终比JSP具有良好的安全性优势。尽管具有所有优点,但JSF复杂且学习曲线陡峭。


根据MVC设计模式,servlet充当控制器,而JSP充当视图,而JSF是完整的MVC。


众所周知,该servlet将需要Java代码中的手动HTML标记。出于相同的目的,JSP使用HTML,而JSF使用Facelets。此外,两者都支持自定义标签。


Servlet和JSP中没有默认的错误处理支持。相反,JSF提供了一堆预定义的验证器。


在通过Web传输数据的应用程序中,安全一直是关注的焦点。在这方面缺少仅支持基于角色和基于表单的身份验证的JSP。


说到协议,JSP仅接受HTTP,而Servlet和JSF支持几种协议,包括HTTP / HTTPS,SMTP和SIP。所有这些技术都倡导多线程,并需要运行Web容器。

六,结论

在本教程中,我们比较了Java世界中的三种流行技术:JSF,Servlet和JSP。首先,我们了解了每种技术代表什么以及其生命周期如何发展。然后,我们讨论了每种技术的主要特征和局限性。最后,我们基于几个功能对它们进行了比较。


应该选择哪种技术完全取决于上下文。应用程序的性质应该是决定因素。


标签:

0 评论

发表评论

您的电子邮件地址不会被公开。 必填的字段已做标记 *