美文网首页程序员之家
JSP运行原理及运行过程

JSP运行原理及运行过程

作者: cb9841112785 | 来源:发表于2018-06-28 16:22 被阅读36次

学习J2EE时,初步了解了JSP,写过一篇小的总结:J2EE-JSP,当时还不是很了解它的运行机制。

学习DRP时,再次接触了JSP,在原来基础上有了更深的了解,了解了它的执行原理

1,JSP的运行原理

(1)WEB容器JSP页面的访问请求时,它将把该访问请求交给JSP引擎去处理。Tomcat中的JSP引擎就是一个Servlet程序,它负责解释和执行JSP页面。

(2)每个JSP页面在第一次被访问时,JSP引擎先将它翻译成一个Servlet源程序,接着再把这个Servlet源程序编译成Servlet的class类文件,然后再由WEB容器像调用普通Servlet程序一样的方式来装载和解释执行这个由JSP页面翻译成的Servlet程序。

(3)Tomcat 5把为JSP页面创建的Servlet源文件和class类文件放置在“apache-tomcat-5.5.26\work\Catalina\localhost\<应用程序名>\”目录中,Tomcat将JSP页面翻译成的Servlet的包名为org.apache.jsp(即:apache-tomcat-5.5.26\work\Catalina\localhost\org\apache\jsp\文件下)

例子:

HelloJSP.jsp:(文件目录:D:\apache-tomcat-5.5.26\webapps\test_jsp\HelloJSP.jsp)

<%@pagelanguage="java"import="java.util.*"pageEncoding="gb2312"%>

          简单JSP页面示例

这是一个简单的 JSP页面示例——HelloJSP

HelloJSP.jsp页面被请求时,Web服务器中JSP编译器会编译生成对应的Java文件,如下:

HelloJSP_jsp.java:(文件目录:D:\apache-tomcat-5.5.26\work\Catalina\localhost\test_jsp\org\apache\jsp\HelloJSP_jsp.java)

packageorg.apache.jsp;

import javax.servlet.*;

import javax.servlet.http.*;

import javax.servlet.jsp.*;

import java.util.*;

public final class HelloJSP_jsp extendsorg.apache.jasper.runtime.HttpJspBase

    implementsorg.apache.jasper.runtime.JspSourceDependent {

private static java.util.List _jspx_dependants;

public Object getDependants() {

    return _jspx_dependants;

  }

public void _jspService(HttpServletRequest request,HttpServletResponse response)

        throws java.io.IOException,ServletException {

JspFactory _jspxFactory = null;

    PageContext pageContext =null;

    HttpSession session =null;

    ServletContext application =null;

    ServletConfig config =null;

    JspWriter out = null;

    Object page = this;

    JspWriter _jspx_out =null;

    PageContext _jspx_page_context =null;

try {

      _jspxFactory =JspFactory.getDefaultFactory();

    response.setContentType("text/html;charset=gb2312");

      pageContext =_jspxFactory.getPageContext(this, request, response,

                            null,true, 8192, true);

      _jspx_page_context =pageContext;

      application =pageContext.getServletContext();

      config =pageContext.getServletConfig();

      session =pageContext.getSession();

      out = pageContext.getOut();

      _jspx_out = out;

out.write("\r\n");

    out.write("\r\n");

    out.write("\t\r\n");

      out.write("  \t简单JSP页面示例\r\n");

    out.write("\t\r\n");

    out.write("\r\n");

      out.write("\t这是一个简单的JSP页面示例――HelloJSP
\r\n");

      out.write("\t\r\n");

    out.write("\r\n");

    } catch (Throwable t) {

      if (!(t instanceof SkipPageException)){

        out = _jspx_out;

        if (out != null &&out.getBufferSize() != 0)

          out.clearBuffer();

        if (_jspx_page_context != null)_jspx_page_context.handlePageException(t);

      }

    } finally {

      if (_jspxFactory != null)_jspxFactory.releasePageContext(_jspx_page_context);

    }

  }

}

上面这段代码就是HelloJSP.jsp编译生成的Java代码,它的路径(我的电脑)为:D:\apache-tomcat-5.5.26\work\Catalina\localhost\test_jsp\org\apache\jsp中(其中:test_jsp为我的项目名称)。在这个目录下会有两个对应的文件,一个是class文件一个是java

文件如下:

2,JSP的执行过程

JSP的执行过程主要可以分为以下几点:

1)客户端发出请求。

2)Web容器将JSP转译成Servlet源代码。

3)Web容器将产生的源代码进行编译。

4)Web容器加载编译后的代码并执行。

5)把执行结果响应至客户端。

3,总结

JSP执行过程:

1)首先,客户端发出请求(request ),请求访问JSP网页

2)接着,JSP Container将要访问的.JSP文件 转译成Servlet的源代码(.java文件)

3)然后,将产生的Servlet的源代码(.java文件)经过编译,生成.class文件,并加载到内存执行

4)最后把结果响应(response )给客户端

  执行JSP网页文件时,需要经过两个时期:转译时期(TranslationTime)和请求时期(RequestTime)。

  转译时期:JSP转译成Servlet类(.class文件)。

  请求时期:Servlet类(.class文件)执行后,响应结果至客户端。

  转译期间主要做了两件事情:

  (1)将JSP网页转译为Servlet源代码(.java),此段称为转译时期(Translation time);

  (2)将Servlet源代码(.java)编译成Servlet类(.class),此阶段称为编译时期(Compilation time)。

其实,JSP就是一个Servlet。

相关文章

  • JSP运行原理及运行过程

    学习J2EE时,初步了解了JSP,写过一篇小的总结:J2EE-JSP,当时还不是很了解它的运行机制。 学习DRP时...

  • JSP运行原理

    1.WEB容器(Servlet引擎)接收到以.jsp为扩展名的URL的访问请求时,它将把该访问请求交给JSP引擎去...

  • JSP运行原理

    JSP运行原理: 1.当服务启动,第一次请求index.jsp时,index.jsp页面被翻译成index_jsp...

  • 1.jsp的概念

    1.Jsp的概念 2.Jsp的作用 3.Jsp的运行 4.Jsp运行过程 5.Jsp开发的疑问 6.Jsp语法 6...

  • JSP与Servlet

    JSP/Servlet 工作原理 Servlet Servlet 没有 main 方法,不能够独立的运行,它的运行...

  • Spark物理图-运行过程

    1、运行过程 2、运行原理

  • Jsp

    JSP脚本和运行原理 JSP指令 JSP内置/隐式对象 JSP 标签 EL表达式和JSTL标签库使用

  • jsp

    jsp就是:Java Server Page,在html页面中编写Java代码的页面 运行原理:jsp文件继承Ht...

  • jsp笔记3jsp运行原理

    jsp第一次访问是会被翻译成servlet, 所以第一次访问通常会比较慢,但第二次访问,jsp引擎如果发现jsp没...

  • javaweb学习总结(五)jsp的九个内置对象

    一、JSP运行原理 每个JSP 页面在第一次被访问时,WEB容器都会把请求交给JSP引擎(即一个Java程序)去处...

网友评论

    本文标题:JSP运行原理及运行过程

    本文链接:https://www.haomeiwen.com/subject/qyzgyftx.html