全称:java server page
JS页面要被web容器翻译成java类,按照servlet规范,所有jsp翻译生成的类必须实现HttpJspPage接口,而HttpJspPage接口是servlet的子接口,意味着所有jsp翻译生成的类同样也实现servlet。所以,从这个意义上说,jsp本质上也是servlet,jsp重在于页面显示,servlet重在于逻辑处理
JSP引擎:
Jsp引擎是web容器编写的类,负责将jsp页面翻译成java类,在web容器下的/conf/web.Xml中注册
Jsp生命周期:
1. 由jsp引擎将jsp页面翻译成java代码;
2. 将java代码翻译成class字节码文件;
3. 加载到容器;
4. 由容器实例化对象;
5. 初始化阶段相关的方法是jspInit;
6. 请求到达,调用服务阶段相关的方法是_jspService();
7. 销毁阶段的相关方法是jspDestroy();
Jsp的语法和意义:
Jsp网页主要由元素和摸板数据组成
1.模板数据是jsp的静态部分
2.Web容器不处理
3.元素则是必须经由web容器解释
4.元素都是以xml做语法基础,并且大小写一致
Web容器不支持的两种语法:
1. 普通格式和XML兼容格式
2. 普通jsp语法是设计给开发者使用的
3. XML兼容jsp语法是设计用来容易被开发工具使用的
Jsp的脚本元素:
1. 声明:<%! %>定义jsp类的成员变量,静态变量和方法
2. 脚本:<% %>丰富_jspService(),在脚本中定义的变量,全部是_jspService()的局部变量;
3. 表达式:<%= “aaa” %>丰富_jspservice方法,相当于out.print()向页面输出内容;表达式后面不能加;
Jsp注释:
1. jsp注释:<%-- 这里是jsp注释 --%>容器不翻译,只在源代码中可见,最为安全;
2. html注释:<!—html注释-- >不安全,服务器会将注释输出到客户端,客户端和服务器均可见,最不安全;
3. 注释://这里是java注释;/* 这里是java注释*/ 给java代码书写的注释,只在服务器端可见
Jsp的隐式对象:jps引擎翻译的jsp类中,在_jspService()中会定义九个变量,并将这些变量初始化。由于脚本和表达式是在丰富_jspService()方法,所以可以直接使用这些变量。这些变量称为jsp的隐式对象;
Jsp的隐式对象有九个:
四个作用域:
pageContext:只在当前jsp页面有效;
request:作用于请求,在一次对话范围内有效
session:作用于会话
application:作用于全局
两个输出:
Response:响应对象
Out:打印的输出流
其他三个隐式对象:
Page:当前对象
Config:配置对象
Exception:异常对象
jsp指令:
contentType:设置MIME类型和编码集
pageEncoding 设置编码集 MIME类型默认是text/html;
import="java.util.Date,java.sql.*";导入jsp类中所需要的类,如果需要导入多个类,中间用 ,分隔开
session :访问该页面时是否产生会话对象,默认为true
errorPage表示当前jsp页面如果跑出了运行异常,则跳转到指定的页面
isErrorPage:表示该jsp页面为出错处理页面。定义了exception隐式对象,接收异常对象
<%@include file=”my.jsp”%>叫做指令包含,也称静态包含。在编译时发生。将本身jsp和包含的jsp放在一起编译,形成一个class文件,所以两个人间不能存在同名变量,指令包含也只能包含文件。
<jsp:includepage="my.jsp"></jsp:include>叫做动作包含,在请求时发生。本身jsp包含的是另一个jsp执行的结果。形成两个class文件。所以两个页面可以存在同名变量。动作包含可以包含文件,也可以包含servlet输出结果。同时可以传递参数
<jsp:includepage=”/out”>
<jsp:param value=”pppp”name=”myid”/>
</jsp:include> 传递参数
<JSP:forward page=”reletiveURL”/>内部转发至某个页面