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运行原理

jsp执行原理(详解)相关推荐

  1. MySQL底层执行原理详解

    一.MySQL的内部组件结构 大体来说,MySQL 可以分为 Server 层和存储引擎层两部分. 1.Server层 ​ 主要包括连接器.查询缓存.分析器.优化器.执行器等,涵盖 MySQL 的大多 ...

  2. Mybatis原理——执行原理详解

    总结于B站鲁班大叔视频:https://www.bilibili.com/video/BV1Tp4y1X7FM?p=13&spm_id_from=pageDriver 概述 JDBC的执行流程 ...

  3. SQL底层执行原理详解

    我们平时都是使用sql语句去查询数据,都是很直接的看到结果.那么对于sql底层执行的过程大家有了解吗? 一.MySQL的内部组件结构 大体来说,MySQL 可以分为 Server 层和存储引擎层两部分 ...

  4. Java的加载与执行原理详解 Java程序从编写到最终运行经历了哪些过程

    前言 Java程序从编写到最终运行大概可概括为3个阶段:编写.编译.运行阶段. 一.编写阶段 程序员在硬盘某个位置新建一个xxx.java文件 使用记事本或者其他文本编辑器例如EditPlus打开xx ...

  5. Jsp入门1Jsp入门基础简介与工作原理详解

    一)JSP基础简介 1.什么是JSP? JSP全称是Java Server Pages,它和servle技术一样,都是SUN公司定义的一种用于开发动态web资源的技术. JSP这门技术的最大的特点在于 ...

  6. 【异步系列二】Promise原理及执行顺序详解

    前言 Promise 是 javascript 中非常重要的一环,熟悉它是必须的,而且在面试中也常常会问到相关面试题. 在了解 Promise 之前,需要了解什么是异步编程,可以参考我的一篇文章:Ja ...

  7. Oracle SQL语句执行流程与顺序原理详解

    以前读的文章,保存到本地了,忘记来源了,分享一下,本地存着怕丢了 Oracle SQL语句执行流程与顺序原理详解 第一步:客户端把语句发给服务器端执行 当我们在客户端执行SQL语句时,客户端会把这条S ...

  8. jQuery中getJSON跨域原理详解

    详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcytp28 jQuery中getJSON跨域原理详解 前几天我再开发一个叫 河蟹工 ...

  9. 深入剖析Redis系列(三) - Redis集群模式搭建与原理详解

    前言 在 Redis 3.0 之前,使用 哨兵(sentinel)机制来监控各个节点之间的状态.Redis Cluster 是 Redis 的 分布式解决方案,在 3.0 版本正式推出,有效地解决了 ...

  10. SVM-支持向量机原理详解与实践之一

    SVM-支持向量机原理详解与实践 前言 去年由于工作项目的需要实际运用到了SVM和ANN算法,也就是支持向量机和人工神经网络算法,主要是实现项目中的实时采集图片(工业高速摄像头采集)的图像识别的这一部 ...

最新文章

  1. 关于自动驾驶车安全保证、验证和认证的综述
  2. mysql读写分离实战准备一
  3. uni-app 调用接口封装文档
  4. WPF中Grid实现网格,表格样式通用类(转)
  5. 科研“潜规则”了解一下
  6. mysql判断是否为null_MySQL如何判断字段是否为null
  7. Oracle 19c 新特性:混合分区表Hybrid partitioned tables强体验
  8. springboot读取src下文件_springboot获取src/main/resource下的文件
  9. 四元素与欧拉角之间的转换
  10. Spring Data + Thymeleaf 3 + Bootstrap 4 实现分页器
  11. php 通过 create user 和grant 命令无法创建数据库用户和授权的解决办法
  12. 100项PPT制作技术
  13. 计算机二级ms高级应用考试内容,计算机二级《MSOffice》高级应用考试大纲
  14. 基于Python的豆果网食谱数据爬取及可视化分析系统
  15. 阳光下可读显示技术的工作原理
  16. 项目成本管理:项目成本控制
  17. 什么是照度(光照强度)?
  18. 新款文章,绝无仅有!微信语音aud文件转换为mp3格式
  19. Java毕设项目派大星水产商城mp4(java+VUE+Mybatis+Maven+Mysql)
  20. Mysql配置文件my.cnf配置及配置参数详解

热门文章

  1. connection activation faild
  2. 《软件研发之道:微软开发团队的经验法则》目录
  3. 金字塔原理4个基本原则_总结盆景养护的4个原则
  4. 第3章 软件测试方法--基于直觉和经验的方法
  5. 笔记本onenote绘画快捷键_onenote快捷键
  6. 10个提供免费矢量图形的网站
  7. STM32+DRV8711驱动步进电机
  8. 计算机科学与技术没落,这七所985一个A+学科都没有评上?有点尴尬了
  9. 斩波稳定(自稳零)精密运算放大器
  10. Oracle EBS数据库监控-Zabbix+zabbix-agent2+orabbix