JSP学习总结(三)
四、为什么jsp就是servlet?
打开Tomcat服务器的work目录,找到jsp文件翻译的java文件。类声明如下
package org.apache.jsp; import javax.servlet.*; import javax.servlet.http.*; import javax.servlet.jsp.*; import java.text.SimpleDateFormat; import java.util.*; public final class _01_demo_jsp extends org.apache.jasper.runtime.HttpJspBase implements org.apache.jasper.runtime.JspSourceDependent { private static final javax.servlet.jsp.JspFactory _jspxFactory = javax.servlet.jsp.JspFactory.getDefaultFactory(); private static java.util.Map<java.lang.String,java.lang.Long> _jspx_dependants; private volatile javax.el.ExpressionFactory _el_expressionfactory; private volatile org.apache.tomcat.InstanceManager _jsp_instancemanager; public java.util.Map<java.lang.String,java.lang.Long> getDependants() { return _jspx_dependants; } ....
}
可以看到 _01_demo_jsp类继承自org.apache.jasper.runtime.HttpJspBase类。此时,我们可以打开Tomcat目录下的lib目录,找到jasper.jar包,使用解压软件打开,找到rumtime下的HttpJspBase.class文件。如下图:
将其提取出来,并拷贝到eclipse项目中。然后在eclipse中双击该class文件,可以获取如下信息:
org.apache.jasper.runtime.HttpJspBase类继承javax.servlet.http.HttpServlet类。由此可知,jsp本质上就是一个servlet程序。