JSP(全称:Java Server Pages):Java 服务端页面。是一种动态的网页技术,其中既可以定义 HTML、JS、CSS等静态内容,还可以定义 Java代码的动态内容,也就是 JSP = HTML + Java
,下面详细解释。
JSP 就是一个页面,那么在 JSP 中写 html
标签,我们能理解,但是为什么还可以写 Java
代码呢?
因为 JSP 本质上就是一个 Servlet。接下来我们聊聊访问jsp时的流程
- 浏览器第一次访问
hello.jsp
页面 tomcat
会将hello.jsp
转换为名为hello_jsp.java
的一个Servlet
tomcat
再将转换的servlet
编译成字节码文件hello_jsp.class
tomcat
会执行该字节码文件,向外提供服务
利用 Maven tomcat 插件运行一下项目后我们可以到项目所在磁盘目录下找 target/tomcat/work/Tomcat/localhost/jsp-demo/org/apache/jsp/
目录,而这个目录下就能看到转换后的 servlet
打开 index_jsp.java
文件,来查看里面的代码
由上面的类的继承关系可以看到继承了名为 HttpJspBase
这个类,那我们去tomcat源码中查看该类的继承关系。
apache-tomcat-8.5.68\java\org\apache\jasper\runtime
,该目录下就有HttpJspBase
类,查看该类的继承关系
可以看到该类继承了 HttpServlet
;那么 hello_jsp
这个类就间接的继承了 HttpServlet
,也就说明 index_jsp
是一个 servlet
。
继续阅读 index_jsp
类的代码,可以看到有一个名为 _jspService()
的方法,该方法就是每次访问 jsp
时自动执行的方法,和 servlet
中的 service
方法一样 。
而在 _jspService()
方法中可以看到往浏览器写标签的代码:
以前我们自己写 servlet
时,这部分代码是由我们自己来写,现在有了 jsp
后,由tomcat完成这部分功能。