JSP 指令是为 JSP 引擎(比如 Tomcat)而设计的,它们并不直接产生任何可见输出,而只是告诉引擎如何处理 JSP 页面中的其余部分。
JSP 引擎会根据 JSP 的指令信息来编译 JSP,生成 Java 文件。在生成的 Java 文件中,指令就不存在了。
一般都会把 JSP 指令放到 JSP 文件的最上方,但这不是必须的。
指令通常以<%@标记开始,以%>标记结束,它的具体语法如下:

<%@  指令名称  属性1="属性值1"  属性2="属性值2" ... 属性n="属性值n" %>

JSP 中三大指令,它们分别是 page、include 和 taglib,下表是对它们的简要说明。

Page指令

JSP page 指令是页面指令,可以定义在整个 JSP 页面范围有效的属性和相关的功能。利用 page 指令,可以指定脚本语言,导入需要的类,指明输出内容的类型,指定处理异常的错误页面,以及指定页面输出缓存的大小,还可以一次设置多个属性。一个JSP页面可以包含多个page指令。
Page指令的语法格式:

<%@ page attribute="value" %>

下表列出与Page指令相关的属性:

示例:

<%@ page import="com.mysql.jdbc.Driver" %>   
<%@ page import="java.sql.*"%>

 可以在一个页面上使用多个 page 指令,其中的属性只能使用一次(import 属性除外)。
JSP page 指令将使用这些属性的默认值来设置 JSP 页面,下面介绍 page 指令的 13 个属性。
示例:page-01.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page import="com.mysql.jdbc.Driver" %>
<%@ page import="java.sql.*"%>
<html>
<head>
    <title>Title</title>
</head>
<body>
page
</body>
</html>

其他

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page import="java.util.Date" %>
<%@ page import="java.text.SimpleDateFormat" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<%
    Date dNow = new Date( );
    out.print( "<h2 >" +dNow.toString()+"</h2>");
    SimpleDateFormat ft = new SimpleDateFormat ("yyyy-MM-dd HH:mm:ss");
    out.print( "<h2 >" + ft.format(dNow) + "</h2>");
%>

</body>
</html>

(1) language 属性

设置当前页面中编写 JSP 脚本所使用的语言,默认值为 java。
例如:

<%@ page language="java" %>

目前只可以使用 Java 语言。

(2) contenType 属性

设置发送到客户端文档响应报头的 MIME(Multipurpose Internet MailExtention)类型和字符编码,多个值之间用“;”分开。contenType 的用法如下:

<%@ page contenType="MIME 类型; charset=字符编码" %>

MIME 类型被设置为 text/html,如果该属性设置不正确,如设置为 text/css,则客户端浏览器显示 HTML 样式时,不能对 HTML 标识进行解释,而直接显示 HTML 代码。
在 JSP 页面中,默认情况下设置的字符编码为 ISO-8859-1,即 contentType=“text/html;charset=ISO-8859-1”。但一般情况下,应该将该属性设置为

contentType="text/html;charset=utf-8"

此处设置 MIME 类型为 text/html,网页所用字符集为 utf-8。

(3) import 属性

用来导入程序中要用到的包或类,可以有多个值,无论是 Java 核心包中自带的类还是用户自行编写的类,都要在 import 中引入。import 属性的用法如下:

<%@ page import="包名.类名" %>

如果想要导入包里的全部类,可以这样使用:

<%@ page import="包名.*" %>

在 JSP page 指令中,可多次使用该属性来导入多个类。例如:

<%@ page import="包名.类1" %> <%@ page import="包名.类2" %>

或者通过逗号间隔来导入多个类:

<%@ page import="包名.类1,包名.类2" %>

在 JSP 中,已经默认导入了以下包:

java.lang.*
javax.servlet.*
javax.servlet.jsp.*
javax.servlet.http.*

所以,即使没有用 import 属性进行导入,在 JSP 页面中也可以调用上述包中的类。
【例1】显示欢迎信息和用户登录的日期时间。
本例通过导入 java.util.Date 类来显示当前的日期时间。具体步骤如下。
① 使用 page 指令的 import 属性将 java.util.Date 类导入,然后向用户显示欢迎信息,并把当前日期时间显示出来。具体代码如下:

<%@ page import="java.util.Date" language="java" contentType="text/html;charset=utf-8"%>
<html>
<body>
您好,欢迎光临!<br/>
您登录的时间是<%=new Date()  %>
</body>
</html>

② 运行该页面。

(4) info 属性

设置 JSP 页面的相关信息,如当前页面的作者、编写时间等。此值可设置为任意字符串,由 Servlet.getServletInfo() 方法来获取所设置的值。
【例2】设置并显示 JSP 页面的作者等相关信息。
本例通过 page 指令的 info 属性来设置页面的相关信息,通过 Servlet.getServletInfo() 方法来获取所设置的值,具体步骤如下。
① 使用 page 指令的 info 属性设置页面的作者、版本以及编写时间等。具体代码如下:

<%@ page import="java.util.Date" language="java" contentType="text/html;charset=utf-8"%>
<%@ page info="作者:黄菊华 <br/> 版本: v1.0 <br/> 编写时间:2020年06月03 星期三 <br/> 敬请关注, 谢谢!"%>
<html>
<body>
<%
String str=this.getServletInfo();
out.print (str) ;
%>
</body>
<html>

② 运行该页面

(5) extends 属性

