JSP的执行过程及生命周期

一,概述

前段时间决定转战JavaWeb的我,现在终于可以修炼JSP了.从决定开始走JavaWeb方向,就先去重温了Html CSS JavaScript,然后学习Servlet编程,昨天进入了JSP的学习.接近两天的JSP学习,灌输了很多技术点,难免有点消化不良.所以还是决定慢下来一点,整理整理一些常用的知识点,消化一下.消化的最好方式,当然就是写博客了.好了,进入正题.

二,JSP引入

1)JSP作用

jsp是用Java语言(结合html等)开发动态网页的技术,而实际上,jsp就是servlet(后面提).

2)JSP特点

a,jsp的运行必须交给tomcat服务器.tomcat的work目录存放jsp运行时的临时文件.

b,jsp页面既可以写html代码,也可以写Java代码,只需满足一定语法即可.

三,JSP的执行过程

通过服务器访问一个jsp页面(比如:http://localhost:8080/day13_jsp/index.jsp),这个jsp页面是怎样显示出来的呢?

第一步:访问这个index.jsp页面,tomcat扫描的这个jsp文件,在%tomcat%work把jsp文件翻译成java源文件,即index.jsp-->index_jsp.java,这个过程就是翻译.(翻译过程)

第二步:tomcat服务器把刚刚翻译得到的java源文件编译成class字节码文件,即index_jsp.java-->index_jsp.class.(编译过程)

第三步:tomcat构造index_jsp类对象.(构造对象)

第四步:tomcat服务器调用index_jsp类里面的方法,输出内容到浏览器.(显示内容)

当我们第一次访问一个jsp时,会走这四个步骤;当我们是第n次(n>=2)访问同一个jsp时,只走第四个步骤.另外需要注意的是,jsp文件修改了或是jsp的临时文件删除了,就要重新走翻译和编译的过程.

4,为什么JSP是一个Servlet呢?

去tomcat/work目录的相应项目目录下,找到翻译的index_jsp.java文件,发现它继承了org.apache.jasper.runtime.HttpJspBase,HttpJspBase是tomcat的lib目录下jar包中的一个类.

public final class index_jsp extends org.apache.jasper.runtime.HttpJspBase
    implements org.apache.jasper.runtime.JspSourceDependent
去tomcat找到HttpJspBase,发现它继承了HttpServlet.

public abstract class org.apache.jasper.runtime.HttpJspBase extends javax.servlet.http.HttpServlet implements javax.servlet.jsp.HttpJspPage 

所以,可以发现jsp间接继承了HttpServlet,所以jsp就是servlet.servlet的技术都可以用到jsp中,但jsp的技术不全能用到servlet中.

5,Servlet和Jsp生命周期的比较

Servlet的生命周期:

1)构造方法(第1次访问)

2)init方法(第1次访问)

3)service方法

4)destroy方法

Jsp的生命周期(翻看源码就可以发现jsp的方法和servlet很像,这不废话吗,呵呵)

1)翻译: jsp->java文件

2)编译: java文件->class文件(servlet程序)

3)构造方法(第1次访问)

4)init方法(第1次访问):_jspInit()

5)service方法:_jspService()

6)destroy方法:_jspDestroy()

6,总结

其实没什么好总结的,就想告诉自己,下一篇博客要写jsp的基本语法及9大内置对象相关用途.

你可能感兴趣的:(JavaWeb)