jsp的执行过程

今天我们要弄懂两个问题:

第一个就是jsp的运行原理,第二个就是为什么说jsp就是一个servlet

一、jsp的运行原理

1.访问jsp页面,首先tomcat服务器会去扫描jsp文件,把它翻译成java源文件

2、tomcat服务器翻译完jsp页面后,会对其java源文件进行编译成class字节码文件

3、tomcat服务器会构造这个jsp的类对象

4、tomcat服务器会调用这个jsp类对象里面的方法

二、jsp其实就是一个servlet,为什么呢?

1、在tomcat服务器的word文件上,存放着jsp文件对应的tomcat翻译的java源文件和编译的class文件

2、打开这个文件,看其继承的类,如下图

public final class _05_guess_jsp extends org.apache.jasper.runtime.HttpJspBase
    implements org.apache.jasper.runtime.JspSourceDependent {

他继承了HttpJspBase这个类

3.我们再看看这个HttpJspBase这个类是继承了什么类呢?

在tomcat的源代码中,我们在jaspert.jar包中找到下面这里类

org.apache.jasper.runtime.HttpJspBase

看看该类继承的是哪个类:

public abstract class org.apache.jasper.runtime.HttpJspBase extends 
javax.servlet.http.HttpServlet implements javax.servlet.jsp.HttpJspPage {

现在我们看到,他们的继承关系了吧,tomcat服务器把jsp翻译的文件继承了HttpJspBase类,而该类又继承了HttpServlet类,所以得到的一个结论就是,其实jsp就是一个servlet

既然jsp就是一个servlet了,那么他们的生命周期又是怎么样的呢?

jsp的生命周期:

1、翻译(jsp文件->java文件)

2、编译(java源文件->class字节码文件(servlet程序))

3、构造函数  (第一次运行)

4、调用init方法  (第一次运行)   -- 对应jsp编译的java文件的方法就是_jspInit()

5、调用service方法  --对应jsp编译的java文件的方法就是_jspService()

6、调用destroy方法    --对应jsp编译的java文件的方法就是_jspDestroy()

三、针对jsp的运行原理中的四个步骤,平常程序里是怎么运行的呢?

他分为两种情况,第一次运行和第n次运行

1、第一次运行的顺序:

走的是(1)->(2)->(3)->(4)

2、第n次运行的顺序:

走的是(4)

在这里,大家就要思考了,为什么除了第一次运行走(1)、(2)、(3)步骤,第n次就走这个步骤的呢?

大家想一下,第一次进来的时候,tomcat服务器扫描到了jsp文件,他就会在tomcat的安装目录下的work文件夹下面生成了对应的java源文件和编译好的class字节码文件,(注意了)在没有jsp文件没有改动的情况下,tomcat服务器是不会把这个翻译好编译好的文件删除掉重新编译一次的,所以就出现了第n次访问的时候,他在没有改动jsp文件的前提下,他就不会跑第一步和第二步了,这样大家明白了吧!

那为什么它连第三步创建类对象也不走了呢?

那就得从jsp的生命周期去说了,在jsp生命周期中的第三步创建构造函数和第四步调用init初始化方法的时候,他就创建了类对象,下次再进来的时候他就不需要再创建类对象了,所以第(3)步不用走的原因就再这里了。

写了一个多钟,希望可以帮到兄弟姐妹们!!!

时间: 2024-11-07 20:54:33

jsp的执行过程的相关文章

JSP的执行过程及其异常处理机制

1.JSP的执行过程 虽然JSP感觉上很像一般的HTML网页,但事实上它是以Servlet的形式被运行的.因为JSP文件在第一次运行的时候会先解释成Servlet源文件,然后编译成Servlet类文件,最后才会被Servlet容器运行,JSP的执行过程主要可以分为以下几点: 1)客户端发出请求: 2)Web容器将JSP转译成Servlet源代码: 3)Web容器将产生的源代码进行编译: 4)Web容器加载编译后的代码并执行: 5)把执行结果响应至客户端. 2.JSP的异常处理机制 JSP中除了H

jsp的组成和执行过程