指定将 JSP 页面转换为 Servlet 后继承的类。在 JSP 中,通常不会设置该属性,JSP 容器会提供继承的父类。并且,如果设置了该属性,一些改动会影响 JSP 的编译能力。

(6) session 属性

表示当前页面是否支持 session,如果为 false,则在 JSP 页面中不能使用 session 对象以及 scope=session 的 JavaBean 或 EJB。该属性的默认值为 true。

(7) errorPage 属性

用于指定JSP文件的相对路径,在页面出错时,将转到这个 JSP 文件来进行处理。与此相适应,需要将这个 JSP 文件的 isErrorPage 属性设为 true。
设置 errorPage 属性后,JSP 网页中的异常仍然会产生,只不过此时捕捉到的异常将不由当前网页进行处理,而是由 errorPage 属性所指定的网页进行处理。如果该属性值设置为以“/”开头的路径,则错误处理页面在当前应用程序的根目录下;否则在当前页面所在的目录下。

(8) isErrorPage 属性

指示一个页面是否为错误处理页面。设置为 true 时,在这个 JSP 页面中的内置对象 exception 将被定义,其值将被设定为调用此页面的 JSP 页面的错误对象,以处理该页面所产生的错误。
isErrorPage 属性的默认值为 false,此时不能使用内置对象 exception 来处理异常,否则将产生编译错误。
例如,在发生异常的页面上有如下用法:
<%@ page errorPage=“error.jsp” %>
用上面的代码,就可以指明当该 JSP 页面出现异常时,跳转到 error.jsp 去处理异常。而在 error.jsp 中,需要使用下面的语句来说明可以进行错误处理:

<%@ page isErrorPage="true" %>

【例3】页面出现异常的处理。
本例通过 page 指令的 errorPage 和 isErrorPage 两个属性来演示当页面出现异常时应如何处理。具体步骤如下。
① 创建A.jsp 页面,使用 page 指令的 errorPage 属性指定页面出现异常时所转向的页面。具体代码如下:

<%@ page contentType="text/html; charset=utf-8" errorPage="2-18error.jsp" %>
<html>
<body>
<%
//此页面如果发生异常,将向2-18error.jsp抛出异常,并令其进行处理
int x1=5;
int x2=0;
int x3=x1/x2;
out .print (x3);
%>
</body>
</html>

该程序执行的是除法运算,如果除数为 0,将会拋出一个数学运算异常,从 errorPage=“B.jsp” 可以看出,程序指定 B.jsp 为其处理异常。
② 创建B.jsp 页面,使用 page 指令的 isErrorPage 属性指定为出错页面,此页面可以使用 exception 异常对象处理错误信息。具体代码如下:

<%@ page contentType="text/html; charset=utf-8" isErrorPage="true" %>
<html>
<body>
出现错误,错误如下:<br/>
<hr>
<%=exception.getMessage() %>
</body>
</html>

② 运行 A.jsp 页面,结果如图 所示。

提示: 为了确译当页面出错时跳转到 errorPage 所指的页面,需要打开 IE 浏览器,选择“工具”→“Internet
选项”菜单命令,在弹出的对话框中选择“高级”选项卡,取消选中“显示友好 HTTP 错误信息”复选框。

(9) buffer 属性

内置输出流对象 out 负责将服务器的某些信息或运行结果发送到客户端显示,buffer 属性用来指定 out 缓冲区的大小。其值可以是 none、8KB 或是给定的 KB 值。
值为 none 表示没有缓存,直接输出至客户端的浏览器中;如果将该属性指定为数值,则输出缓冲区的大小不应小于该值,默认为 8KB(因不同的服务器而不同,但大多数情况下都为 8KB)。

(10) autoFlush 属性

当缓冲区满时,设置是否自动刷新缓冲区。默认值为 true,表示当缓冲区满时,自动将其中的内容输出到客户端;如果设为 false,则当缓冲区满时会出现 JSP Buffer overflow 溢出异常。
提示:当 buffer 属性的值设置为 none 时,autoFush 属性的值不能设置为 false。

(11) isThreadSafe 属性

设置 JSP 页面是否可以多线程访问。默认值为 true,表示当前 JSP 页面被转换为 Servlet 后,会以多线程的方式处理来自多个用户的请求;如果设置为 false,则转换后的 Servlet 会实现 SingleThreadMode 接口,并且将以单线程的方式来处理用户请求。

(12) pageEncoding 属性

设置 JSP 页面字符的编码,常见的编码类型有 ISO-8859-1、gb2312、utf-8 和 GBK 等。默认值为 ISO-8859-1。其用法如下:

<%@ page pageEncoding="字符编码" %>

例如:

<%@ page pageEncoding="utf-8" %>

这表示网页使用了 utf-8 编码,与 contentType 属性中的字符编码设置作用相同。

(13) isELIgnored 属性

其值可设置为 true 或 false,表示是否在此 JSP 网页中执行或忽略表达式语言 ${}。设置为 true 时,JSP 容器将忽略表达式语言。

【Java网站开发参考资料】

(1)Java网站开发学习路线 http://www.hzyaoyi/jsp/

(2)Javaweb新手入门学习实战课 https://ke.qq/course/package/30139

(3)小白教程资料 http://www.2d5

(4)毕业设计网http://www.pc-365

(5)小程序编程网www.4317

(6)计算机编程网http://www.05423/

更多推荐

第10课:JSP指令 Page指令 (JSP教程 JSP入门实战教程 黄菊华Java网站开发系列教程)