3.4.1 page指令
可以使用page
指令来控制JSP
转换器转换当前JSP
页面的某些方面。例如,可以告诉JSP
用于转换隐式对象out
的缓冲器的大小、内容类型,以及需要导入的Java
类型,等等。
page指令语法格式
page指令的语法如下:
1 | <%@ page attribute1="value1" attribute2="value2" ... %> |
@
和page
间的空格不是必须的,attribute1
、attribute2
等是page
指令的属性。
page指令属性列表
如下是page
指令属性的列表:
import
:定义一个或多个本页面中将被导入和使用的java
类型。例如:import="java.util.List"
将导入List接口。可以使用通配符“*
”来引入整个包,类似import="java.util.*"
。可以通过在两个类型间加入“,”分隔符来导入多个类型,如import="java.util.ArrayList、java.util.Calendar、java.io.PrintWriter"
。此外,JSP
默认导入如下包:java.lang
、javax.servlet
、javax.servlet.http
、javax.servlet.jsp
。session
:如果session
属性值为True
,则在本页面之中加入会话管理;如果值为False
则不加入会话管理。默认值为True
,访问该页面时,若当前不存在javax.servlet.http.HttpSession
实例,则容器会创建一个。buffer
:以KB
为单位,定义隐式对象out
的缓冲大小。必须以KB
后缀结尾。默认大小为8KB
或更大(取决于JSP
容器)。该值可以为none
,这意味着没有缓冲,所有数据将直接写入PrintWriter
。autoFlush
:默认值为True
。若值为True
,则当输出缓冲满时会自写入输出流。而值为False
,则仅当调用隐式对象的flush
方法时,才会写入输出流。因此,若缓冲溢出,则会抛出异常。isThreadSafe
:定义该页面的线程安全级别。不推荐使用该参数,因为使用该参数后,会生成一些Servlet
容器已过期的代码。info
:返回容器生成的Servlet
类的getServletInfo
方法的结果。errorPage
:定义当出错时用来处理错误的页面。isErrorPage
:标识本页是一个错误处理页面。contentType
:定义本页面隐式对象response
的内容类型,默认是text/html
。pageEncoding
:定义本页面的字符编码,默认是ISO-8859-1
。isELIgnored
:配置是否忽略EL
表达式。EL
是Expression Language
的缩写。language
:定义本页面的脚本语言类型,默认是Java
,这在JSP 2.2
中是唯一的合法值。extends
:定义JSP
的实现类要继承的父类。这个属性的使用场景非常罕见,仅在非常特殊情况下使用。deferredSyntaxAllowedAsLiteral
:定义是否解析字符串中出现{#
这个符号,默认是False
。{#
是一个表达式语言的起始符号。(这个地方可能有错,后面再验证.)trimDirectiveWhitespaces
:定义是否不输出多余的空格/空行,默认是False
。
page指令可以出现的位置
大部分page
指令可以出现在页面的任何位置,但当page
指令包含contentType
或pageEncoding
属性时,其必须出现在Java
代码发送任何内容之前。这是因为内容类型和字符编码必须在发送任何内容前设定。
page指令import属性
page
指令也可以出现多次,但出现多次的指令属性必须具有相同的值。不过,import
属性例外,多个包含import
属性的page
指令的结果是累加的。例如,以下page
指令将同时导入java.util.ArrayList
和java.util.Date
类型:
1 | <%import="java.util.ArrayList"%> |
这和如下的写法,效果是一样的:
1 | <%import="java.util.ArrayList, java.util.Date"%> |
page指令可以同时设置多个属性
一个page
指令可以同时有多个属性。下面的代码设定了session
属性和buffer
属性:
1 | <%"false" buffer="16kb"%> session= |
原文链接: 3.4.1 page指令