【Java Web总结】JSP页面的生命周期详解

JSP页面的生命周期详解

JSP页面从新建到结束一共经历如下6个阶段:

  1. 页面转换
  2. 页面编译
  3. 加载和创建实例
  4. 调用jspInit()
  5. 调用_jspService()
  6. 调用jspDestroy()

其中,前三个阶段是将JSP文件转换为Servlet类并装载和创建该类实例

后三个阶段是初始化、提供服务和销毁阶段

下面依次详述各个阶段的过程:

1、页面转换阶段

在该阶段,Web容器将JSP文件转换为Java源代码,JSP中的元素都转换为页面实现类中的成员

关于JSP页面实现类详解,可参考如下的技术文章:
【Java Web总结】JSP页面实现类详解

在该阶段,会进行语法检查

2、编译阶段

在JSP转换为Java文件后,Web容器调用Java编译器javac编译该文件

生成相应的.class文件

大家可能会发现,在第一次运行JSP文件时会比较慢

这是因为JSP页面要想提供服务,必须转换为Servlet类,再运行

第一次运行完后再运行就自动检查Servlet类不用再进行转换了

但是如果更改JSP文件就要重新在转换为Servlet类了

3、类的加载和实例化

当页面实现类编译为.class文件后,Web容器就会调用类加载程序(class loader)将页面实现类加载到内存中

然后,容器就会调用实现类的构造方法来实例化这个类

4、调用jspInit()

Web容器调用jspInit()来初始化Servlet实例

是在其他所有方法之前调用的方法

并且在整个JSP生命周期中仅调用一次

完成初始化工作

比如,用<%! %>声明的实例成员变量等

5、调用_jspService()

对页面的每次请求都会调用该方法

并传递请求和响应对象

JSP中的HTML元素、JSP小脚本、JSP表达式等转换阶段都在这一方法中

关于JSP页面转换为实现类_jspService()的详解,可参考如下的技术文章:
【Java Web总结】JSP页面实现类详解

6、调用jspDestroy()

当容器决定停止为该实例提供服务时,将会调用jspDestroy()方法

这是JSP生命周期的最后一个方法

释放jspInit()所获取的所有资源

【注意】在这些方法中,jspInit()和jspDestroy()方法我们无需实现,因为这两个方法已经由基类实现了,但可以通过<%! %>进行覆盖,但是,_jspService()方法不能够进行覆盖,因为此方法有Web容器自动生成的。

相关技术文章:
【Java Web总结】Java Web项目中 的.classpath、.mymetadata、.project文件作用
【Java Web问题解决】Tomcat报错javax.servlet.ServletException: Error instantiating servlet class.报错404
【比较】什么是“服务器端跳转”“客户端跳转”,二者有什么区别?
【总结】表单提交的get和post有什么不同?
【总结】Java Web 中的4种属性范围(page、request、session、application)
【Java Web问题解决】Tomcat启动时控制台出现中文乱码的问题解决方法
【示例项目】java实现通过身份证号码判断籍贯所在地区
【总结】HTTP协议中的状态码(200、403、404、500等)
【Java Web问题解决】提交表单后显示乱码
【Java Web总结】JSP页面实现类详解

你可能感兴趣的:(Java,Web)