重拾JSP - JSP基本概念
1、JSP页面的工作原理
1)浏览器发送一个HTTP请求到服务器,服务器识别HTTP请求是一个JSP页面时,将其转发给容器,容器将其转换成Servlet的内容(Java代码)。
2)容器首先检查是否需要编译这个文件,如果这个文件没被编译过或者在上次编译后被更改过,则编译这个JSP文件生成Servlet的一个可执行类。
注解:容器是用来容纳其它组件的,这些组件包括JSP或者Servlet,完成这些组件对象的加载、实例化、方法的调用以及对象的销毁。
3)容器加载Servlet类并将该类实例化,再调用该类的init、service、destory等进行生命周期服务。
注解:类的加载机制是将.java文件编译后的Class文件加载到内存,并对数据进行校验,转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型的过程。
4)在执行期间,Servlet产生HTML的格式输出,再传递到Web服务器响应HTTP请求。
5)Web服务器响应HTTP转发静态的HTML内容到浏览器。
6)浏览器处理HTTP响应动态生成的HTML页面。
2、JSP页面和Servlet的关系
JSP经过编译后就变成了Servlet(JSP的本质就是Servlet,由于JSP代码不能被JVM识别,因此需要Web容器将JSP的代码编译成JVM能够识别的Java类)
3、JSP页面的组成
JSP页面中包含了JSP元素和Template Data两类。
JSP元素是指由Web容器直接处理的部分,Template Data指的是标记<%......%>以外的部分,例如代码中的HTML内容等。
4、JSP脚本的三种形式
1)脚本段:<% %> // 用于嵌入标准的Java代码
2)表达式:<%= %> // 用于直接输出表达式的值
3)声明:<%! %> // 用于声明JSP中的变量
5、JSP脚本、编译器指令和JSP动作的语法
1)脚本段:以分号结尾,该程序片中的变量为局部变量。
2)表达式:包含计算,转换为字符串并插入出现在JSP文件中的脚本语言表达式。该表达式必须能求值,但是不能使用一个分号来结束表达式。
3)声明:在声明中不能对变量进行赋值。
4)注释:① <!-- --> // 在客户端查看源代码时能看到的注释 ② <%-- --%> // 在客户端查看源代码时无法看到的注释
5)page指令:<%@ page ... %> // 定义页面的依赖属性,比如脚本语言、error页面、缓存需求等等
6)include指令:<%@ include ... %> // 用来定义JSP文件转译和编译时,需要嵌入的文本或代码
7)taglib指令:<%@ taglib ... %> // 引入标签库的定义,可以是自定义标签
8)JSP动作标签只有一种语法格式,它严格遵守XML标准:<jsp:action_name attribute1="value1" attribute2="value2" .../>
注解:
1)Web容器是一种服务程序,是能够支持发布web程序的软件,在服务器一个端口就有一个提供相应服务的程序,而这个程序就是处理从客户端发出的请求,例如Java中的Tomcat容器。
参考文档:
1)https://www.cnblogs.com/xuedexin/articles/5611300.html
2)https://blog.csdn.net/u013617791/article/details/81809250
3)https://www.cnblogs.com/leiqiannian/p/7797188.html
4)https://www.runoob.com/jsp/jsp-life-cycle.html