JSF、Servlet 和 JSP 有什么区别?

新手上路,请多包涵

我有一些问题。这些是 :

  1. JSP 和 Servlet 之间有什么关系?
  2. JSP 是某种 Servlet 吗?
  3. JSP 和 JSF 之间有什么关系?
  4. JSF 是某种基于 预构建 UI 的 JSP ,如 ASP.NET-MVC 吗?

原文由 Cheung 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 817
2 个回答

JSP(Java 服务器页面)

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

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

小服务程序

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

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

JSF(Java服务器面)

JSF 是一个 基于组件的 MVC 框架,它建立在 Servlet API 之上,并通过标签库提供 组件,这些组件可以在 JSP 或任何其他基于 Java 的视图技术(如 Facelets )中使用。 Facelets 比 JSP 更适合 JSF。它提供了强大的 模板功能,例如 复合组件,而 JSP 基本上只提供 <jsp:include> 用于在 JSF 中进行模板化,因此您不得不使用原始 Java 代码(有点不透明并且很多繁琐的工作)当你想用一个组件替换一组重复的组件时。自 JSF 2.0 以来,JSP 已被弃用为支持 Facelets 的视图技术。

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

注意:JSP 通过 Taglibs 具有强大的模板化能力,尤其是 ( Tag File ) 变体。缺少结合 JSF 的 JSP 模板。

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

相关问题

原文由 BalusC 发布,翻译遵循 CC BY-SA 4.0 许可协议

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

JSP 技术是 Java 技术家族的一部分。 JSP 页面被编译成 servlet,可以调用 JavaBeans 组件(bean)或 Enterprise JavaBeans 组件(enterprise beans)在服务器上进行处理。因此,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 一起使用的标记。

原文由 S.Lott 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题