jsp执行原理(详解)_jsp页面运行原理-程序员宅基地

技术标签: javaweb开发相关  java  jsp  

1. jsp的工作模式

jsp的工作模式是请求/相应模式,客户端首先发出HTTP请求,jsp程序收到请求后会进行处理并返回处理结果。在一个jsp文件第一次被请求时,jsp引擎(容器)把该jsp文件转换成一个Servlet,而这个引擎本身也是一个Servlet。

2. jsp的工作原理:

  1. 客户端通过浏览器向服务器发出请求,在该请求中包含了请求的资源的路径,这样当服务器接收到该请求后就可以知道被请求的内容。

  2. 服务器根据接收到的客户端的请求来加载相应的JSP文件。

  3. Web服务器中的JSP引擎会将被加载的JSP文件转化为Servlet文件(.java)。

  4. JSP引擎将生成的Servlet代码编译成Class文件。

  5. 服务器执行这个Class文件。

  6. 最后服务器将执行结果发送给浏览器进行显示。

3. jsp的运行过程:

  1. 客户端发送请求,请求访问jsp文件。

  2. jsp容器先将jsp文件转化成一个java源文件(Java Servlet源程序),在转换过程中,如果发现jsp文件中存在任何语法错误,则中断转换过程,并向服务端和客户端返回出错信息。

  3. 如果转换成功,则jsp容器将生成的java源文件编译成相应的字节码文件*.class。该class文件就是一个Servlet,Servlet容器会像处理其他Servlet一样来处理它。

  4. 由Servlet容器加载转换后的Servlet类(.class文件)创建一个该Servlet(jsp页面的转换结果)实例,并执行Servlet的jspInit()方法。jspInit()方法在Servlet的整个生命周期中只会执行一次。

  5. 执行jspService()方法来处理客户端的请求。对于每个请求,jsp容器都会创建一个新的线程来处理它。如果多个客户端同时请求该jsp文件,则jsp容器也会创建多个线程,使得每一个客户端请求都对应一个线程。jsp运行过程中采用这种多线程的执行方式可以极大地降低对系统资源的需求,提高系统的并发量并缩短相应时间。需要注意的是,由于第4步生成的Servlet是常驻内存的,所以响应的速度非常快。

  6. 如果jsp文件被修改了,则服务器将根据设置来决定是否对该文件重新编译。如果需要重新编译,则使用重新编译后的结果取代内存中常驻的Servlet,并继续上述处理过程。

  7. 虽然jsp效率很高,但在第一次调用的时候往往由于需要转换和编译,所以会产生一些轻微的延迟。此外,由于系统资源不足等原因,jsp容器可能会以某种不确定的方式将Servlet从内存中移除,发生这种情况时,首先会调用jspDestroy()方法,然后Servlet实例会被加入“垃圾收集”处理。

  8. 当请求处理完成后,响应对象由jsp容器接受,并将html格式的响应信息发送回客户端。

4. 注意事项:

  1. 可以在jspInit()方法中进行一些初始化工作(建立数据库的连接、建立网络连接、从配置文件中获取一些参数等)。

  2. 可以在jspDestroy()方法中释放相应的资源等。

  3. 如果项目发布在Tomcat的webapps目录中,源文件和.class文件可以在“Tomcat安装目录/work/Catalina/localhost/应用名/”下找到。

联系作者

如果有什么问题请访问下面博主网站发表评论,我将第一时间回复您

jsp运行原理

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_44866009/article/details/109112290

智能推荐

kettle 共享数据库连接时带汉字引发的错误-程序员宅基地

文章浏览阅读548次。处理方式:在目录: C:\Users\Administrator\.kettle 里 找到:shared.xml 把该文件的编码方式改为UTF-8,重启kettle就没问题了

weka up-sampling & down-sampling-程序员宅基地

文章浏览阅读532次。[b]up-sampling:[/b]SMOTE algorithm,over-sampled by creating ``synthetic'' examples rather than by over-sampling with replacement.[b]Weka supervised SMOTE filter [/b]两个参数: [list][*]neares..._weka oversampled

php中如何得到js中的变量,javascript-js变量在PHP中怎么获取该变量?-程序员宅基地

