认识JSP与JSP的简单运行原理
什么是JSP
JSP(全称为Java Server Page),是sun公司为主导创建的一种动态网页技术标准,主要的目的就是将标识逻辑从servlet中分离出来 它实现了Html语法中可以嵌入java编码的扩展(以 <%, %>形式)。JSP与Servlet一样,是在服务器端执行的。通常返回给客户端的就是一个HTML文本,因此客户端只要有浏览器就能浏览。 一般在web项目中,采用JSP+Servlet+JavaBean的技术(SSM) JSP本质上就是Servlet,JSP也是Java类,通过JSP引擎将JSP转译成Servlet 常见的集中动态网页技术:
JSP(Java Server Page) ASP(Active Server Page) PHP(Hypertext Preprocessor) 超文本预处理语言
JSP的继承结构
JSP文件转换成JAVA代码之后,它默认继承了HttpJSPBase,实现了JSPSourceDependent,和JSPSourceImports两个接口,其中HttpJSPBase又继承了HttpServlet ,也就是说,JSP本质上就是一个Servlet
JSP的简单运行原理
客户端发出Request请求 JSP Container 将JSP转译成Servlet的源代码.java文件 将产生的Servlet源代码经过编译后.生成字节码.class文件 将.class字节码文件加载进入内存并执行,其实就是在运行一个Servlet 通过Response对象将数据响应给浏览器
JSP的加载引擎
通过查看tomcat web.xml我们发现,这里默认配置了一个JSP的加载引擎—JSPServlet
< servlet>
< servlet-name> jsp</ servlet-name>
< servlet-class> org.apache.jasper.servlet.JspServlet</ servlet-class>
< init-param>
< param-name> fork</ param-name>
< param-value> false</ param-value>
</ init-param>
< init-param>
< param-name> xpoweredBy</ param-name>
< param-value> false</ param-value>
</ init-param>
< load-on-startup> 3</ load-on-startup>
</ servlet>
< servlet-mapping>
< servlet-name> jsp</ servlet-name>
< url-pattern> *.jsp</ url-pattern>
< url-pattern> *.jspx</ url-pattern>
</ servlet-mapping>
通过上面的代码可以发现,浏览器在请求JSP的时候都会被JSP加载引擎匹配
转译JSP页面:
将JSP页面翻译成一个Servlet,这个Servlet是一个java文件,同时也是一个完整的java程序
编译JSP对应java文件:
JSP引擎调用java编译器对这个Servlet进行编译,得到可执行文件class
请求处理阶段:
JSP引擎调用java虚拟机来解释执行class文件,生成向客户端发送的应答,然后发送给客户端