Servlet的缺陷:
Servlet的编码、部署和调试任务繁琐。
生成动态网页繁琐,不利于项目分工
jsp:全称叫java server page
jsp页面要被WEB容器翻译成java类,按照servlet规范,所有jsp翻译生成的类,必须实现HttpjspPage接口,而HttpjspPage是Servlet的子接口。也就意味所有jsp翻译生成类也会实现Servlet。所以,从这个意义说,jsp本质是Servlet.
jsp重在于页面显示,而servlet重在于逻辑处理。
jsp引擎:jsp引擎是web容器编写的类,负责将jsp页面翻译成java类。在web容器/conf/web.xml中进行注册。
jsp生命周期:
由jsp引擎将jsp页面翻译成java代码。
将java代码编译成class字节码文件。
加载到容器
由容器实例化成对象
初始化阶段相关的方法是jspInit()
请求到达,调用服务阶段相关的方法是_jspService()
销毁阶段相关的方法是jspDestroy()
jsp网页主要由元素(Element)和模板数据(TemplateData)两个部分组成
模板数据是jsp的静态部分
WEB容器不处理
元素则是必须经由WEB容器解释
元素都是以XML做为语法基础,并且大小写要一致
jsp脚本元素
声明:<%! %>定义jsp类的成员变量、静态变量和方法
脚本:<% %>丰富_jspService(),在脚本中定义的变量,全部是_jspService()的局部变量。
表达式:<%= %>丰富_jspService(),相当于out.print()向页面输出内容。注意,后面不能加分号。
jsp注释:
jsp注释<%-- --%> 容器不翻译,只在源代码中可见,最为安全
Html注释:<!-- --> html会通过out.print输出到客户端。客户端和服务器均可见,最不安全。
java注释:// /* */给java代码书写的注释,只在服务器端可见。
jsp隐式对象:jsp引擎翻译的jsp类中,在_jspService()中会定义九个变量,并将这些变量做初始化。由于脚本和表达式是在丰富_jspService()方法。所以可以直接使用这些变量。这些变量称为jsp的隐式对象。
jsp隐式对象有9个:
4个作用域:
pageContext:只在当前jsp页面有效
request:作用请求
session:作用于会话
application:作用于全局
2个输出:
response:响应对象
out:打印输出流
page:当前对象
config:配置对象
exception:异常对象
page指令:
contentType:设置MIME类型和编码集
pageEncoding:设置编码集,MIME类型默认为text/html;
import:导入该jsp类中所用到的类。如果需要导入多个类,中间以逗号分开。
session:默认为true。表示访问该jsp页面时,产生会话对象。
errorPage:表示当前jsp页面如果抛出了运行异常,则跳转指定出错页面。
isErrorPage:表示该jsp页面为出错处理页面。定义了exception隐式对象,接收异常对象。
<%@include file="">叫做指令包含,也叫静态包含。在编译时发生。将本身jsp和包含的jsp放在一起编译,形成一个class文件。所有两个页面不能存在同名变量,指令包含也只能包含文件。
<jsp:include page="">叫做动态包含,在请求时发生。本身jsp包含的是另一个jsp执行的结果。形成两个class文件。所有两个页面可以存在同名变量。动作包含可以包含文件,也可以包含servlet输出结果,同时,可以传递参数。
<jsp:include page="/out">
<jsp:param value="ppp" name="myid">
</jsp:include>
<jsp:forward page="relativeURL"/> 控制权交给了另一个JSP。相当于内部转发
Servlet的编码、部署和调试任务繁琐。
生成动态网页繁琐,不利于项目分工
jsp:全称叫java server page
jsp页面要被WEB容器翻译成java类,按照servlet规范,所有jsp翻译生成的类,必须实现HttpjspPage接口,而HttpjspPage是Servlet的子接口。也就意味所有jsp翻译生成类也会实现Servlet。所以,从这个意义说,jsp本质是Servlet.
jsp重在于页面显示,而servlet重在于逻辑处理。
jsp引擎:jsp引擎是web容器编写的类,负责将jsp页面翻译成java类。在web容器/conf/web.xml中进行注册。
jsp生命周期:
由jsp引擎将jsp页面翻译成java代码。
将java代码编译成class字节码文件。
加载到容器
由容器实例化成对象
初始化阶段相关的方法是jspInit()
请求到达,调用服务阶段相关的方法是_jspService()
销毁阶段相关的方法是jspDestroy()
jsp网页主要由元素(Element)和模板数据(TemplateData)两个部分组成
模板数据是jsp的静态部分
WEB容器不处理
元素则是必须经由WEB容器解释
元素都是以XML做为语法基础,并且大小写要一致
jsp脚本元素
声明:<%! %>定义jsp类的成员变量、静态变量和方法
脚本:<% %>丰富_jspService(),在脚本中定义的变量,全部是_jspService()的局部变量。
表达式:<%= %>丰富_jspService(),相当于out.print()向页面输出内容。注意,后面不能加分号。
jsp注释:
jsp注释<%-- --%> 容器不翻译,只在源代码中可见,最为安全
Html注释:<!-- --> html会通过out.print输出到客户端。客户端和服务器均可见,最不安全。
java注释:// /* */给java代码书写的注释,只在服务器端可见。
jsp隐式对象:jsp引擎翻译的jsp类中,在_jspService()中会定义九个变量,并将这些变量做初始化。由于脚本和表达式是在丰富_jspService()方法。所以可以直接使用这些变量。这些变量称为jsp的隐式对象。
jsp隐式对象有9个:
4个作用域:
pageContext:只在当前jsp页面有效
request:作用请求
session:作用于会话
application:作用于全局
2个输出:
response:响应对象
out:打印输出流
page:当前对象
config:配置对象
exception:异常对象
page指令:
contentType:设置MIME类型和编码集
pageEncoding:设置编码集,MIME类型默认为text/html;
import:导入该jsp类中所用到的类。如果需要导入多个类,中间以逗号分开。
session:默认为true。表示访问该jsp页面时,产生会话对象。
errorPage:表示当前jsp页面如果抛出了运行异常,则跳转指定出错页面。
isErrorPage:表示该jsp页面为出错处理页面。定义了exception隐式对象,接收异常对象。
<%@include file="">叫做指令包含,也叫静态包含。在编译时发生。将本身jsp和包含的jsp放在一起编译,形成一个class文件。所有两个页面不能存在同名变量,指令包含也只能包含文件。
<jsp:include page="">叫做动态包含,在请求时发生。本身jsp包含的是另一个jsp执行的结果。形成两个class文件。所有两个页面可以存在同名变量。动作包含可以包含文件,也可以包含servlet输出结果,同时,可以传递参数。
<jsp:include page="/out">
<jsp:param value="ppp" name="myid">
</jsp:include>
<jsp:forward page="relativeURL"/> 控制权交给了另一个JSP。相当于内部转发