指令元素(directive elements )
1 . page 指令
page 指令作用于整个 JSP 页面,定义了许多与页面相关的属性,这些属性将被用于和 JSP 容器通信。
page 指令的语法如下:
<%@ page attr1="value1" attr2="value2" … %>
page 指令有 13 个属性,如下所示:
language="scriptingLanguage" 默认值是 java
extends="className"
import="importList"
session="true|false"
buffer="none|sizekb"
autoFlush="true|false"
isThreadSafe="true|false"
info="info_text"
errorPage="error_url"
isErrorPage="true|false"
contentType="ctinfo"
pageEncoding="peinfo"
isELIgnored="true|false"
2 . include 指令
include 指令用于在 JSP 页面中静态包含一个文件,该文件可以是 JSP 页面、 HTML 网页、文本文件或一段 Java代码。使用了 include 指令的 JSP 页面在转换时, JSP 容器会在其中插入所包含文件的文本或代码。 include 指令的语法如下:
<%@ include file="relativeURLspec" %>
XML 语法格式的 include 指令如下:
<jsp:directive.include file="relativeURLspec"/>
file 属性的值被解释为相对于当前 JSP 文件的 URL 。
注意:在被包含的文件中最好不要使 用 <html> 、 </html> 、 <body> 、 </body> 等标签,因为这会影响到原 JSP 文件中同样的标签,有时会导致错误。另外,因为原文件和被包含的文件可以互相访问彼此定义的变量和方法,所以在包含文件时要格外小心,避免在被包含的文件中定义 了同名的变量和方法,而导致转换时出错;或者不小心修改了另外文件中的变量值,而导致出现不可预料的结果。
3 . taglib 指令
ablib 指令允许页面使用用户定制的标签。 tablib 指令的语法如下:
<%@ taglib (uri="tagLibraryURI" | tagdir="tagDir") prefix="tagPrefix" %>
XML 语法格式的 taglib 指令如下:
<jsp:directive.tablib (uri="tagLibraryURI" | tagdir="tagDir") prefix="tagPrefix"/>
taglib 指令有三个属性:
uri
tagdir
prefix
脚本元素(scripting elements )
脚本元素包括三个部分:声明、脚本段和表达式。 JSP2.0 增加了 EL 表达式(参见第 16 章),作为脚本元素的另一个选择。声明脚本元素用于声明在其他脚本元素中可以使用的变量和方法,脚本段是一段 Java 代码,用于描述在对请求的响应中要执行的动作,表达式脚本元素是 Java 语言中完整的表达式,在响应请求时被计算,计算的结果将被转换为字符串,插入到输出流中。
声明
<%! declaration(s) %>
XML 语法格式的声明如下:
<jsp:declaration> declaration(s) </jsp:declaration>
在声明变量的时候要注意,不要忘了变量名后面的分号( ; ),声明只在当前的 JSP 页面中有效。
脚本段( scriptlets )
<% scriptlet %>
XML 语法格式的脚本段如下:
<jsp:scriptlet> scriptlet </jsp:scriptlet>
表达式( expressions )
<%= expression %>
XML 语法格式的表达式如下:
<jsp:expression> expression </jsp:expression>
注意,在书写表达式的时候,一定不要在表达式后面添加任何的标点符号
动作元素(action elements )
动作元素为请求处理阶段提供信息。动作元素遵循 XML 元素的语法,有一个包含元素名的开始标签,可以有属性、可选的内容、 与开始标签匹配的结束标签。
JSP2.0 规范中定义了 20 个标准的动作元素。
注意: include 指令的 file 属性所给出的路径是相对于当前文件的, 而 <jsp:include> 动作的 page 属性所给出的路径是相对于当前页面的,要理解相对于当前文件和相对 于当前页面的区别,就需要结合 include 指令和<jsp:include> 动作对被包含资源的不同处理方式 来考虑。
当采用 include 指令包含资源时,相对路径的解析在转换期间发生(相对于当前文件的路径来 找到资源),资源的内容(文本或代码)在 include 指令的位置处被包含进来,成为一个整体,被转换为 Servlet 源文 件。当采用<jsp:include> 动作包含资源时,相对路径的解析在请求处理期间发生(相对于当前页面的路径来找到资 源),当前页面和被包含的资源是两个独立的个体,当前页面将请求发送给被包含的资源,被包含资源对请求处理的结果将作为当前页面对请求响应的一部分发送到 客户端。