page指令
page指令作用于整个JSP页面,其定义了与页面相关的一些属性,这些属性将被用于和JSP服务器进行通信。
page指令的语法如下:
<%@ page属性1=“属性值” 属性2=“属性值”……%>
其XML形式为:<jsp:directive.page属性1=“属性值” 属性2=“属性值” …/>
page指令有13个属性。
(1)language="scriptingLanguage"
该属性用于指定在脚本元素中使用的脚本语言,默认值是java。
(2)extends="className"
该属性用于指定JSP页面转换后的Servlet类所继承的父类,属性的值是一个完整的类名。
(3) import="importList"
该属性用于声明在JSP页面中可以使用的Java类。属性的值和Java程序中的import声明类似,该属性的值是以逗号分隔的导入列表,例如:
<%@ pageimport="java.util.Vector" %>
<%@ page import="java.io.*" %>
要注意的是,page指令中只有import属性可以重复使用。如果不写该属性,import默认引入以下4个包:java.lang.*,javax.servlet.*,javax.servlet.jsp.*和javax.servlet.http.*。
(4)session="true|false"
该属性用于指定在JSP页面中是否可以使用session对象,默认值是true。
(5)buffer="none|sizeKB"
该属性用于指定out对象使用的缓冲区大小,如果设置为none,将不使用缓冲区,所有的输出直接通过ServletResponse的PrintWriter对象写出。该属性的值以KB为单位,默认值是8KB。
(6)autoFlush="true|false"
该属性用于缓冲区满时,缓存的输出是否应该自动刷新。如果设置为false,当缓冲区溢出的时候,一个异常将被抛出。默认值为true。
(7)isThreadSafe="true|false"
该属性用于指定对JSP页面的访问是否是线程安全的。如果设置为true,则向JSP容器表明这个页面可以同时被多个客户端请求访问。默认值是true。
(8) info="info_text"
该属性用于指定页面的相关信息,该信息可以通过调用Servlet接口的getServletInfo()方法来得到。
(9) errorPage="error_url"
该属性用于指定当JSP页面发生异常时,将转向哪一个错误处理页面。
注意:如果一个页面通过使用该属性定义了错误页面,那么在web.xml文件中定义的任何错误页面将不会被使用。
(10) isErrorPage="true|false"
该属性用于指定当前的JSP页面是否是另一个JSP页面的错误处理页面。默认值是false。
(11)contentType="type"
该属性指定用于响应的JSP页面的MIME类型和字符编码,中文页面中必须要设置。例如:<%@page contentType="text/html;charset=gb2312" %>
(12) pageEncoding="peinfo"
该属性指定JSP页面使用的字符编码。如果设置了这个属性,则JSP页面的字符编码使用该属性指定的字符集,如果没有设置这个属性,则JSP页面使用contentType属性指定的字符集,如果这两个属性都没有指定,则使用字符集“ISO-8859-1”。
(13)isELIgnored="true|false"
该属性用于定义在JSP页面中是否执行或忽略EL表达式。如果设置为true,EL表达式将被容器忽略,如果设置为false,EL表达式将被执行。
注意:无论将page指令放在JSP文件的哪个位置,它的作用范围都是整个JSP页面。
为了JSP程序的可读性,以及养成良好的编程习惯,应该将page指令放在JSP文件的顶部。
.include指令
include指令用于在JSP页面中静态包含一个文件,该文件可以是JSP页面、HTML网页、文本文件或一段Java代码。使用了include指令的JSP页面在转换时,JSP服务器会在指令出现的位置插入所包含文件的文本或代码。
include指令的语法为:
<%@ include file="relativeURL"%>
XML语法格式的include指令为:
<jsp:directive.include file="relativeURL"/>
其中file属性值为相对于当前JSP文件的URL。
例:<%@page contentType="text/html;charset=gb2312" %>
<html>
<head><title>欢迎你</title></head>
<body>
欢迎你,现在的时间是
<%@ include file="date.jsp" %>
</body>
</html>
date.jsp:
<% out.println(new java.util.Date().toLocaleString()); %>
- 使用include编译指令的好处:
可以将一个复杂的JSP页面分割成若干个简单的、能进行单独处理的部分。这种方式大大增强了JSP页面的管理性和灵活性及扩展型。当要修改页面时,可以只单独对要修改的包含文件进行修改即可。
- 注意事项:
1)在test1.jsp中进行 <%@ include file="test2.jsp" %>出现错误。
错误为:Multiple annotations found at this line:
- Duplicate local variable path
- Duplicate local variable
解决方法:
法I:将test2.jsp中的path和basepath改为其他名字
法II:将test2.jsp中的path和basepath删除
taglib指令
taglib指令允许页面使用用户自定义的标记。taglib指令的语法如下:
<%@ taglib (uri="tagLibraryURI"| tagdir="tagDir")prefix="tagPrefix"%>
XML语法的格式为:
<jsp:directive.taglib (uri="tagLibraryURI"| tagdir="tagDir")prefix="tagPrefix"/>
taglib指令的三个属性:
(1) uri
该属性惟一地标识和前缀(prefix)相关的标签库描述符,可以是绝对或者相对的URI。这个URI被用于定位标记库描述符的位置。
(2)tagdir
该属性指示前缀(prefix)将被用于标识安装在/WEB-INF/tags/目录或其子目录下的标签文件。
(3)prefix
定义一个prefix:tagname形式的字符串前缀,用于区分多个自定义标签。以jsp:,jspx:,java:, javax:,servlet:,sun:和sunw:开始的前缀被保留。前缀的命名必须遵循XML名称空间的命名约定。
在JSP2.0规范中,空前缀是非法的。