重拾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

原文地址:https://www.cnblogs.com/GjqDream/p/11545153.html