1.Jsp生命周期分为两个阶段:
(1)转换阶段:由JSP引擎实现,涉及到生成servlet。在内部,这会为JSP页面生成一个类文件以便实现servlet接口。
(2)请求阶段:根据请求规范生成响应
(3)JSP转换为servlet后,容器调用在javax.servlet.jsp.JspPage 接口中定义的servlet上的生命周期方法如下
c1:jspInit():servlet初始化时调用此参数
c2:jspService():收到对JSP页面的请求时调用此方法
c3:jspDestroy():从服务中删除servlet之前调用的方法
2.JSP指令如下
(1)page指令 定义将关于JSP页面一般设置通知Web容器的属性。可以用page命令制定不同属性。
page指令的语法 <%@ page attribute_list %>
属性名称 描述
language 定义JSP页面的脚本语言
extends 定义JSP生成的servlet扩展的父类
import 讲包类或接口的列表导入生成的servlet中
session 指定生成的servlet可不可以访问会话,如果赋值为true,将生成隐式对象,默认值为true
buffer 指定输出缓冲区的大小。如果大小设置为none,则不进行缓冲。buffer大小的默认值时8KB
autoflush 如果此属性设置为true,则自动刷新输出缓冲区。如果属性值设置为false,则缓冲区满是将引发异常,默认值为false
isThreadSafe 指定JSP页面是否线程安全
errorpage 指定将任何生成而未处理的异常指向到该URL。
isErrorPage 如果此属性值设置为true,则指定当前JSP页面为错误页面。isErrorPage属性的默认值为false
contentType 定义响应的MIME类型,contentTpye属性的默认值是text/html
(2)include指令 用于在JSP页面编译期间以相对URL的形式指定要插入的文件的名称
用法 <%@ include file = "URLName" %>
<%@ include file = "Superstroe.html" %>
(3)taglib指令 将自定义标记导入JSP页面中
taglib指令将其自身与URI相关联,以便唯一的识别一个自定义标记。他还和能将此自定义标记与JSP页面上使用的其他标记库区分开的标记前缀字符串相关联。
<%@ taglib uri = "tag_lib_URI" prefix="prefix" %>
uri :查找自定义标记的TLD文件
prefix:定义用于区分自定义标记实例的前缀字符串
3.JSP页面的脚本元素
(1) JSP生命提供了一种第一变量和方法的机制
<%!
int i = 0;
int j = 0;
%>
(2) JSP表达式用于直接将值插入到输出中。
<%= expression%>
(3)Scriptlet :JSP scriptlet 由包含在<%%>内的有效Java代码组成
4.JSP动作
JSP动作用于执行插入文件,重用bean,将用户转到其他页面及将对象实例化等任务。
使用JSP动作的语法为:<jsp:attribute>
JSP动作 描述 属性 属性描述
<jsp:usebean> 调用并查找现有的bean Id,class, scope, beanName id唯一地表示bean的实例,class识别要从中实现bean对象的类,scope定义bean的范围,beanName 定义bean的参考名
<jsp:useBean id="FA" scope="application" class="test.FindAuthor" />
id 是test.FindAutor 在jsp页面的名字
scope="application" 表明bean全局可用
class="test.FindAuthor" 表明bean是java类中 test.FindAuthor的bean
<jsp:getProperty> 检索bean的属性 name,property 定义bean的名称,定义要从中检索的属性值
<jsp:setProperty> 用于设置bean的属性 name,property,value,param 指定bean的名称,定义要设置值的上个月需变更 为bean属性定义一个显式值 定义要使用的请求参数的名称
<jsp:setProperty name="FA" property="*">
name="FA" 表明在FA这个bean中创建属性
property=“*” 表明在FA这个bean中创建原class的所有属性及方法
<jsp:forward> 用于向目标页面转发请求 page 指定目标页面的URL
<jsp:include> 在当前JSP页面中包括一个文件 page,flush 指定要包括的资源的URL。指定是否应该刷新缓冲区。flush值可以是true 或false.
<jsp:param> 定义要传送给待纳入或转发页面的参数 name,value 定义引用参数的名称,定义指定参数的值
<jsp:plugin> 执行Java applet 或 JavaBean
5.JSP自定义标记
(1)自定义标记的类型
c1:空标记:只没有任何属性或主体的自定义标记
<td:wlcome />
c2: 带属性的标记:只可以定义属性来对标记行为进行自定义的自定义标记。
<td: welcome color="blue"></td:welcome>
c3: 带主体的标记:只带有嵌套自定义标记,脚本元素,动作HTML文本及JSP指令的自定义标记。
<td: welcome>
<%=tody_date%>
</td: welcome>
c4: 嵌套标记:只一个自定义标记包含一个或多个自定义表的自定义标记的自定义标记集
<td1: ifTag condition "<%=eval>">
<td2:valueTrue>
The expression evaluates to true
</td2:valueTrue>
</td1:ifTag>
(2)创建自定义标记的步骤
c1 开发标记库处理程序
所有自定义标记都有对应的标记处理程序,即实现自定义标记的功能的Java类
javax.servlet.jsp.targext 包提供了可用于开发标记处理程序的类和接口
c2 开发TLD文件
c3 将标记库纳入JSP页面
c4 部署应用程序