JSP运行机制图(文字描述):
[浏览器请求*.jsp]
│
▼
[Web容器(如Tomcat)]
│
▼
[首次访问?] → 是 → [JSP引擎将.jsp转译为.java] → [JDK编译为.class]
│ │
否 ▼
│ [Servlet实例化]
│ │
▼ ▼
[调用对应Servlet] ←─────[初始化后驻留内存]
│
▼
[执行_jspService()生成HTML]
│
▼
[返回动态内容到浏览器]
JSP运行机制简述:
1. **请求阶段**
浏览器发起对`.jsp`页面的HTTP请求,Web容器(如Tomcat)接收请求
2. **转译阶段(首次访问)**
- JSP引擎将.jsp文件解析为Java Servlet源文件(.java)
- 文件保存路径:`{TOMCAT_HOME}/work/Catalina/{hostname}/{appname}/org/apache/jsp/`
3. **编译阶段**
JDK将生成的.java文件编译为.class字节码文件,形成标准的Servlet类
4. **加载执行**
- Web容器通过类加载器加载编译后的Servlet类
- 调用`_jspInit()`进行初始化(仅首次)
- 每次请求调用`_jspService()`方法生成动态内容
5. **响应生成**
- 在_jspService()方法中混合执行:
- 直接输出HTML静态内容
- 执行`<% %>`脚本片段
- 解析`<jsp:include>`等动作标签
- 最终生成完整的HTML响应返回客户端
6. **缓存优化**
编译后的Servlet会驻留内存,后续请求直接调用已加载的Servlet,提升响应速度
> 关键特点:`编译型动态页面`技术,结合HTML模板与Java逻辑,通过`仅一次编译,多次运行`机制实现高性能动态内容生成。