javaWeb项目之JSP学习笔记----1,JSP介绍

本文全面介绍了JSP技术,它是用于开发动态WEB资源的技术,本质是Servlet。阐述了使用JSP的原因及优势,如性能优越、基于Java Servlet API等。还介绍了JSP的结构、处理流程、生命周期,包括编译、初始化、执行和销毁阶段,以及JSP编译的步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

JSP 简介

JSP,即Java Server Pages,和Servlet一样,都是SUN公司定义的一种用于开发动态WEB资源的技术。

  为什么说JSP也是动态web开发的一项技术呢?这是因为写JSP虽然像是在写HTML,但是JSP允许在页面中嵌套Java代码,或者利用某个标签表示Java代码(EL与jstl)。这就使得我们在写JSP时能够获取请求对象Request和响应对象Response等这样的web开发常用对象,实现与浏览器的交互。其实JSP就是一种Servlet,

一:jsp页面的内容由两部分组成:

1.静态部分:标准的HTML标签,静态的页面内容,这些内容与静态的HTML页面相同。

2.动态部分:受Java程序控制的内容,这些内容由Java脚本动态生成。

二:jsp的本质

jsp的本质是servlet。jsp页面由系统编译成servlet,servlet再负责响应用户请求,也就是说,jsp其实也是servlet的一种简化,使用jsp时,其实还是使用了servlet,因为web应用中的每个jsp页面都会由servlet容器生成对应的servlet。

什么是Java Server Pages?

JSP全称Java Server Pages,是一种动态网页开发技术。它使用JSP标签在HTML网页中插入Java代码。标签通常以<%开头以%>结束。

JSP是一种Java servlet,主要用于实现Java web应用程序的用户界面部分。网页开发者们通过结合HTML代码、XHTML代码、XML元素以及嵌入JSP操作和命令来编写JSP。

JSP通过网页表单获取用户输入数据、访问数据库及其他数据源,然后动态地创建网页。

JSP标签有多种功能,比如访问数据库、记录用户选择信息、访问JavaBeans组件等,还可以在不同的网页中传递控制信息和共享信息。

 


为什么使用JSP?

JSP程序与CGI程序有着相似的功能,但和CGI程序相比,JSP程序有如下优势:

  • 性能更加优越,因为JSP可以直接在HTML网页中动态嵌入元素而不需要单独引用CGI文件。
  • 服务器调用的是已经编译好的JSP文件,而不像CGI/Perl那样必须先载入解释器和目标脚本。
  • JSP 基于Java Servlet API,因此,JSP拥有各种强大的企业级Java API,包括JDBC,JNDI,EJB,JAXP等等。
  • JSP页面可以与处理业务逻辑的 Servlet 一起使用,这种模式被Java servlet 模板引擎所支持。

最后,JSP是Java EE不可或缺的一部分,是一个完整的企业级应用平台。这意味着JSP可以用最简单的方式来实现最复杂的应用。


JSP的优势

以下列出了使用JSP带来的其他好处:

  • 与ASP相比:JSP有两大优势。首先,动态部分用Java编写,而不是VB或其他MS专用语言,所以更加强大与易用。第二点就是JSP易于移植到非MS平台上。
  • 与纯 Servlet 相比:JSP可以很方便的编写或者修改HTML网页而不用去面对大量的println语句。
  • 与SSI相比:SSI无法使用表单数据、无法进行数据库链接。
  • 与JavaScript相比:虽然JavaScript可以在客户端动态生成HTML,但是很难与服务器交互,因此不能提供复杂的服务,比如访问数据库和图像处理等等。
  • 与静态HTML相比:静态HTML不包含动态信息。

 

 

JSP 结构

网络服务器需要一个 JSP 引擎,也就是一个容器来处理 JSP 页面。容器负责截获对 JSP 页面的请求。

JSP 容器与 Web 服务器协同合作,为JSP的正常运行提供必要的运行环境和其他服务,并且能够正确识别专属于 JSP 网页的特殊元素。

JSP 处理流程

以下步骤表明了 Web 服务器是如何使用JSP来创建网页的:

  • 就像其他普通的网页一样,您的浏览器发送一个 HTTP 请求给服务器。

  • Web 服务器识别出这是一个对 JSP 网页的请求,并且将该请求传递给 JSP 引擎。通过使用 URL或者 .jsp 文件来完成。

  • JSP 引擎从磁盘中载入 JSP 文件,然后将它们转化为 Servlet。这种转化只是简单地将所有模板文本改用 println() 语句,并且将所有的 JSP 元素转化成 Java 代码。

  • JSP 引擎将 Servlet 编译成可执行类,并且将原始请求传递给 Servlet 引擎。

  • Web 服务器的某组件将会调用 Servlet 引擎,然后载入并执行 Servlet 类。在执行过程中,Servlet 产生 HTML 格式的输出并将其内嵌于 HTTP response 中上交给 Web 服务器。

  • Web 服务器以静态 HTML 网页的形式将 HTTP response 返回到您的浏览器中。

  • 最终,Web 浏览器处理 HTTP response 中动态产生的HTML网页,就好像在处理静态网页一样。

