JSF、Servlet 和 JSP 之间有什么区别?
我有一些问题。这些是:
- JSP 和 Servlet 之间是如何相互关联的?
- JSP 是某种 Servlet 吗?
- JSP 和 JSF 之间是如何相互关联的?
- JSF是某种基于预构建UI的JSP,如 ASP.NET-MVC吗?
我有一些问题。这些是:
JSP是一种在服务器机器上运行的Java视图技术,它允许您用客户端语言(如HTML,CSS,JavaScript等)编写模板文本。JSP 支持 taglibs,这些 taglibs 由 Java 代码片段支持,使您可以动态控制页面流或输出。一个众所周知的taglib是JSTL。JSP 还支持表达式语言,它可用于访问后端数据(通过页面、请求、会话和应用程序作用域中可用的属性),主要与 taglibs 结合使用。
当首次请求 JSP 或 Web 应用程序启动时,servlet 容器会将其编译为扩展 HttpServlet
的类,并在 Web 应用程序的生存期内使用它。您可以在服务器的工作目录中找到生成的源代码。例如,在Tomcat中,它是目录。在 JSP 请求上,servlet 容器将执行编译的 JSP 类,并通过网络将生成的输出(通常只是 HTML/CSS/JS)发送到客户端,客户端又在 Web 浏览器中显示它。/work
Servlet是在服务器机器上运行的Java应用程序编程接口(API),它拦截客户端发出的请求并生成/发送响应。一个众所周知的例子是,它提供了使用流行的HTTP方法(如和)挂接HTTP请求的方法。您可以配置 s 以侦听某个 HTTP URL 模式,该模式可在 中配置,或者最近使用 Java EE 6 进行配置,并带有注释。HttpServlet
GET
POST
HttpServlet
web.xml
@WebServlet
当首次请求 Servlet 时或在 Web 应用程序启动期间,Servlet 容器将创建它的实例,并在 Web 应用程序的生存期内将其保存在内存中。对于 URL 与 Servlet 的 URL 模式匹配的每个传入请求,将重用相同的实例。您可以通过 HttpServletRequest
访问请求数据,并通过 HttpServletResponse
处理响应。这两个对象都可以用作 中任何被覆盖方法中的方法参数,例如 和 。HttpServlet
doGet()
doPost()
JSF是一个基于组件的MVC框架,它建立在Servlet API之上,并通过taglibs提供组件,这些组件可以在JSP或任何其他基于Java的视图技术(如Facelets)中使用。Facelets比JSP更适合JSF。也就是说,它提供了很好的模板化功能,例如复合组件,而JSP基本上只提供用于JSF模板化的<jsp:include>
,因此当您想要用单个组件替换重复的组件组时,您被迫使用原始Java代码创建自定义组件(这有点不透明且繁琐的工作)。从 JSF 2.0 开始,JSP 已被弃用为视图技术,转而支持 Facelets。
注: 不推荐使用 JSP 本身,只是不推荐使用 JSF 与 JSP 的组合。
注意:JSP 通过 Taglibs 具有强大的模板化能力,尤其是(Tag File)变体。JSP 模板化与 JSF 相结合是所缺乏的。
作为一个 MVC(模型-视图-控制器)框架,JSF 提供 FacesServlet
作为唯一的请求-响应控制器。它需要所有标准和繁琐的HTTP请求/响应工作,例如收集用户输入,验证/转换它们,将它们放入模型对象中,调用操作和渲染响应。通过这种方式,你最终会得到一个用于视图的JSP或Facelets(XHTML)页面和一个JavaBean类作为模型。JSF 组件用于将视图与模型绑定(如 web 控件 ASP.NET),并使用 JSF 组件树来完成所有工作。FacesServlet
查看 http://www.oracle.com/technetwork/java/faq-137059.html
JSP 技术是 Java 技术系列的一部分。JSP 页面被编译成 servlet,并且可以调用 JavaBeans 组件(bean)或 Enterprise JavaBeans 组件(enterprise 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 一起使用的标记。