我有一些问题。这些是:
JSP和Servlet是如何相互关联的?JSP是某种Servlet吗?JSP和JSF是如何相互关联的?JSF是一种类似ASP.NET-MVC的基于预构建UI的JSP吗?
我有一些问题。这些是:
JSP和Servlet是如何相互关联的?JSP是某种Servlet吗?JSP和JSF是如何相互关联的?JSF是一种类似ASP.NET-MVC的基于预构建UI的JSP吗?
当前回答
Servlet——它是java服务器端层。
JSP-它是带有html的ServletJSF-它的组件基于标记库JSP——当服务器收到请求时,它被转换为servlet一次。
其他回答
JSP(JavaServer页面)
JSP是一种运行在服务器机器上的Java视图技术,它允许您使用客户端语言(如HTML、CSS、JavaScript等)编写模板文本。JSP支持taglib,这些代码由Java代码片段支持,允许您动态控制页面流或输出。一个著名的taglib是JSTL。JSP还支持表达式语言,该语言可用于访问后端数据(通过页面、请求、会话和应用程序范围中可用的属性),主要与taglib结合使用。
当第一次请求JSP或web应用程序启动时,servlet容器会将其编译为扩展HttpServlet的类,并在web应用程序的生命周期内使用它。您可以在服务器的工作目录中找到生成的源代码。例如,在Tomcat中,它是/work目录。在JSP请求时,servlet容器将执行已编译的JSP类,并通过网络将生成的输出(通常仅为HTML/CSS/JS)通过web服务器发送到客户端,客户端继而在web浏览器中显示该输出。
Servlet
Servlet是运行在服务器机器上的Java应用程序编程接口(API),它拦截客户端发出的请求并生成/发送响应。一个著名的例子是HttpServlet,它提供了使用流行的HTTP方法(如GET和POST)钩住HTTP请求的方法。您可以将HttpServlet配置为侦听特定的HTTP URL模式,该模式可以在web.xml中配置,也可以在最近的JavaEE6中使用@WebServlet注释进行配置。
当第一次请求Servlet或在web应用启动期间,Servlet容器将创建它的实例,并在web应用的生命周期内将其保存在内存中。对于URL与servlet的URL模式匹配的每个传入请求,都将重用相同的实例。您可以通过HttpServletRequest访问请求数据,并通过HttpServletsResponse处理响应。这两个对象都可以作为HttpServlet的任何重写方法中的方法参数,例如doGet()和doPost()。
JSF(JavaServer Faces)
JSF是一个基于组件的MVC框架,它构建在Servlet API之上,并通过标记库提供组件,标记库可以在JSP或任何其他基于Java的视图技术(如Facelets)中使用。Facelets比JSP更适合JSF。也就是说,它提供了强大的模板化功能,例如复合组件,而JSP基本上只提供了JSF中模板化的<JSP:include>,因此,当您想用单个组件替换重复的一组组件时,您必须使用原始Java代码创建自定义组件(这有点不透明,而且需要做很多繁琐的工作)。自JSF2.0以来,JSP已被弃用为支持Facelets的视图技术。
注意:JSP本身并没有被弃用,只是JSF和JSP的组合被弃用了。
注意:JSP通过Taglibs具有强大的模板功能,特别是(标记文件)变体。JSP模板与JSF相结合是所缺少的。
作为一个MVC(模型-视图-控制器)框架,JSF提供FacesServlet作为唯一的请求-响应控制器。它可以从您手中完成所有标准而乏味的HTTP请求/响应工作,例如收集用户输入、验证/转换它们、将它们放入模型对象、调用操作和呈现响应。这样,您最终基本上得到了一个用于View的JSP或Facelets(XHTML)页面和一个作为Model的JavaBean类。JSF组件用于将视图与模型绑定(例如ASP.NET web控件),FacesServlet使用JSF组件树来完成所有工作。
相关问题
ASP.NET/PHP的主流Java替代方案是什么?Java EE web开发,我需要什么技能?servlet是如何工作的?实例化、会话变量和多线程什么是Javabean,它们在哪里使用?如何避免JSP文件中的Java代码?JSF MVC框架中的MVC是什么组件?当可以使用jQuery和AngularJS等JavaScript库实现UI时,JSF需要什么
从浏览器/客户端角度
JSP和JSF看起来都是一样的,根据应用程序需求,JSP更适合于基于请求-响应的应用程序。
JSF面向更丰富的基于事件的Web应用程序。我认为事件比请求/响应更精细。
从服务器角度
JSP页面被转换为servlet,它只有最小的行为。
JSF页面被转换为组件树(通过专门的FacesServlet),它遵循规范定义的组件生命周期。
Servlet——它是java服务器端层。
JSP-它是带有html的ServletJSF-它的组件基于标记库JSP——当服务器收到请求时,它被转换为servlet一次。
JSF是一个高级框架,它非常容易为项目实现基于模型-视图-控制器(MVC)的架构。JSF与JSP相比的主要优势是,可以根据条件在浏览器上轻松地动态呈现组件,并且可以轻松地集成ajax事件。
JSF应用程序的前端(即xhtml文件)是通过浏览器向用户显示的文件。这些xhtml文件在内部调用托管bean,例如,编写实际应用程序逻辑的控制器。
控制器内部调用与数据库通信的各种服务(使用Hibernate或JPA API)。简而言之,流动就是这样发生的。
JSF还与RichFaces结合使用,RichFaces是一个为web应用程序提供丰富外观的框架。
JSF+RichFaces+Hibernate/JPA是一个很好的学习技术!
的确,JSP在执行时被转换为servlet,而JSF是一个全新的东西,因为JSF允许以标记的形式编写所有的编程结构,从而使网页更可读。