代码之家  ›  专栏  ›  技术社区  ›  Cheung

JSF、Servlet和JSP之间的区别是什么?

  •  768
  • Cheung  · 技术社区  · 16 年前

    我有一些问题。这些是:

    1. JSP是某种Servlet吗?
    2. JSP和JSF是如何相互关联的?
    3. 比如ASP.NET-MVC?
    15 回复  |  直到 6 年前
        1
  •  1261
  •   Community Mohan Dere    6 年前

    JSP (JavaServer Pages)

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

    HttpServlet Tomcat ,这是 /work 目录在JSP请求中,servlet容器将执行已编译的JSP类,并通过网络将生成的输出(通常仅为HTML/CSS/JS)通过web服务器发送到客户端,然后客户端在web浏览器中显示该输出。

    Servlets

    Servlet是一个 Java应用程序编程接口(API) HttpServlet 它提供了钩住的方法 HTTP HTTP methods 比如 GET POST HttpServlet s来侦听特定的HTTP URL模式,该模式在中是可配置的 web.xml ,或最近与 Java EE 6 @WebServlet 注释。

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

    JSF (JavaServer Faces)

    基于组件的MVC框架 它构建在Servlet API之上,并提供 components 通过taglibs,它可以用于JSP或任何其他基于Java的视图技术,如 Facelets . Facelets比JSP更适合JSF。也就是说,它提供了很大的帮助 templating capabilities 比如 composite components ,而JSP基本上只提供 <jsp:include> 用于在JSF中进行模板化,因此当您想要用单个组件替换重复的组件组时,您必须使用原始Java代码创建自定义组件(这有点不透明,需要做很多繁琐的工作)。自JSF2.0以来,JSP作为视图技术被弃用,取而代之的是Facelets。

    :JSP通过Taglibs具有强大的模板功能,尤其是( Tag File

    Model-View-Controller )JSF提供了 FacesServlet . 它承担了所有标准且繁琐的HTTP请求/响应工作,例如收集用户输入、验证/转换用户输入、将用户输入放入模型对象、调用操作和呈现响应。这样,您就基本上得到了一个JSP或Facelets(XHTML)页面 还有一个JavaBean类 模型 小脸蛋 JSF组件树 做所有的工作。

        2
  •  87
  •   Tarik    11 年前

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

    JSP技术是Java的一部分 技术家族。JSP页面是 编译成servlet并可以调用 企业JavaBeans组件 在服务器上处理。因此,JSP 面向对象的高度可扩展体系结构 基于web的应用程序。

    看见 https://jcp.org/en/introduction/faq

    答:JavaServerFaces技术是一种 用于web应用程序。JavaServerFaces 技术包括:

    处理事件和输入验证, 定义页面导航,以及

    JavaServerPages(JSP)自定义标记 用于表示JavaServer的库

    JSP是一种特殊的servlet。

    JSF是一组可以与JSP一起使用的标记。

        3
  •  34
  •   Vh24    14 年前

    从浏览器/客户端的角度

    从服务器角度

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

        4
  •  24
  •   Kishor Prakash    13 年前

    JavaServletAPI使Java开发人员能够编写服务器端代码 JavaServletAPI提供了比CGI更好的性能; 然而,它还有一些关键的额外优势。因为servlet是 更重要的是,它们能够在任何平台上运行。因此,同样 代码可移植到任何支持Java的主机。小仆 服务器端Web应用程序开发技术。

    JSP:

    为Web生成大量动态HTML内容的解决方案 用户界面。JavaServerPages支持Web开发人员和设计人员 为了简单地编辑带有特殊标签的HTML页面,Java 部分。JavaServerPages通过一个名为 JSP页面视图请求。JSP容器转换请求的 JSP转换为servlet代码,然后编译并立即执行。 对同一页面的后续请求只需调用运行时servlet 对于页面。如果对服务器上的JSP进行了更改,则请求 运行时servlet。

    JSF:

    开发用户界面,这通常是
    虽然可以通过使用基本的 没有为企业Web设计的全面框架 大量的开发和维护问题。更重要的是 由JSF解决的同一组问题将在一个时间内得到解决 Java Web应用程序的用户界面开发 以下方法:
    构建Web用户的独立于客户端的开发方法 接口,从而提高开发人员的生产效率和易用性。
    网络用户界面。
    它自动管理用户界面 低调的态度。
    它提供了一个开发框架 对具有不同技能的不同开发人员观众友好。
    它描述了一组标准的web架构模式 应用

    [ Complete reference:JSF ]

        5
  •  18
  •   Karthi    13 年前

    还有一些情况下,您可以选择JSP而不是JSF。应用性质应是选择技术的决定因素。

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

    如果应用程序只是一个简单的表单提交,不需要太多的GUI交互,那么如果学习一项新技术是一项开销,而且不需要复杂的框架,那么JSP可以做得很好。

        6
  •  13
  •   Koray Tugay    10 年前

    Servlet——它是java服务器端层。

    • JSP—它是带有html的Servlet
    • JSF-它的组件基于标记库
        7
  •  10
  •   mahesh    15 年前

    的确,JSP在执行时被转换为servlet,JSF是一种全新的东西,它可以让网页更具可读性,因为JSF允许以标记的形式编写所有编程结构。

        8
  •  6
  •   L Joey Utkarsh Bhatt    9 年前

    Servlets和JSP的基本区别在于,在Servlets中我们编写java代码,并且嵌入HTML代码,而JSP的情况正好相反。 在JSP中,我们编写HTML代码,并使用JSP提供的标记嵌入java代码。

        9
  •  5
  •   Yster    10 年前

    Java服务器页面(JSP) 是一种java技术,它使Web开发人员和设计人员能够快速开发和轻松维护利用现有业务系统的信息丰富、动态的Web页面。JSP技术将用户界面与内容生成分离,使设计者能够在不改变底层动态内容的情况下更改整个页面布局。

    是第一种为您设计的非JSP页面声明语言 JSF(Java服务器面)

    下面是一个比较scriplets和facelets功能的表格:

    enter image description here Source

        10
  •  0
  •   L Joey Utkarsh Bhatt    9 年前
    JSP:means HTML+Java Code:
    

    JSP有自己的生命周期 jsp_服务()

    第一次请求后,JSP转换为.java文件。我们使用的标签有三种类型

    <%  %>
    

    2.)表达式标签

    <%=  %>
    

    在这里,开发人员可以使用一些与打印相关的数据

    3)声明

    <!% %>
    

    Servlet:
    

    Servlet有自己的生命周期。

    init()
    service()
    destroy()
    

    在第一次请求之后,容器将从web.xml文件中读取数据 然后在发出欢迎信息后,将显示欢迎信息。

    JSF:
    

    A)Restore view phase
    B)Apply request values phase
    C)Process validations phase
    D)Update model values phase
    E)Invoke application phase
    F)Render response phase
    

    对于这里的ui,对于这里的表,我们使用的是面板网格,这是不同的面。

    Rich Faces
    Prime Faces.
    
        11
  •  -1
  •   metrangia    10 年前

    JSP是MVC(模型-视图-控制器)的视图组件。控制器接收传入的请求并将其传递给模型,该模型可能是执行某些数据库访问的bean。JSP然后使用HTML、CSS和JavaScript格式化输出,然后将输出发送回请求者。

        12
  •  -1
  •   Nikhil    9 年前

    JSF是一个高级框架,在其中它非常容易实现基于模型-视图-控制器(MVC)的项目体系结构。与JSP相比,JSF的主要优点是基于条件在浏览器上轻松地动态呈现组件,并且易于集成ajax事件。

    JSF应用程序的前端即xhtml文件是通过浏览器向用户显示的文件。这些xhtml文件在内部调用托管bean,例如写入实际应用程序逻辑的控制器。

    控制器在内部调用与数据库通信的各种服务(使用Hibernate或JPAAPI)。简而言之,流动就是这样发生的。

    JSF+RichFaces+Hibernate/JPA无疑是一项值得学习的好技术!

        13
  •  -2
  •   Mahender Reddy Yasa    11 年前

    Jsp还有内置的servlet代码,不需要任何外部编译,可以直接运行。更改将在浏览器中直接在jsp中生效。

    Servlet需要编译(即它将有特定的类创建)

    Jsf是MVC框架的视图组件

        14
  •  -2
  •   Roopam    11 年前

    jsp不是servlet。 Servlet是一个java类,它的作用是使HTML页面从静态变为动态。

        15
  •  -2
  •   Hetal Rachh    7 年前

    是在web容器中执行的服务器端java程序。 servlet的主要目标是处理从客户端接收的请求。

    Java服务器页面

    Java服务器面 是一个MVC web框架,它简化了UI的开发。

    推荐文章