JSP学习(三) --------- JSP文件运行原理

目录

  • 一、Http服务器调用JSP文件步骤
  • 二、如何将Servlet中doGet/doPost方法执行结果交给JSP文件输出


一、Http服务器调用JSP文件步骤

  1. Tomcat根据JSP规范,将被访问的JSP文件编辑为一个Java文件。这个Java文件是Servlet接口实现类
  2. Tomcat根据JSP规范,调用JVM将这个java文件[编译]为class类型
  3. Tomcat根据JSP规范负责生成这个class文件的实例对象。这个实例对象是一个Servelt接口实例对象
  4. Tomcat根据JSP规范通过实例对象调用class文件中_jspService方法
  5. Service方法在运行时负责将JSP文件中书写内容写入到响应体中

注:

  • HttpJspBase类
    JSP学习(三) --------- JSP文件运行原理_第1张图片
    Tomcat将JSP文件编辑后生成的Java文件,继承于HttpJspBase。通过Apache官方文档查看,其是HttpServlet的子类。所以Tomcat将JSP编辑为的文件为一个Servlet接口实现类。

  • Http服务器编辑与编译JSP文件位置:

C:\Users\[登录windows系统用户角色名]\.IntelliJIdea2018.3\system\tomcat\[网站工作间]\work\Catalina\localhost\【网站别名】\org\apache\jsp
  • __jspService方法

作用:

  • 当一个JSP文件被访问时,Tomcat调用的并不是当前JSP文件。而是JSP文件对应的Servlet接口实现类中_jspService方法。
  • _jspService方法负责将开发人员在JSP文件书写的所有内容写入到响应体中。

内部结构:

  • 判断当前请求方式。Jsp文件可以接收的请求方式有POST,GET,HEAD
  • 声明局部变量。这些局部变量都可以在JSP文件开发时直接使用
  • 输出部分。这部分执行时将JSP文件内容通过输出流写入到响应体

二、如何将Servlet中doGet/doPost方法执行结果交给JSP文件输出

  • JSP文件被访问时,并不是JSP文件在执行。而是对应的Servlet在执行
  • 自定义Serlvet接口实现类与JSP文件之间调用关系,等同于两个Servlet之间调用关系
  • 自定义Servelt接口实现类与JSP文件之间可以通过重定向方案或则请求转发方案进行。调用考虑到运行效率问题,一般采用请求转发的方式
  • 自定义Servlet接口实现类可以通过请求作用域对象将共享数据交给JSP来输出到响应体

你可能感兴趣的:(JSP,tomcat,java,intellij-idea)