(17)JSP生命周期

(17)JSP生命周期

前言

在上一篇文章 Java EE基础(16):JSP概念 + 简单使用 中,我们知道了JSP本质也是一个Servlet。

这篇文章讲讲JSP的生命周期。这篇文章可以让你更好的理解JSP。还是使用我的上一篇文章中的案例。

一、JSP生命周期

理解JSP底层功能的关键就是去理解它们所遵守的生命周期。
JSP生命周期就是从创建到销毁的整个过程,类似于servlet生命周期,区别在于JSP生命周期还包括将JSP文件编译成servlet。

一共是四个阶段:

  • 编译阶段
  • 初始化阶段
  • 执行阶段
  • 销毁阶段

JSP 的生命周期四个阶段和Servlet的生命周期非常相似。这几个阶段会在下面逐个解释。

图示:

1.生命周期阶段

1.1 编译阶段

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

编译阶段一共有三个过程:

  • 解析JSP文件。
  • 将JSP文件转为servlet。(就是将JSP文件转成了一个Servlet(.java文件))
  • 编译servlet。(将Servlet(.java文件),编译成.class文件)

想查看.jsp生成的Servlet和编译后jsp文件,请点击我的上一篇文章Java EE基础(16):JSP概念 + 简单使用
查看:(三、JSP运行原理2.如何查看编译后的jsp文件)。

1.2 初始化阶段

容器载入JSP文件后,它会在为请求提供任何服务前调用jspInit()方法。如果您需要执行自定义的JSP初始化任务,复写jspInit()方法就行了。

打开jsp文件转成的.java(servlet)文件,可以看到里面有 _jspInit() 方法,只不过方法里面没有写初始化代码。

  public void _jspInit() {
  }
1.3 执行阶段

这一阶段描述了JSP生命周期中一切与请求相关的交互行为,直到被销毁。
当JSP网页完成初始化后,JSP引擎将会调用_jspService()方法。
_jspService()方法需要一个HttpServletRequest对象和一个HttpServletResponse对象作为它的参数

继续查看jsp文件转成的.java(servlet)文件,可以看到里面有 _jspService() 方法。方法里面有上一次我们生成的代码,和一些其他的代码。现在解释一下。

.jsp文件转换成的.java文件,其实本质上还是使用servlet中字符拼接响应给浏览器的。
在这里插入图片描述

1.4 销毁阶段

JSP生命周期的销毁阶段描述了当一个JSP网页从容器中被移除时所发生的一切。
jspDestroy()方法在JSP中等价于servlet中的销毁方法。当您需要执行任何清理工作时复写jspDestroy()方法,比如释放数据库连接或者关闭文件夹等等。

继续看jsp文件转成的.java(servlet)文件,可以看到里面有 _jspDestroy() 方法,只不过方法里面也没有写代码。

  public void _jspDestroy() {
  }

最后

以上就是JSP生命周期的分享,使用的还是上一篇文章中的简单案例。

参考

菜鸟教程JSP:https://www.runoob.com/jsp/jsp-life-cycle.html