分类:
2008-04-16 18:34:00
一个JSP页面由元素和模板数据组成。元素是必须由JSP容器处理的部分,而模板数据是JSP容器不处理的部分,例如,JSP页面中的HTML内容,这些内容会直接发送到客户端。在JSP2.0规范中,元素有三种类型:指令元素、脚本元素和动作元素。
指令元素主要用于为转换阶段提供整个JSP页面的相关信息,指令不会产生任何的输出到当前的输出流中。指令元素的语法形式如下:
<%@ directive { attr="value" }* %>
在起始符号<%@之后和结束符号%>之前,可以加空格,也可以不加,但是要注意的是,在起始符号中的<和%之间、%和@之间,以及结束符号中的%和>之间不能有任何的空格。指令元素有三种指令:page,include和taglib。
page指令作用于整个JSP页面,定义了许多与页面相关的属性,这些属性将被用于和JSP容器通信。page指令的语法如下:
<%@ page attr1="value1" attr2="value2" … %>
在JSP规范中,还提供了XML语法格式的page指令(参见12.8节),如下:
page指令有13个属性,如下所示:
该属性用于指定在脚本元素中使用的脚本语言,默认值是java。在JSP2.0规范中,该属性的值只能是java,以后可能会支持其他语言,例如,C、C++等。
该属性用于指定JSP页面转换后的Servlet类从哪一个类继承,属性的值是完整的限定类名。通常不需要使用这个属性,JSP容器会提供转换后的Servlet类的父类。使用该属性时要格外小心,因为这可能会限制JSP容器为提升性能所做出的努力。
该属性用于指定在脚本环境中可以使用的Java类。属性的值和Java程序中的import声明类似,该属性的值是以逗号分隔的导入列表,例如:
<%@ page import="java.util.Vector,java.io.*" %>
也可以重复设置import属性:
<%@ page import="java.util.Vector" %>
<%@ page import="java.io.*" %>
要注意的是,page指令中只有import属性可以重复设置。import 默认导入的列表是:java.lang.*,javax.servlet.*,javax.servlet.jsp.*和javax.servlet.http.*。
该属性用于指定在JSP页面中是否可以使用session对象,默认值是true。
该属性用于指定out对象(类型为JspWriter)使用的缓冲区大小,如果设置为none,将不使用缓冲区,所有的输出直接通过ServletResponse的PrintWriter对象写出。设置该属性的值只能以kb为单位,默认值是8kb。
该属性用于指定当缓冲区满的时候,缓存的输出是否应该自动刷新。如果设置为false,当缓冲区溢出的时候,一个异常将被抛出。默认值为true。
该属性用于指定对JSP页面的访问是否是线程安全的。如果设置为true,则向JSP容器表明这个页面可以同时被多个客户端请求访问。如果设置为false,则JSP容器将对转换后的Servlet类实现SingleThreadModel接口。由于SingleThreadModel接口在Servlet2.4规范中已经声明为不赞成使用,所以该属性也建议不要再使用。默认值是true。
该属性用于指定页面的相关信息,该信息可以通过调用Servlet接口的getServletInfo()方法来得到。
该属性用于指定当JSP页面发生异常时,将转向哪一个错误处理页面。要注意的是,如果一个页面通过使用该属性定义了错误页面,那么在web.xml文件中定义的任何错误页面将不会被使用。
该属性用于指定当前的JSP页面是否是另一个JSP页面的错误处理页面。默认值是false。
该属性指定用于响应的JSP页面的MIME类型和字符编码。例如:
<%@ page contentType="text/html; charset=gb2312" %>
该属性指定JSP页面使用的字符编码。如果设置了这个属性,则JSP页面的字符编码使用该属性指定的字符集,如果没有设置这个属性,则JSP页面使用contentType属性指定的字符集,如果这两个属性都没有指定,则使用字符集“ISO-8859-1”。
该属性用于定义在JSP页面中是否执行或忽略EL表达式。如果设置为true,EL表达式(关于EL表达式,请参见第16章)将被容器忽略,如果设置为flase,EL表达式将被执行。默认的值依赖于web.xml的版本,对于一个Web应用程序中的JSP页面,如果其中的web.xml文件使用Servlet2.3或之前版本的格式,则默认值是true,如果使用Servlet2.4版本的格式,则默认值是false。对应于该属性的JSP配置元素是
注意:无论将page指令放在JSP文件的哪个位置,它的作用范围都是整个JSP页面,然而,为了JSP程序的可读性,以及养成良好的编程习惯,我们应该将page指令放在JSP文件的顶部。
include指令用于在JSP页面中静态包含一个文件,该文件可以是JSP页面、HTML网页、文本文件或一段Java代码。使用了include指令的JSP页面在转换时,JSP容器会在其中插入所包含文件的文本或代码。include指令的语法如下:
<%@ include file="relativeURLspec" %>
XML语法格式的include指令如下:
file属性的值被解释为相对于当前JSP文件的URL。
例12-3是一个使用include指令的例子。
例12-3
greeting.jsp
<%@ page contentType="text/html;charset=gb2312" %>
欢迎你,现在的时间是
<%@ include file="date.jsp" %>