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 | <% session="false" buffer="16kb"%> |
原文链接: 3.4.1 page指令