1.JSP:Java Server Pages
2.使用JSP技术编写的动态页面称为JSP页面,他是在HTML语句与嵌套在其中的Java代码组成的一个普通文本文件,为了与静态的HTML页面相区别,JSP页面的扩展名必须为JSP.
3.JSP的生命周期:
第一阶段:JSP页面翻译阶段:JSP页面翻译为Servlet代码.
第二阶段:JSP页面编译阶段:将Servlet代码编译成字节码,.class文件
第三阶段:JSP页面装载阶段:Web容器装载新生成的Servlet类
第四阶段:JSP页面类实例化阶段:Web容器创建Servlet实例
第五阶段:JSP页面初始化阶段:Web容器调用Servlet示例的jspInit()方法,允许JSP页面装载资源
第六阶段:JSP页面服务阶段:容器创建一个新线程来处理这个客户的请求,servlet对象的_jspService()方法运行
第七阶段:JSP页面销毁阶段:JSP页面完成任务后,容器调用生成的Servlet对象的jspDestroy()方法,销毁装载的资源
4.JSP的语法和语义:
JSP网页主要由元素(element)和模板数据(Template Data)两个部分组成
模板数据是JSP的静态部分,它是WEB容器不会处理的部分,会直接发到客户端进行执行.
而元素则是必须经由WEB容器解释的一部分,而且大部分元素都是以XML作为语法基础,并且大小写要一致.
5.元素分为三个不同的类型:脚本元素,指令和动作
6.脚本元素:
脚本元素 | 脚本语法 |
---|---|
申明 | <%! 申明 %> |
Scriplet | <% 代码 %> |
脚本表达式 | <%= 脚本表达式> |
(1).Scriptlet**
<% java 代码 %>局部变量
(2).脚本表达式:
<%= 脚本表达式 %>
使用脚本表达式时候,注意:
>不能使用分号来作为表达式的结束符
>脚本表达式可以是常量,也可以是一个动态计算出来的结果值,甚至还把脚本表达式作为其他的JSP元素的属性值
(3).申明:
<%! 申明 %>
全局变量
7.注释:
>JSP注释:<%-- 注释内容 --%>
Web容器在吧JSP翻译成Servlet时,将跳过注释中的内容,不会再服务器端的运行,在客户端的HTML源文件也看不见
>HTML注释:
<!--注释内容-->
注释内容不会再客户端显示出来,但是可以使用"查看源代码"看见这些注释内容,但是这些注释部分可以有动态的脚本表达式,他同样会在浏览器中运行.
>Java代码注释
8.JSP指令:
指令的语法:
<%@ directive attribute1="value1" attribute2="value2" %>
>page指令为当前页面提供处理命令
页面指令的功能就是设定整个JSP页面的属性和相关功能,用于在翻译阶段与Web容器的通信
<%@ page attribute1="value1" attribute2="value2" % >
属性值 | 值 | 默认值 |
---|---|---|
language | 脚本语言名称 | "Java" |
info | 网页信息 | 无 |
contentType | MIME类型 | "text/html;charset=utf-8" |
import | 类和包 | none |
buffer | 缓冲区大小 | 8192 |
autoFlush | 布尔值 | "true" |
session | 布尔值 | "true" |
isThreadSafe | 布尔值 | "true" |
errorPage | URL | none |
isErrorPage | 布尔值 | "false" |
在JSP文件中我们可以将page指令放在任何地方,但是最好放在第一行
>include指令:把包含文件放在一起编译
表示在JSP编译时插入一个包含文本或者代码的文件,把文件中的静态地包含过去,也就是说,会把包含的页面拷贝到包含的页面中指令所在的位置,
<%@ include file="relatieURL" %>
>taglib指令
<%@ taglib uri="url" prefix="tagprefix">