页面指令(Page Directive)
page指令用于向与当前JSP页面相关的容器提供指令。 您可以在JSP页面中的任何位置编写页面指令。 按照惯例,页面指令在JSP页面的顶部进行编码。
以下是页面指令的基本语法 -
<%@ page attribute = "value" %>
您可以编写上述语法的XML等价物,如下所示 -
<jsp:directive.page attribute = "value" />
属性 (Attributes)
下表列出了与page指令相关的属性 -
S.No. | 属性和目的 |
---|---|
1 | buffer 指定输出流的缓冲模型。 |
2 | autoFlush 控制servlet输出缓冲区的行为。 |
3 | contentType 定义字符编码方案。 |
4 | errorPage 定义报告Java未经检查的运行时异常的另一个JSP的URL。 |
5 | isErrorPage 指示此JSP页面是否是由另一个JSP页面的errorPage属性指定的URL。 |
6 | extends 指定生成的servlet必须扩展的超类。 |
7 | import 指定JSP中使用的包或类的列表,如Java import语句对Java类所做的那样。 |
8 | info 定义可以使用servlet的getServletInfo()方法访问的字符串。 |
9 | isThreadSafe 定义生成的servlet的线程模型。 |
10 | language 定义JSP页面中使用的编程语言。 |
11 | session 指定JSP页面是否参与HTTP会话。 |
12 | isELIgnored 指定是否忽略JSP页面中的EL表达式。 |
13 | isScriptingEnabled 确定是否允许使用脚本元素。 |
缓冲区属性
buffer属性指定服务器输出响应对象的缓冲特性。
您可以编写值“ none ”来指定不缓冲,以便servlet输出立即定向到响应对象,或者您可以编码最大缓冲区大小(以KB为单位),这会指示servlet在写入响应之前写入缓冲区宾语。
要指示servlet将输出直接写入响应输出对象,请使用以下命令 -
<%@ page buffer = "none" %>
使用以下命令指示servlet将输出写入大小不小于8千字节的缓冲区 -
<%@ page buffer = "8kb" %>
autoFlush属性
autoFlush属性指定在填充缓冲区时是否应自动刷新缓冲输出,或者是否应引发异常以指示缓冲区溢出。
值true (default)表示自动缓冲区刷新,值false表示抛出异常。
当servlet的输出缓冲区已满时,以下指令会导致servlet抛出异常 -
<%@ page autoFlush = "false" %>
该指令使servlet在满时刷新输出缓冲区 -
<%@ page autoFlush = "true" %>
通常,缓冲区和autoFlush属性在单个页面指令上编码,如下所示 -
<%@ page buffer = "16kb" autoflush = "true" %>
contentType属性
contentType属性设置JSP页面和生成的响应页面的字符编码。 默认内容类型是text/html ,它是HTML页面的标准内容类型。
如果要从JSP中写出XML,请使用以下页面指令 -
<%@ page contentType = "text/xml" %>
以下语句指示浏览器将生成的页面呈现为HTML -
<%@ page contentType = "text/html" %>
以下指令将内容类型设置为Microsoft 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属性指示当前JSP可以用作另一个JSP的错误页面。
isErrorPage的值为true或false。 isErrorPage属性的默认值为false。
例如, handleError.jsp将isErrorPage选项设置为true,因为它应该处理错误 -
<%@ page isErrorPage = "true" %>
扩展属性
extends属性指定生成的servlet必须扩展的超类。
例如,以下指令指示JSP转换器生成servlet,以便servlet扩展somePackage.SomeClass -
<%@ page extends = "somePackage.SomeClass" %>
导入属性
import属性与Java import语句具有相同的功能,其行为与Java import语句相同。 导入选项的值是要导入的包的名称。
要导入java.sql.* ,请使用以下页面指令 -
<%@ page import = "java.sql.*" %>
要导入多个包,您可以使用逗号分隔它们,如下所示 -
<%@ page import = "java.sql.*,java.util.*" %>
默认情况下,容器会自动导入java.lang.*, javax.servlet.*, javax.servlet.jsp.*,和javax.servlet.http.* 。
信息属性
info属性允许您提供JSP的描述。 以下是编码示例 -
<%@ page info = "This JSP Page Written By ZARA" %>
isThreadSafe属性
isThreadSafe选项将页面标记为线程安全的。 默认情况下,所有JSP都被视为线程安全的。 如果将isThreadSafe选项设置为false,则JSP引擎会确保一次只有一个线程正在执行JSP。
以下页面指令将isThreadSafe选项设置为false -
<%@ page isThreadSafe = "false" %>
语言属性
language属性指示用于编写JSP页面脚本的编程语言。
例如,因为您通常使用Java作为脚本语言,所以您的语言选项如下所示 -
<%@ page language = "java" %>
会话属性
session属性指示JSP页面是否使用HTTP会话。 值true表示JSP页面可以访问内置session对象,值false表示JSP页面无法访问内置会话对象。
以下指令允许JSP页面使用任何内置对象会话方法,例如session.getCreationTime()或session.getLastAccessTime() -
<%@ page session = "true" %>
isELIgnored属性
isELIgnored属性使您能够禁用JSP 2.0中引入的表达式语言(EL)表达式的评估。
该属性的默认值为true,这意味着表达式${...}将按照JSP规范的要求进行评估。 如果该属性设置为false,则不会计算表达式,而是将其视为静态文本。
以下指令设置一个不被评估的表达式 -
<%@ page isELIgnored = "false" %>
isScriptingEnabled属性
isScriptingEnabled属性确定是否允许使用脚本元素。
default value (true)启用scriptlet,表达式和声明。 如果属性的值设置为false,那么如果JSP使用任何scriptlet,表达式(非EL)或声明,则会引发转换时错误。
如果要限制scriptlet,表达式(非EL)或声明的用法,则可以将属性的值设置为false -
<%@ page isScriptingEnabled = "false" %>