java - JSF , servlet和JSP之间的区别是什么?

  显示原文与译文双语对照的内容

JSP和Servlet是如何相互关联的? JSP是某种Servlet? JSP和JSF是如何相互关联的? JSF是一种基于预编译用户界面的JSP,比如 ASP.NET-MVC?

时间:

( javaserverpages )

JSP是在服务器机器上运行的的Java视图技术,它允许你在( 客户端语言如 HTML,CSS,JavaScript等) 中编写模板文本。 JSP支持标记库,这种被统一到动态代理中之后,可以用于控制页面流或者输出的一小部分。 众所周知的taglib是 JSTL 。 JSP还支持表达式语言,它可以用来访问后端数据( 通过页面,请求,会话和应用程序作用域中可用的属性),主要与标记器组合。

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

servlet

Servlet是一个 Java应用程序编程接口( API ) 在服务器机器上运行,它由客户端发出的请求并生成/再将响应进行拦截。 一个著名的例子就是 HttpServletHTTP使用流行的请求HTTP方法上提供了方法来摘挂机,如 GETPOST 。 你可以配置@ # HttpServletweb.xml 中侦听某个httpurl模式,它是可以配置的,或者最近由于 javaee 6,用 @WebServlet 注解。

在内存中的生命周期中webapp,当Servlet第一次被请求检查或者在web应用程序启动时,Servlet容器将创建它的一个实例,要保持管它, 对每个传入请求都将重用相同的实例,它的URL与servlet的URL模式匹配。 你可以通过 HttpServletRequest 访问请求数据,并通过 HttpServletResponse 来处理响应。 两个对象在 HttpServlet的重写方法中作为方法参数可用,例如 doGet()doPost()

( JavaServerFaces ) web

JSF是一个组件基于MVC框架的servletapi程序,并提供该抽象构建于基础视图技术,如通过标记库,它可以用在JSP或者任何其他Java组件 Facelets 。 Facelets比JSP更适合于 JSF 。 它即提供了不少 模板化功能比如一些复合组件,而JSP基本上只提供了<jsp:include> 进行模板化,以便你被迫创建自定义组件用原始Java代码( 这一点有点不透明,在JSF中大量乏味的工作) 当你要替换一个重复组具有单个组件的部件。 由于 JSF 2.0,JSP已经被否决为视图技术,支持 Facelets 。

作为一个 MVC ( Model-View-Controller ) 框架,JSF提供了 FacesServlet 作为唯一的request-response 控制器 。 它需要的所有标准和繁琐的HTTP请求/响应工作从你的手,如正在收集用户输入,验证/转换它们,并把他们放入模型对象,则调用动作和渲染响应。 这种方式最终得到的基本上一个JSP或者 Facelets ( XHTML ) 视图页面以及每个 java bean类作为 模型。 JSF组件被用来绑定视图和模型( 例如你的ASP.NET 站点控件),FacesServlet 使用 JSF组件树来完成所有工作。

相关问题

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

JSP技术是Java技术家族的一部分。 JSP页面被编译成 servlet,可以调用javabean组件( 豆类) 或者企业javabean组件( 企业 bean ) 来执行服务器上的处理。 因此,JSP技术是基于web应用的高度可伸缩架构的关键组件。

参见 https://jcp.org/en/introduction/faq web

答:JavaServerFaces技术是为web应用程序构建用户界面的框架。 JavaServerFaces技术包括:

用于以下内容的一组 api: 表示用户界面组件并管理它的状态,处理事件和输入验证,定义页面导航,以及支持国际化和辅助功能。

用于表示JSP页面中的JavaServerFaces接口的javaserverpages ( JSP ) 自定义标记库。

JSP是一种特殊的servlet 。

JSF是一个可以用于JSP的标记集。

来自浏览器/客户透视图的

JSP和JSF看起来都一样,根据应用程序需求,JSP更适合请求- 响应基于响应的应用程序。

JSF是基于更丰富事件的Web应用程序的目标。 我看到事件比请求/响应更细粒度。

来自服务器透视图的。

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

JSF页面被转换为组件 tree(by specialized FacesServlet),它遵循由规范定义的组件生命周期。

也有一些情况,你可以在JSF上偏爱 JSP 。 应用程序性质应该是选择技术的决定因素。

如果你有丰富的GUI交互和大量的Java脚本,那么就需要 JSF 。 基本上,如果你的GUI应用程序架构类似于面向组件的&,甚至像Swing那样驱动,那么JSF是最好的。

如果所需的图形用户接口的应用程序只是一个普通的表单提交,没有太多交互,那么JSP也可以做嗯如果学习一种新科技是个开销和复杂的框架是不需要的。

的servlet:

Java Servlet API使Java开发人员能够编写用于交付动态Web内容的server-side代码。 像其他专有网络服务器 API,新 Java servletapi提供了额外的性能优于 CGI,然而,存在一些关键的优势。 因为servlet是用Java编写的,它们提供了一个 object-oriented ( OO ) 设计方法,更重要的是,它可以在任何平台上运行。 因此,同样的代码可以移植到任何支持Java的主机。 servlet极大地促进了Java的普及,因为它成为server-side网络应用程序开发的一个广泛使用的技术。

的JSP:

JSP是建立在servlet之上的,它提供了一个简单的page-based解决方案,为Web用户界面生成大量动态HTML内容。 javaserverpages使网站开发人员和设计者能够简单地编辑HTML页面,以获得动态的,Java部分的特殊标记。 JavaServer页面的工作原理是拥有一个名为JSP容器的特殊 servlet,它安装在一个Web服务器上并处理所有的JSP页面视图请求。 JSP容器将请求的JSP转换为servlet代码,然后编译并立即执行。 对同一页面的后续请求只是调用页面的运行时 servlet 。 如果对服务器上的JSP进行了更改,那么查看它的请求会触发运行时servlet的另一个转换,编译和重启。

磅的JSF:

JavaServer托雷斯是用于构建Web应用程序用户界面的标准Java框架。 最重要的是,它简化了用户界面的开发,这通常是Web应用程序开发中比较困难和乏味的部分之一。
尽管可以使用基本的Java站点 technologies(such as Java servlets and JavaServer Pages) 构建用户界面,而不需要为企业网络应用程序开发提供全面的框架,但是这些核心技术往往会导致开发和维护问题。 更重要的是,当开发人员实现production-quality解决方案时,由JSF解决的一组问题将以非标准的方式解决。 JavaServerFaces旨在通过以下方式简化javaweb应用程序的用户界面开发:




[ 源:完全 reference:JSF ]

Servlet - 它是服务器端层。

JSP - 它是带 html JSF的Servlet - 它是基于标记库JSP的组件- 它在服务器得到请求后被转换为Servlet一次。

也就是说,在执行时JSP被转换成 servlet,而JSF是一个全新的东西,为了让网页能够以标记的形式编写所有的编程结构。

和JSP之间的基本区别在于,在servlet中我们编写了java代码,并且我们嵌入了html代码,并且只使用了 JSP 。 我编写了html代码,并使用JSP提供的标记嵌入了java代码。

JSP代表JAVA服务器页面。。 jsp不是一个 servlet 。 Jsp使用代码和HTML标记本身你不需要做一个HTML和一个 servlet seprately.Jsp 在web应用程序中扮演着非常重要的角色。 Servlet是一个java类,它扮演一个角色,让你的HTML页面从静态变成动态。

Jsp在构建的servlet代码中也不需要任何外部编译它可以直接运行。 更改将在浏览器中直接在浏览器中生效。

需要编译 Servlet ( 例如 将有特定的类创建)

Jsf是MVC框架的视图组件

...