文章浏览阅读1.3k次。在js中定义一个变量,在PHP中怎么获取该变量?(在一个页面)回复内容:在js中定义一个变量,在PHP中怎么获取该变量?(在一个页面)JS是前端,PHP是后端,后端PHP要获取前端JS的变量,那前端JS可以通过AJAX传输数据给后端PHP.比如登录页面login.php:js中通过post提交到后台:var data = {'param' : xxx};$.post(url,data,callba..._php 获取js中变量

2.计算机组成原理_程序计数器由时序部件组成吗-程序员宅基地

文章浏览阅读1.7k次。运算器:算术运算、逻辑运算。存储器:存放程序和数据。控制器:指挥程序运行。输入设备:将信息转换成计算机能识别的形式。输出设备:将结果转换成人们熟悉的形式。_程序计数器由时序部件组成吗

毕设分享 单片机非接触式红外感应体温计_单片机测温模块测量体温算法-程序员宅基地

文章浏览阅读80次。非接触式电子体温计主要利用红外测温原理,一切温度高于绝对零度(-273.35℃)的物体,由于分子热运动,物体会不停地向外辐射能量。物体辐射能量的大小与它的表面温度有十分密切的关系。因此,通过测量物体辐射的能量,就能够测量出物体的温度。本用户手册中的非接触式电子体温计就是利用这种测量方法,实现测量人体体温的功能。_单片机测温模块测量体温算法

uniapp使用技巧_uniapp then-程序员宅基地

文章浏览阅读2.3k次。生命周期函数执行顺序进入某一个页面onLoad:页面加载onShow:页面显示onReady:页面渲染由该页面跳转进入下一页面onHide:隐藏页面onLoad:加载页面onShow:显示页面onReady:渲染页面下一页面返回该页面onUnload:卸载页面onShow:显示页面知识点模板语法:v-bind–: v-on–@数据绑定条件判断:v-if v-if-else v-else列表渲染基础组件的使用自定义组件的使用基础api的用法条件编译页面_uniapp then

随便推点

Qt 中 Q_OBJECT 宏及 moc_*.cpp文件_moc_cpp-程序员宅基地

文章浏览阅读2.1k次,点赞4次,收藏28次。Qt 中 Q_OBJECT 宏及 moc_前缀文件Q_OBJECT 宏元对象系统 (Meta-Object System)了解 Q_OBJECT 宏展开 Q_OBJECT 宏MOC 预编译器MOC (Meta-Object Compiler)前缀 moc_xx.cpp文件代码示例如下MakeFile文件生成的moc文件如下==moc_whatismoc.cpp== 文件分析片段一结构体`qt_meta_stringdata_WhatIsMoc_t`片段二宏`QT_MOC_LITERAL`和`qt_meta__moc_cpp

WoWoViewPager 炫酷啊!-程序员宅基地

文章浏览阅读1k次。WoWoViewPager WoWo可以优化你的App介绍/引导页面,制作你的App简历。WoWo将动画和viewpager结合起来。当你滑动viewpager的时候,你也在控制动画的当前帧。就好像控制动画时间一般。比如上面的两个Gif,是先向前滑动然后向后滑动。目录English READMEGradle备注Demo版本Todo_wowoviewpager

干货福利:CVPR2016代码合集_yeonwoonya-程序员宅基地

文章浏览阅读4.3k次。DoReFa-Net: Training Low Bitwidth Convolutional Neural Networks with Low Bitwidth Gradients:https://github.com/ppwwyyxx/tensorpack/tree/master/examples/DoReFa-NetCode for Stacked attention network_yeonwoonya

深度优先搜索(DFS)和广度优先搜索(BFS)_深度优先搜索是基于中序遍历吗-程序员宅基地

文章浏览阅读537次。深度优先搜索和广度优先搜索,都是图形搜索算法。一、深度优先搜索(DFS) 深度优先搜素,是针对图和树的遍历算法,利用深度优先搜索算法可以产生目标图的相应拓扑排序表,利用拓扑排序表可以方便的解决很多相关的图论问题,如最大路径问题等等。 一般会使用栈数据结构来辅助实现DFS算法。 DFS主要思路就是从图中一个未访问的顶点V开始,沿着一条路一直往下走到底,然后从这条路尽头的结点回退到上一个节点,再从另一条路开始走到底.....,不断递归重复..._深度优先搜索是基于中序遍历吗

编译OpenWRT LEDE 固件的一些说明_generic-squashfs-combined-程序员宅基地

文章浏览阅读1.6w次,点赞4次,收藏22次。Github Actions 云编译 OpenWRT LEDE 固件固件文件说明文件共提供多种类型供下载(根据编译时选择的Target Images配置),需要其他类型的请自行转换,下面是部分说明序号名称说明(1)openwrt-x86-64-generic-squashfs-combined.img 或.gz带引导分区文件,也就是刷完后可以直接启动无需做设置,推荐使用!(2)openwrt-x86-64-generic-squashfs-combined.vmdk_generic-squashfs-combined

NOI Online Round 3 PJ 游记_noi online游记3-程序员宅基地

文章浏览阅读257次。博客园同步Day rand()\text{Day rand()}Day rand()报上了名。Day 0\text{Day 0}Day 0期中考试考萎了,彻底萎了,心里什么也不想了。试机?试个啥机?Day 1\text{Day 1}Day 1下午老妈说作业太多,于是我 16:4716:4716:47 匆匆开启了电脑。测试冥间数据,发现 tg180\text{tg} 180tg180 还可以,不错!17:0017:0017:00 开_noi online游记3

推荐文章

热门文章

相关标签