zoukankan      html  css  js  c++  java
  • JSP运行原理以及执行过程源码分析

    我们在开发Java Web的过程中,可能有过这样的疑问,当我们编写jsp页面时,不用引用不用创建就可以使用request、session、application对象,当使用浏览器访问JSP页面时,查看页面源码发现Java代码都消失了,这都是为什么呢。

    首先我们看下面的流程图,了解JSP在WEB容器中的变化过程:而上面我们的所有疑问都在下面的第2步可以找到答案。

             第2步中,JSP文件转换为Servlet类文件,转换后的文件结构如下图所示(其中HttpJspBase是HttpServlet的一个子类)

     

             主要的转换动作是在方法_jspService()中实现的

    如下的Servlet类的代码截图可以看到,其中插入了session、application等对象的初始化,可以看出这几个对象都是通过页面级别的对象pageContext获取到的。

             页面中的java代码去哪儿了呢,转换过程中,HTML页面元素内容可以理解为通过out.write()直接输出给前端页面,java代码(<%%>包含的内容)直接去掉<%%>写到类中执行。部分代码截图如下。

             红色框中的内容就是我们在JSP页面中获取项目路径的过程,在转化中直接去除<%%>后放到类代码中,而其余的部分可以理解为直接out.write()输出给前端页面。

             至此我们就解释了本文开始时的疑问,这些源码内容都可以在WEB容器中查到,以tomcat为例,转换后的文件存储在apache-tomcat-*workCatalina[项目IP][项目名称 ]orgapachejsp中

  • 相关阅读:
    《信息学奥赛一本通》提高版题解索引
    QUERY [ 单调栈 ]
    [ 模拟退火 ] bzoj3860 平衡点
    [ 考试 ] 7.12
    离线和简单分治
    [ 校内OJ ] NOIP2019模拟赛(九)
    校内模拟考 (一)
    Codeforces 808E
    学习笔记—点分治
    [ 线段树+哈希 ] 反等差数列
  • 原文地址:https://www.cnblogs.com/lxl57610/p/7452935.html
Copyright © 2011-2022 走看看