《JSP技术大全》笔记
1. 三个伪指令
1.1 <%@ page%>
语法: <%@ page attribute=”value” attribute=”value” … %>
属性:
language=”java”,目前仅java
extends=”classeName”,指定当前jsp应该作为哪个超类的子类,一般不用设置
import=”importList”,引入jsp中要用到类
session=”true|false”,指定jsp页面是否需要一个session,默认true。一般不用设置
buffer=”none|size”,描述jsp采用的输出缓存模型,默认8k,一般不用设置。与aotoFlus和配合使用
aotoFlush=”true|false”
isThreadSafe=”true|false”,默认true, 一般不用设置
info=”info_text”,jsp页面的一些描述性信息,可以用servlet的getServletInfo()得到
contentType=”ctinfo”,请求应用返回一个HTTP Content-Type头标,一般为contentType=”type/subtype; charset=charset”,例如:<%@ page contentType=”text/html; charset=utf-8” %>
errorPage=”error_url”,指定如果该jsp页面出错将显示那个页面
isErrorPage=”true|false”,如果为true则声明了该页面是其它jsp页面出错后显示的页面
1.2 <%@ include%>
语法: <%@ include file=”filename” %>
说明:filename必须是相对的URL文档,即只能包含路径信息,没有协议或服务器信息。以“/”开始,被认为是相对servlet上下文根的绝对路径。否则,文件名被认为是相对于当前JSP页面的。
在JSP被容器转换成servlet前首先将filename中的文本复制到相应位置,然后再转换为servlet。如果当前JSP页面中存在多个<%@ include%>伪指令,则根据出现的前后顺序依次复制过来。
1.3 <%@ taglib%>
语法:<%@ taglib url=”tagLIbraryURL” prefix=”tagPrefix” %>
启用已经定义过的一个标签库
tagLIbraryURL:标签库描述器的url
tagPrefix:用于标识在页面后面部分使用定制标签的唯一前缀
例如:如果abc.tld定义了一个名为table的标签,那么我们可以
<%@ taglib url=”/tlds/abc.tld” prefix=”ft” %>
然后就可以用该标签<ft:table> …</ft:table>
2. 两种注释
<%-- 仅jsp可见 --%>
<!-- html中也可见 -->
3. 表达式
<%= exp%>
4. scriptliet: 多个jsp语句的集合
<% statement;[statement;…]%>
scriptliet在servlet中的service() 方法中
5. 声明
<%! statement;[statement;…]%>
声明在servlet中的service() 方法之外,注意与scriptliet区别
6. 隐含变量
request(常用)
response(常用)
pageContext
session(常用)
application
out(常用)
config
page
exception
7. 标准行为
7.1. 概念
行为是创建、修改或使用对象的高层jsp元素。行为遵守严格的xml语法:
<tagname [attr=”value” attr=”value”…]>…</tagname>
如果没有行为主体可简化为:<tagname [attr=”value” attr=”value”…] / >
7.2. 7种标准行为标签
<jsp:useBean>…< /jsp:useBean >
<jsp:setProperty … />
<jsp:getProperty … />
<jsp:include >…</jsp: include >
语法:<jsp:include page=”resourcename” flush=”true” />
说明: resourcename 路径规则同<%@ include%>
表达式语法:<jsp:include page=”<%= jspfile %>” flush=”true” />
向被调用的jsp页面传递参数:
<jsp:include page=”pageName” flush=”true”>
<jsp:parm name=”parm1Name” value=”parm1Value” />
<jsp:parm name=”parm2Name” value=”parm2Value” />
</jsp:include>
<jsp:forward>…</jsp: forward >
<jsp:param>…</jsp: param >
<jsp:plugin>…</jsp: plugin >
1.1 <%@ page%>
语法: <%@ page attribute=”value” attribute=”value” … %>
属性:
language=”java”,目前仅java
extends=”classeName”,指定当前jsp应该作为哪个超类的子类,一般不用设置
import=”importList”,引入jsp中要用到类
session=”true|false”,指定jsp页面是否需要一个session,默认true。一般不用设置
buffer=”none|size”,描述jsp采用的输出缓存模型,默认8k,一般不用设置。与aotoFlus和配合使用
aotoFlush=”true|false”
isThreadSafe=”true|false”,默认true, 一般不用设置
info=”info_text”,jsp页面的一些描述性信息,可以用servlet的getServletInfo()得到
contentType=”ctinfo”,请求应用返回一个HTTP Content-Type头标,一般为contentType=”type/subtype; charset=charset”,例如:<%@ page contentType=”text/html; charset=utf-8” %>
errorPage=”error_url”,指定如果该jsp页面出错将显示那个页面
isErrorPage=”true|false”,如果为true则声明了该页面是其它jsp页面出错后显示的页面
1.2 <%@ include%>
语法: <%@ include file=”filename” %>
说明:filename必须是相对的URL文档,即只能包含路径信息,没有协议或服务器信息。以“/”开始,被认为是相对servlet上下文根的绝对路径。否则,文件名被认为是相对于当前JSP页面的。
在JSP被容器转换成servlet前首先将filename中的文本复制到相应位置,然后再转换为servlet。如果当前JSP页面中存在多个<%@ include%>伪指令,则根据出现的前后顺序依次复制过来。
1.3 <%@ taglib%>
语法:<%@ taglib url=”tagLIbraryURL” prefix=”tagPrefix” %>
启用已经定义过的一个标签库
tagLIbraryURL:标签库描述器的url
tagPrefix:用于标识在页面后面部分使用定制标签的唯一前缀
例如:如果abc.tld定义了一个名为table的标签,那么我们可以
<%@ taglib url=”/tlds/abc.tld” prefix=”ft” %>
然后就可以用该标签<ft:table> …</ft:table>
2. 两种注释
<%-- 仅jsp可见 --%>
<!-- html中也可见 -->
3. 表达式
<%= exp%>
4. scriptliet: 多个jsp语句的集合
<% statement;[statement;…]%>
scriptliet在servlet中的service() 方法中
5. 声明
<%! statement;[statement;…]%>
声明在servlet中的service() 方法之外,注意与scriptliet区别
6. 隐含变量
request(常用)
response(常用)
pageContext
session(常用)
application
out(常用)
config
page
exception
7. 标准行为
7.1. 概念
行为是创建、修改或使用对象的高层jsp元素。行为遵守严格的xml语法:
<tagname [attr=”value” attr=”value”…]>…</tagname>
如果没有行为主体可简化为:<tagname [attr=”value” attr=”value”…] / >
7.2. 7种标准行为标签
<jsp:useBean>…< /jsp:useBean >
<jsp:setProperty … />
<jsp:getProperty … />
<jsp:include >…</jsp: include >
语法:<jsp:include page=”resourcename” flush=”true” />
说明: resourcename 路径规则同<%@ include%>
表达式语法:<jsp:include page=”<%= jspfile %>” flush=”true” />
向被调用的jsp页面传递参数:
<jsp:include page=”pageName” flush=”true”>
<jsp:parm name=”parm1Name” value=”parm1Value” />
<jsp:parm name=”parm2Name” value=”parm2Value” />
</jsp:include>
<jsp:forward>…</jsp: forward >
<jsp:param>…</jsp: param >
<jsp:plugin>…</jsp: plugin >
7.3. <jsp:include >…</jsp: include >与<%@ include%>的区别
<%@ include%>伪指令:用于在JSP源码被转换成JavaServlet源码和被编译前将静态文本复制到其中。也就是在JSP中出现<%@ include%>的地方将<%@ include%>所包含的文件内容直接拷贝到此处,以此实现将变化和不变化的代码分离。典型情况下,文本为HTML代码,但它可以是在JSP页面内显示的任何内容。
<jsp:include … />行为:使得servlet引擎调用另一URL,生成带有最初JSP页面的输出。
在构建一种思维模式的关键一点是<%@ include%>伪指令在编译时只执行一次,而<jsp:include >行为每次进行请求时都执行。<jsp:include >行为更像一个C语言的函数调用,因为在Tomcat编译后的源码中可以看见将<jsp:include >翻译为:pageContext.include(“resourcename”)。
此外还必须注意包含与被包含文件之间命名的冲突问题。
8. 标签扩展
除了以上7种标准行为的基本标签外,可以自由的扩展标签
步骤:1)定义标签
2)编写标签库描述器的接口(创建TLD入口)
3)编写标签处理器
4)在JSP页面中使用标签
9. JSP与XML
9.1. DTD(文档类型定义,Document Type Definition): 用来定义XML元素及其规则
9.2. XML解析器
1) DOM(Document Object Module) 文档对象模型
2) SAX(Simple API for XML) XML的简单API
SAX 较 DOM有很多优点
可以使用XSLT处理器和XSL样式单转换XML
<%@ include%>伪指令:用于在JSP源码被转换成JavaServlet源码和被编译前将静态文本复制到其中。也就是在JSP中出现<%@ include%>的地方将<%@ include%>所包含的文件内容直接拷贝到此处,以此实现将变化和不变化的代码分离。典型情况下,文本为HTML代码,但它可以是在JSP页面内显示的任何内容。
<jsp:include … />行为:使得servlet引擎调用另一URL,生成带有最初JSP页面的输出。
在构建一种思维模式的关键一点是<%@ include%>伪指令在编译时只执行一次,而<jsp:include >行为每次进行请求时都执行。<jsp:include >行为更像一个C语言的函数调用,因为在Tomcat编译后的源码中可以看见将<jsp:include >翻译为:pageContext.include(“resourcename”)。
此外还必须注意包含与被包含文件之间命名的冲突问题。
8. 标签扩展
除了以上7种标准行为的基本标签外,可以自由的扩展标签
步骤:1)定义标签
2)编写标签库描述器的接口(创建TLD入口)
3)编写标签处理器
4)在JSP页面中使用标签
9. JSP与XML
9.1. DTD(文档类型定义,Document Type Definition): 用来定义XML元素及其规则
9.2. XML解析器
1) DOM(Document Object Module) 文档对象模型
2) SAX(Simple API for XML) XML的简单API
SAX 较 DOM有很多优点
可以使用XSLT处理器和XSL样式单转换XML