博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
jsp转化servlet流程
阅读量:7300 次
发布时间:2019-06-30

本文共 1854 字,大约阅读时间需要 6 分钟。

我们知道jsp本质上上就是servlet,过去只知道tomcat帮我们完成了jsp向servlet的转化过程,却没有深入的去研究,现在就去研究一下转化过程

1.tomcat 的的拦截

很明显,既然tomcat帮我们完成jsp向servlet的转换,必然要先拦截到该请求,通过观察tomcat的web.xml发现所有.jsp结尾的请求都会被交给jspservlet处理,jspservlet帮我们完成了转换
jsp
org.apache.jasper.servlet.JspServlet
jsp
*.jsp
*.jspx

2.转换后的jsp分析

(1) 当请求NewFile.jsp 这个jsp后会发现tomcat的work下生成了NewFile_jsp 的Java和class文件,

clipboard.png

(2)打开这个NewFile_jsp.java发现它已经被转化为servlet,并且继承了HttpJspBase这个类
public final class NewFile_jsp extends org.apache.jasper.runtime.HttpJspBase
(3)HttpJspBase这是tomcat中的类,我把romcat源码导入项目看看HttpJspBase的实现,发现它继承了HttpServlet并实现了HttpJspPage接口,代码如下:可以看到其实就是实现了servlet接口中的那几个方法。它的init destory 方法中又分别调用了继承自Httpservlet中的初始化和销毁方法和来自jsppage接口中的初始化和销毁方法(前者是容器帮我们自动初始化完成必要的环境配置,后者是用户自定义初始化),service方法是实现了Httpjsppage中的_jspService(request, response)
public abstract class HttpJspBase extends HttpServlet implements HttpJspPage{     public final void init(ServletConfig config) throws ServletException {        super.init(config);        this.jspInit();        this._jspInit();    }    public String getServletInfo() {        return Localizer.getMessage("jsp.engine.info");    }    public final void destroy() {        this.jspDestroy();        this._jspDestroy();    }    public final void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {        this._jspService(request, response);    }    ......    ......}

3.继承关系图

根据以上信息,大致能了解到jsp转化过程中的接口和类如下    javax.Servlet.Servlet
| | javax.Servlet.jspPage
(jspInit,jspDestory方法) | | javax.Servlet.HttpjspPage
(jspService方法) | | HttpJspBase

转载地址:http://defnm.baihongyu.com/

你可能感兴趣的文章
鼠标变小手的方式
查看>>
20111124
查看>>
HierarchyId 与.Net Framework 4.5.3报错
查看>>
强大的ldd
查看>>
SpringMVC知识(1)
查看>>
Xshell 常用命令
查看>>
理解JavaScript的prototype和__proto__
查看>>
Ubuntu 10.04下编译安装Bochs 2.6及问题解决
查看>>
Java学习笔记:语言基础
查看>>
gulp 入门
查看>>
php验证手机号码
查看>>
POJ Problem 1423 Big Number 【stirling公式】
查看>>
AT2377 Blue and Red Tree
查看>>
监督学习——AdaBoost元算法提高分类性能
查看>>
通过ASP.NET Ajax技术模拟实现NBA比赛文字直播功能
查看>>
[数学建模(三)]遗传算法与旅行商问题
查看>>
Linux上文件恢复工具
查看>>
关于开发环境无法运行applet
查看>>
9 完整的用户注册登录实例
查看>>
1.AJAX简介
查看>>