jsp 的运行原理

简介: jsp 的运行原理

jsp 的本质 ,其实是一个 Servlet 程序。


首先我们去找到我们 Tomcat 的目录下的 work\Catalina\localhost 目录。当我们发布 day09 工程。并启动 Tomcat


服务器后。我们发现 在 work\Catalina\localhost 目录下多出来一个 day09 目录。


95afb854b0a244049b643350a4bec69e.png

一开始 day09 目录还是空目录。  

5002a84a24464f73bb7c8625d1c8d5cc.png


然后,我们在浏览器输入一个 jsp 文件的访问路径访问。 比如 http://127.0.0.1:8080/day09/index.jsp 访问 index.jsp 文件

day09 目录马上会生成 org\apache\jsp 目录。 并且在会中有两个文件。

3e149dbad34f4bd4a82f943db1f67c76.png

index_jsp.class 文件很明显是 index_jsp.java 源文件编译后的字节码文件。 那么 index_jsp.java 是个什么内容呢?


生成的 java 文件名,是以原来的文件名加上_jsp 得到。 xxxx_jsp.java 文件的名字 我们打开 index_jsp.java 文件查看里面的内容: 发现,生成的类继承于 HttpJspBase 类。这是一个 jsp 文件生成 Servlet 程序要继承的基类!!!


9f45e0b0ee1047a48acaafb6d7e8f4a7.png


于是,我们关联源代码。去查看一下 HttpJspBase 类的内容。从源码的类注释说明中,我们发现。HttpJspBase 这个 类就是所有 jsp 文件生成 Servlet 程序


需要去继承的基类。并且这个 HttpJspBase 类继承于 HttpServlet 类。所以 jsp 也是一个 Servlet 小程序。


7c3b8d1a61914c7ab853d94668af9877.png


我们分别在工程的 WebContent 目录下创建多个 jsp 文件。然后依次访问。它们都被翻译为.java 文件并编译成 为.class 字节码文件


66ea1f396d0a4cf1883e6ee67114c7fd.png

我们打开 index_jsp.java 文件查看里面的内容不难发现。jsp 中的 html 页面内容都被翻译到 Servlet 中的 service方法中直接输出


581f46804ab84bd8bb89b129e9edd250.png

小结:


从生成的文件我们不难发现一个规则。


a.jsp 翻译成 java 文件后的全名是 a_jsp.java 文件


b.jsp 翻译成 java 文件后的全名是 b_jsp.java 文件


那么 当我们访问 一个 xxx.jsp 文件后 翻译成 java 文件的全名是 xxx_jsp.java 文件


xxx_jsp.java 文件是一个 Servlet 程序。原来 jsp 中的 html 内容都被翻译到 Servlet 类的 service 方法中原样输出。


相关文章
|
Java
18JavaWeb基础 - 图解JSP输出缓冲区原理
18JavaWeb基础 - 图解JSP输出缓冲区原理
57 0
|
XML Java 数据库连接
jsp访问原理和跳转流程
jsp访问原理和跳转流程
111 0
|
7月前
|
缓存 小程序 前端开发
Java服务器端技术探秘:Servlet与JSP的核心原理
【6月更文挑战第23天】Java Web开发中的Servlet和JSP详解:Servlet是服务器端的Java小程序,处理HTTP请求并响应。生命周期含初始化、服务和销毁。创建Servlet示例代码展示了`doGet()`方法的覆盖。JSP则侧重视图,动态HTML生成,通过JSP脚本元素、声明和表达式嵌入Java代码。Servlet常作为控制器,JSP处理视图,遵循MVC模式。优化策略涉及缓存、分页和安全措施。这些技术是Java服务器端开发的基础。
74 9
|
7月前
|
搜索推荐 Java 数据库连接
探索Java Web开发:Servlet与JSP的协同工作原理
【6月更文挑战第23天】Java Web开发中,Servlet和JSP协同打造动态网站。Servlet是服务器端的Java程序,处理HTTP请求并执行复杂逻辑;JSP则结合HTML和Java,生成动态内容。Servlet通过`doGet()`等方法响应请求,JSP在首次请求时编译成Servlet。两者常搭配使用,Servlet处理业务,JSP专注展示,通过`RequestDispatcher`转发实现数据渲染。这种组合是Java Web应用的基础,即使新技术涌现,其价值仍然重要,为开发者提供了强大的工具集。
78 7
|
8月前
|
存储 Java 应用服务中间件
JSP的运行原理是什么?JSP的作用域有哪些?
JSP四大作用域分别为:page、request、session、application。
118 11
|
8月前
|
前端开发 Java 数据库
【Spring原理进阶】SpringMVC调用链+JSP模板应用讲解
【Spring原理进阶】SpringMVC调用链+JSP模板应用讲解
|
8月前
|
前端开发 JavaScript Java
基于spring+jsp+mysql实现的Java web论坛系统【源码+数据库+指导运行】
基于spring+jsp+mysql实现的Java web论坛系统【源码+数据库+指导运行】
257 0
|
8月前
|
存储 Java
JSP原理以及基本语法
JSP原理以及基本语法
|
前端开发 Java 关系型数据库
欢迎来到Jsp编程课时十三——分解原理:构建自己的思路,目标更好的理解对数据的增伤改查的原理和过程。
欢迎来到Jsp编程课时十三——分解原理:构建自己的思路,目标更好的理解对数据的增伤改查的原理和过程。
110 0
|
开发框架 JavaScript 前端开发
谈谈ASP、PHP和JSP的优缺点,底层原理是什么?
谈谈ASP、PHP和JSP的优缺点,底层原理是什么?
249 0