JSF,Servlet和JSP有什么区别?

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


JSP(JavaServer Pages)

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

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

Servlet的

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

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

JSF(JavaServer Faces)

JSF是一个基于组件的MVC框架 ,它构建在Servlet API之上,并通过taglib提供组件,这些组件可用于JSP或任何其他基于Java的视图技术,如Facelets。 Facelets比JSP更适合JSF。 它提供了很好的模板功能,如复合组件,而JSP基本上只提供用于模板化的<jsp:include> ,所以你不得不使用原始Java代码创建自定义组件(这有点不透明并且很繁琐在JSF中工作)当你想用单个组件替换重复的组件组时。 自JSF 2.0以来,JSP已被视为技术而不赞成使用Facelets。

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

相关问题

  • 什么是ASP.NET / PHP的主流Java替代品?
  • Java EE web开发,我需要什么技能?
  • servlets如何工作? 实例化,会话变量和多线程
  • 什么是Javabean,它们在哪里使用?
  • 如何避免JSP文件中的Java代码?
  • JSF MVC框架中的MVC是什么组件?
  • 当用户界面可以通过CSS,HTML,JavaScript,jQuery实现时,JSF需要什么?

  • 请参阅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组件并管理其状态,处理事件和输入验证,定义页面导航以及支持国际化和可访问性。

    用于在JSP页面中表示JavaServer Faces接口的JavaServer Pages(JSP)自定义标记库。

    JSP是一种特殊的servlet。

    JSF是一组可用于JSP的标记。


    从浏览器/客户端的角度

    JSP和JSF看起来都是一样的,按照每个应用程序要求,JSP更适合基于请求 - 响应的应用程序。

    JSF旨在用于更丰富的基于事件的Web应用程序。 我看到的事件比请求/响应细得多。

    从服务器角度

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

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

    链接地址: http://www.djcxy.com/p/13355.html

    上一篇: What is the difference between JSF, Servlet and JSP?

    下一篇: Design Patterns web based applications