Page指令
Page指令向容器提供与当前页面相关的指令说明。可以在JSP页面的任何地方使用Page指令。按照惯例,通常写在JSP文件的开头。
Page指令的基础语法:
等价的XML语法如下:
可以将其设为“none”来指定无缓冲,servlet输出将会直接写入response对象,或者以KB为单位设置缓冲的大小。
指定servlet将输出直接写入response对象:
指定servlet将输出写入一个8KB大小的缓冲区中:
默认值为true,说明自动缓冲刷新,若为false则抛出一个异常。
接下来的语法指定servlet在输出缓冲满时抛出一个异常:
接下来的语法指定servlet在缓冲满时刷新缓冲区:
通常,buffer属性和autoFlush属性成对使用:
如果想使用XML,使用以下语法来设置:
如果想让浏览器将页面渲染为HTML,则可以这样设置:
如果想设置为Word文档类型,可以这样写:
您也可以知道响应的字符编码集。举例来说,如果您想要指定返回的结果页面使用的是 ISO Latin 1,则可以这样设置:
接下来的指令在抛出一个未捕获的异常时将会显示MyErrorPage.jsp页面:
举例来说,handleError.jsp将isErrorPage输出设为了true,因为它是处理错误用的:
比如,接下来的指令告诉JSP翻译器产生一个扩展了SomePackage.SomeClass的servlet:
比如,要导入java.sql.*,可以像这样来写:
要导入多个包,就使用逗号分开:
默认情况下,容器会自动导入java.lang.*,javax.servlet.jsp.*,javax.servlet.*,javax.servlet.http.*。
接下来的语法将isThreadSafe属性设置为false:
比如,因为您经常使用Java来作为脚本语言,则language属性就要设置为:
接下来的指令允许JSP页面使用所有的session对象方法,比如session.getCreationTime() o或session.getLastAccessTime():
默认值为true,表明EL表达式${...},以JSP规范口述的形式被评估。若为false,则EL表达式会被当成静态文本。
接下来的语法设置表达式不被评估:
默认值为true,表明可以使用脚本小程序,表达式,声明。如果设置成false,则在使用脚本小程序,EL表达式或声明时将会在翻译阶段报错。
如果想要限制使用脚本小程序,EL,或声明,可以这样设置:
Page指令的基础语法:
<%@ page attribute="value" %>
等价的XML语法如下:
<jsp:directive.page attribute="value" />
属性
下表列出了与Page指令相关的属性:属性 | 目的 |
---|---|
buffer | 指定out对象使用缓冲区的大小 |
autoFlush | 控制out对象的 缓存区 |
contentType | 指定当前JSP页面的MIME类型和字符编码 |
errorPage | 指定当JSP页面发生异常时需要转向的错误处理页面 |
isErrorPage | 指定当前页面是否可以作为另一个JSP页面的错误处理页面 |
extends | 指定servlet从哪一个类继承 |
import | 导入要使用的Java类 |
info | 定义JSP页面的描述信息 |
isThreadSafe | 指定对JSP页面的访问是否为线程安全 |
language | 定义JSP页面所用的脚本语言,默认是Java |
session | 指定JSP页面是否使用session |
isELIgnored | 指定是否执行EL表达式 |
isScriptingEnabled | 指定脚本元素是否可用 |
buffer属性
buffer属性指明服务器输出response对象的缓存特性。可以将其设为“none”来指定无缓冲,servlet输出将会直接写入response对象,或者以KB为单位设置缓冲的大小。
指定servlet将输出直接写入response对象:
<%@ page buffer="none" %>
指定servlet将输出写入一个8KB大小的缓冲区中:
<%@ page buffer="8kb" %>
autoFlush属性
autoFlush属性指明缓冲区满时是否要自动刷新,或者当缓冲溢出时是否需要抛出一个异常。默认值为true,说明自动缓冲刷新,若为false则抛出一个异常。
接下来的语法指定servlet在输出缓冲满时抛出一个异常:
<%@ page autoFlush="false" %>
接下来的语法指定servlet在缓冲满时刷新缓冲区:
<%@ page autoFlush="true" %>
通常,buffer属性和autoFlush属性成对使用:
<%@ page buffer="16kb" autoflush="true" %>
contentType属性
contentType属性设置JSP页面的字符编码方案。默认的contentType值为text/html,也就是标准HTML页面。如果想使用XML,使用以下语法来设置:
<%@ page contentType="text/xml" %>
如果想让浏览器将页面渲染为HTML,则可以这样设置:
<%@ page contentType="text/html" %>
如果想设置为Word文档类型,可以这样写:
<%@ page contentType="application/msword" %>
您也可以知道响应的字符编码集。举例来说,如果您想要指定返回的结果页面使用的是 ISO Latin 1,则可以这样设置:
<%@ page contentType="text/html:charset=ISO-8859-1" %>
errorPage属性
errorPage属性告诉JSP引擎如果当前页面运行出错需要显示的另一个页面。errorPage属性的值通常为URL。接下来的指令在抛出一个未捕获的异常时将会显示MyErrorPage.jsp页面:
<%@ page errorPage="MyErrorPage.jsp" %>
isErrorPage属性
isErrorPage属性指明当前页面是否是错误页面。isErrorPage属性的默认值是false。举例来说,handleError.jsp将isErrorPage输出设为了true,因为它是处理错误用的:
<%@ page isErrorPage="true" %>
extends属性
extends属性指明servlet的超类。比如,接下来的指令告诉JSP翻译器产生一个扩展了SomePackage.SomeClass的servlet:
<%@ page extends="somePackage.SomeClass" %>
import属性
import属性与Java中的import语句有相同的功能。import属性的值是所引用的包名或类名。比如,要导入java.sql.*,可以像这样来写:
<%@ page import="java.sql.*" %>
要导入多个包,就使用逗号分开:
<%@ page import="java.sql.*,java.util.*" %>
默认情况下,容器会自动导入java.lang.*,javax.servlet.jsp.*,javax.servlet.*,javax.servlet.http.*。
info属性
info属性提供对JSP的描述,就像这样:
<%@ page info="This JSP Page Written By ZARA" %>
isThreadSafe属性
isThreadSafe属性标记一个页面是否是线程安全的。默认情况下,是线程安全的。如果将其设置成false,JSP容器便会确保一次只有一个线程可以运行您的JSP。接下来的语法将isThreadSafe属性设置为false:
<%@ page isThreadSafe="false" %>
language属性
language属性指明JSP页面所用的编程语言。比如,因为您经常使用Java来作为脚本语言,则language属性就要设置为:
<%@ page language="java" %>
session属性
session属性指明JSP页面是否使用HTTP会话。若值为true,则意味着JSP页面可以访问内嵌的session对象,若值为false则不能访问。接下来的指令允许JSP页面使用所有的session对象方法,比如session.getCreationTime() o或session.getLastAccessTime():
<%@ page session="true" %>
isELIgnored属性
isELIgnored属性可以停用对EL表达式的评估。默认值为true,表明EL表达式${...},以JSP规范口述的形式被评估。若为false,则EL表达式会被当成静态文本。
接下来的语法设置表达式不被评估:
<%@ page isELIgnored="false" %>
isScriptingEnabled属性
isScriptingEnabled属性决定一个脚本元素是否可用。默认值为true,表明可以使用脚本小程序,表达式,声明。如果设置成false,则在使用脚本小程序,EL表达式或声明时将会在翻译阶段报错。
如果想要限制使用脚本小程序,EL,或声明,可以这样设置:
<%@ page isScriptingEnabled="false" %>