JSP的结构和生命周期
来源:互联网 发布:px4飞控源码 百度云 编辑:程序博客网 时间:2024/06/05 20:33
1.JSP的结构
网络服务器需要一个JSP引擎,也就是一个容器来处理JSP页面。容器负责截获对JSP页面的请求。JSP容器和Web服务器协同合作,为JSP的正常运行提供必要的运行环境和其它服务,并且能够正确识别专属于JSP网页的特殊元素。
下图显示了JSP容器和JSP文件在Web应用中所处的位置:
2.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有效。 这使得整个流程与其他脚本语言相比要高效快捷一些。
3.JSP的生命周期
理解JSP的生命周期是理解JSP底层功能的关键。
JSP的生命周期包括以下几个阶段:
- 编译阶段:servlet容器编译servlet源文件,生成servlet类;
- 初始化阶段:加载与JSP对应的servlet类,创建其实例,并调用它的初始化方法;
- 执行阶段:调用与JSP对应的servlet实例的服务方法;
- 销毁阶段:调用与JSP对应的servlet实例的销毁方法,然后销毁servlet实例;
生命周期如下图所示:
(1)JSP编译
当浏览器发起请求时,JSP引擎将编译JSP文件。流程如下图:
有三个步骤:
- 解析JSP文件;
- 将JSP文件转化为servlet;
- 编译servlet;
这里,首先判断是不是第一次请求,如果是的话,也就是说JSP还没有被编译过,JSP引擎就把相应的JSP文件编译成servlet,生成字节码文件,并调用jspInit();如果不是第一次请求,说明已经有了字节码文件,那么就开始解析执行,调用jspServive()。
jspService()方法被调用来处理客户端的请求,对于每一个请求,JSP引擎将创建一个新的线程来处理请求。如果有多个客户端同时请求JSP文件,则JSP引擎将会创建多个线程,每个客户端对应一个线程。同时,servlet始终存在内存中,因此相应很快。
(2)JSP初始化
容器载入JSP文件后,它会在为请求提供任何服务前调用jspInit()方法。如果需要执行自定义的JSP初始化任务,复写jspInit()方法就行了,就像下面这样:
public void jspInit() { //init code}通常,程序只初始化一次。
(3)JSP执行
这一阶段描述了JSP生命周期中一切与请求相关的交互行为,直到被销毁。
当JSP页面完成初始化后,调用jspService()方法执行。
(4)JSP清理
JSP生命周期的销毁阶段描述了当一个JSP网页从容器中被移除时所发生的一切。
jspDestroy()方法在JSP中等价于servlet中的销毁方法。当您需要执行任何清理工作时复写jspDestroy()方法,比如释放数据库连接或者关闭文件夹等等。
jspDestroy()方法在JSP中等价于servlet中的销毁方法。当您需要执行任何清理工作时复写jspDestroy()方法,比如释放数据库连接或者关闭文件夹等等。
2 0
- JSP的结构和生命周期
- Servlet和JSP的生命周期
- Servlet和JSP的生命周期
- Servlet 和Jsp的生命周期
- JSP结构、生命周期
- JSP学习笔记一之JSP的结构与生命周期
- JSP-JSP的生命周期
- jsp指令与jsp注释以及jsp脚本和jsp声明、jsp表达式、jsp的生命周期
- JSP的生命周期和工作原理
- servlet 和 jsp的生命周期 工作原理
- Servlet生命周期和JSP
- JSP/Servlet的生命周期
- JSP/Servlet的生命周期
- JSP/Servlet的生命周期
- JSP的生命周期
- JSP生命周期的实例
- JSP页面的生命周期
- JSP的生命周期
- 键盘的弹出与消失(通知)
- epoll详细工作原理
- 使用python创建数据库表空间
- machine-learning第七周 上机作业
- freemarker assign 声明变量,boolean,date,date日期格式转换
- JSP的结构和生命周期
- python机器学习包mlxtend的安装和配置
- 数组中只出现一次的数字
- PAT1002.写出这个数
- 快速掌握Lua 5.3 —— 环境
- atomic提供原子操作的类
- hdu 2078
- 一个资深iOS开发者对于React Native的看法
- Mongo中上传下载图片