JSP:java server page服务器脚本语言。(脚本===插件),是一种在html代码中,嵌入java代码的方式。
解决servlet产生动态页面缺陷而产生的一门技术。
js:客户端脚本语言
jsp引擎:在web容器中,需要提供一个jsp引擎,将客户端请求的jsp页面翻译成java类。
jsp和servlet的区别:
按照servlet规范,由jsp引擎所翻译的java类,必须实现HttpJspPage接口。而HttpJspPage接口是Servlet的子接口,所以,jsp引擎所翻译的
Java类,同样满足servlet规范。从这个意义上说,jsp本质是servlet,拥有和servlet类似的生命周期。只不过jsp重在显示页面,而servlet
重在逻辑处理。
JSP生命周期:(3--7和servlet生命周期流程一样)
1、由JSP引擎将JSP页面翻译成JAVA代码(aa.jsp-->aa_jsp.java)
2、将JAVA代码编译成class字节码文件(aa_jsp.java-->aa_jsp.class)
3、加载到容器
4、由容器实例化成对象
5、初始化阶段相关的方法是jspInit()
6、请求到达,调用服务阶段相关的方法是_jspService()
7、销毁阶段相关的方法是jspDestroy()
JSP网页主要由元素(Element)和模板数据(Template Data)两个部分组成 :
模板数据是JSP的静态部分,WEB容器不处理 ;元素则是必须经由WEB容器解释
jsp脚本元素有三种:
声明:<%! %>定义jsp类的成员变量、静态变量和方法。
脚本:<% %>丰富_jspService()方法,在脚本中定义的变量都是_jspService()的局部变量。
表达式:<%= %>也是在丰富_jspService()方法,相当于打印语句,向客户端输出内容,表达式后不能加分号
jsp的注释:
jsp注释 <%-- --%>对于jsp注释,web容器是不翻译的,jsp注释只在源代码中可见,最为安全,可以注释掉java代码
html注释 <!-- -->容器可以识别,不能注释java代码。web容器会以out.println()方式输出到客户端,客户端和服务器都可见,最不安全。
java注释 只在服务器端可见,客户端不可见。
jsp隐式对象:
jsp引擎在翻译jsp页面时,会在_jspService()方法中,传入由web容器封装的请求、响应对象,同时在_jspService()方法开始时,定义了九个变量
,并且完成了这些变量的初始化。开发者所写的脚本,表达式,是在丰富_jspService()方法,所以,可以直接使用这些变量,而不用定义,
这些变量成为jsp的隐式对象。
jsp隐式对象有九个:(无需声明,可以直接使用)
四个作用域:
pageContext:作用于页面(只在jsp页面有效)===ServletContext
request:作用于请求(请求范围内有效)
session:作用于会话(一次会话有效)
application:作用于全局(在全局范围有效)
两个输出:
response:响应对象
out:打印输出流
page:当前jsp类对象(this)
config:配置对象
exception:异常对象
提供整个JSP页面的相关信息<%@ %>,用于JSP页面与容器之间的通信
在JSP中,有三种类型的指令:
page指令为当前页面提供处理指令
include指令用于把另一个文件包含在JSP中
taglib指令指定如何包含和访问自定义标签库
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
page指令常见的属性:contentType:设置响应信息的MIME类型和编码集====pageEncoding:设置响应信息的编码集,MIME类型默认为text/html
import:在jsp类中,导入其他包中的类,多个包用逗号分开。
session:客户端访问jsp时,是否创建session对象,默认为true
exception:当errorPage出现运行异常时,才会产生该异常对象。
errorPage:当前jsp中抛出了运行异常,跳转到errorPage属性所指定的页面。
isErrorPage:当该属性设置为true时,表示当前jsp为异常处理页面。在当前jsp类中,会定义exception隐式对象,接收从出错页面中传递过来的异对象。
在web.xml中,可以定义:(在相应信息为指定状态码时,跳转到指定页面)
<error-page>
<error-code>404</error-code>
<location>/noFind.jsp</location>
</error-page>