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方法(如GET
和POST
来挂接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组件树来完成所有工作。
相关问题
请参阅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