jsp由以下五个组成: Html静态页面 指令:  <%@  xxx  %> 小脚本:<%   xxx   %> 表达式:<% =       %> 声明:  <%!   xxx  %> 注释: html注释 <!-- html注释 -->  jsp注释 <%--jsp注释 --%> 脚本中的注释(java注释) /* 多行注释 */ //单行注释   sql注释 -- 执行过程: 翻译阶段 编译阶段 执行阶段 翻译   编译   执

JSP基本构成和执行过程

JSP(Java Server Page)页面是指扩展名为 .jsp 的文件. JSP是服务器端运行的页面,不像html文件直接就可以在浏览器中运行.JSP页面必须部署到web容器中编译成Servlet才能执行,可以说,JSP就是Servlet的一种形式. 事实上,JSP是Servlet发展的产物,关于JSP和Servlet的关系以后再在博客中介绍. JSP基本页面由指令标签,HTML标记语言,注释,Java代码,JSP动作标签5个部分组成. 1.JSP指令标签不会产生任何内容输出到网页中,主要

jsp执行过程

JSP执行过程图解 第一次请求: 当服务器上的一个JSP页面被第一次请求执行时,服务器上的JSP引擎首先将JSP页面文件转译成一个.java文件,也就是servlet,并编译这个java文件生成.class的字节码文件,然后执行字节码文件响应客户端的请求. 再次请求: JSP引擎将直接执行字节码文件来响应客户.

JSP执行过程详解

复习JSP的概念 JSP是Java Server Page的缩写,在传统的HTML页面中加入JSP标签和java的程序片段就构成了JSP. JSP的基本语法:两种注释类型.三个脚本元素.三个元素指令.八个动作指令. JSP的内置对象常用的有:Request.Response.Out.Session.cookie.Application等. JSP中的局部变量和全局变量 在JSP基本语法博文中有个小例子counter.jsp <%@ page language="java" imp

jsp执行过程图解

转自:https://blog.csdn.net/y277an/article/details/76561451 一.jsp执行过程图解 用户访问jsp页面时,jsp的处理过程如下图所示: 二.预处理阶段 客户第一次请求jsp页面时,jsp引擎会将jsp文件中的脚本代码(HTML)和代码片段(Java代码)全部转换为java代码,转换过程非常直观:对于HTML文本只需要用简单的out.println方法包裹,对于java脚本只做保留或简单的处理. 三.编译阶段 预处理阶段把jsp文件解析为jav

Bigbluebutton服务执行过程及相关配置文件

BigBlueButton服务列表 BigBlueButton由许多开源的服务组成,看似很麻烦,实际上拆分开每一个服务就很简单了,组件化平台化.究竟BBB都用到了哪些开源服务?我们来列举一下,名称均带有对应官网链接.1.Ubuntu乌班图操作系统,友好的用户交互界面:2.Flex SDK,高效构建Web应用程序,基于所有浏览器的开源框架,AS3编写客户端软件的SDK:3.Ghostscript文档转换:4.Grails开源Web框架:5.ActiveMQ(官网有介绍,但未发现使用位置):6.Im

struts2的简单执行过程

struts2是最近刚学的一个框架,想通过写篇文章来加深下印象,这也是本篇博文产生的由来,下面进入正题 Struts2本身是一个挺简单的框架,我们通过写一个登陆的过程来具体描述下其执行过程 1.首先我们创建一个Model-User 其中Model里面包含所需字段,构造函数(有参无参都要有),get和set方法,tostring(没有的话打印出来的数据都是数据所在的地址) 2.我们来创建一个pojo userAction 然后写出具体的实现功能(因为只是描述一下执行流程所以没有连接数据库) 我们在

五、MVC-Struts1-Struts2 执行过程

一.MVC 执行过程 ①:首先,控制器接受用户的请求,并决定应该调用哪个模型来进行处理. ②:然后,模型处理用户的请求并返回数据. ③:最后,控制器确定用相应的视图将模型返回的数据呈现给用户. 二.Struts1 执行过程 Struts1 定义了通用的 controller,通过一个配置文件隔离了 model 和 view 三.struts2 执行过程 1. 请求进过3个filter, ActionContextCleanUp:用于集成其他框架 其他filter:如自定义的filter Filt