以上提及到的步骤可以用下图来表示:

一般情况下,JSP 引擎会检查 JSP 文件对应的 Servlet 是否已经存在,并且检查 JSP 文件的修改日期是否早于 Servlet。如果 JSP 文件的修改日期早于对应的 Servlet,那么容器就可以确定 JSP 文件没有被修改过并且 Servlet 有效。这使得整个流程与其他脚本语言(比如 PHP)相比要高效快捷一些。

总的来说,JSP 网页就是用另一种方式来编写 Servlet 而不用成为 Java 编程高手。除了解释阶段外,JSP 网页几乎可以被当成一个普通的 Servlet 来对待。

 

JSP 生命周期

理解JSP底层功能的关键就是去理解它们所遵守的生命周期。

JSP生命周期就是从创建到销毁的整个过程,类似于servlet的生命周期,区别在于JSP生命周期还包括将JSP文件编译成servlet的。

以下是JSP生命周期中所走过的几个阶段:

  • 编译阶段:

    的servlet容器编译servlet的源文件,生成的servlet类

  • 初始化阶段:

    加载与JSP对应的servlet的类,创建其实例,并调用它的初始化方法

  • 执行阶段:

    调用与JSP对应的servlet的实例的服务方法

  • 销毁阶段:

    调用与JSP对应的servlet的实例的销毁方法,然后销毁的servlet实例

很明显,JSP生命周期的四个主要阶段和servlet的生命周期非常相似,下面给出图示:


JSP编译

当浏览器请求JSP页面时,JSP引擎会首先去检查是否需要编译这个文件。如果这个文件没有被编译过,或者在上次编译后被更改过,则编译这个JSP文件。

编译的过程包括三个步骤:

  • 解析JSP文件。
  • 将JSP文件转为servlet的。
  • 编译的servlet。
  • JSP生命周期代码实例如下所示:

    <span style="color:#333333"><span style="color:#666600"><%@ page language =“java”contentType =“text / html; charset = UTF-8”</span><span style="color:#000000">page language </span><span style="color:#666600">= </span><span style="color:#008800">“java” </span><span style="color:#000000">contentType </span><span style="color:#666600">= </span><span style="color:#008800">“text / html; charset = UTF-8”</span><span style="color:#000000">
        的pageEncoding = “UTF-8” %></span><span style="color:#666600">= </span><span style="color:#008800">“UTF-8” </span><span style="color:#000000">%></span><span style="color:#000000">
    <HTML></span><span style="color:#000088"><HTML></span><span style="color:#000000">
    <HEAD></span><span style="color:#000088"><HEAD></span><span style="color:#000000">
    <TITLE> life.jsp </ TITLE></span><span style="color:#000088"><title> </span><span style="color:#000000">life.jsp </span><span style="color:#000088"></ title></span><span style="color:#000000">
    </ HEAD></span><span style="color:#000088"></ HEAD></span>
    <span style="color:#000088"><BODY></span>
    <span style="color:#000000">
    <%! </span><span style="color:#000000">
      private int initVar = 0;</span><span style="color:#000000">
      private int serviceVar = 0;</span><span style="color:#000000">
      private int destroyVar = 0;</span><span style="color:#000000">
    %></span>
      <span style="color:#000000">
    <%!</span><span style="color:#000000">
      public void jspInit(){</span><span style="color:#000000">
        initVar ++;</span><span style="color:#000000">
        System.out.println(“jspInit():JSP被初始化了”+ initVar +“次”);</span><span style="color:#000000">
      }</span><span style="color:#000000">
      public void jspDestroy(){</span><span style="color:#000000">
        destroyVar ++;</span><span style="color:#000000">
        System.out.println(“jspDestroy():JSP被销毁了”+ destroyVar +“次”);</span><span style="color:#000000">
      }</span><span style="color:#000000">
    %></span>
    <span style="color:#000000">
    <%</span><span style="color:#000000">
      serviceVar ++;</span><span style="color:#000000">
      System.out.println(“_ jspService():JSP共响应了”+ serviceVar +“次请求”);</span>
    <span style="color:#000000">
      String content1 =“初始化次数:”+ initVar;</span><span style="color:#000000">
      String content2 =“响应客户请求次数:”+ serviceVar;</span><span style="color:#000000">
      String content3 =“销毁次数:”+ destroyVar;</span><span style="color:#000000">
    %></span>
    <span style="color:#000088"><h1></span><span style="color:#000000">菜鸟教程JSP测试实例</ h1></span>
    <span style="color:#000088"><p></span><span style="color:#000000"> <%= content1%> </ p></span>
    <span style="color:#000088"><p></span><span style="color:#000000"> <%= content2%> </ p></span>
    <span style="color:#000088"><p></span><span style="color:#000000"> <%= content3%> </ p></span>
    <span style="color:#000000">
    </ BODY></span><span style="color:#000000">
    </ HTML></span>
    </span>

    浏览器打开该页面,输出结果为:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值