# JSP 指令 - 页面，包含和 TagLib

> 原文： [https://beginnersbook.com/2013/05/jsp-tutorial-directives/](https://beginnersbook.com/2013/05/jsp-tutorial-directives/)

指令控制整个 JSP 页面的处理。它向服务器提供有关页面处理的指示。

**指令语法：**

```
 <%@ directive name [attribute name=“value” attribute name=“value” ........]%>
```

**JSP 中有三种类型的指令：**
1）页面指令
2）包含指令
3）TagLib 指令

## 1）页面指令

有几个属性，与 Page Directives 一起使用，它们是 -

1.  进口
2.  会议
3.  isErrorPage
4.  的 errorPage
5.  内容类型
6.  isThreadSafe
7.  扩展
8.  信息
9.  语言
10.  自动冲洗
11.  缓冲

### 1.导入：

此属性用于导入包。在进行编码时，您可能需要包含多个包。在这种情况下，此页面指令的属性非常有用，因为它允许您在逗号（，）之间用同一位置提及多个包。或者，您可以拥有多个页面元素实例，每个实例都包含不同的包。

**导入属性的语法 -**

```
<%@page import="value"%>
```

这里的值是包名。

**导入示例 -** 以下是如何使用 page 指令的 import 属性导入多个包的示例。

```
 <%@page import="java.io.*%>
 <%@page import="java.lang.*%>
 <%--Comment: OR Below Statement: Both are Same--%>
 <%@page import="java.io.*, java.lang.*"%>
```

### 2.会话：

通常在构建用户交互式 JSP 应用程序时，我们确保允许用户访问以获取他/她的个人数据，直到会话处于活动状态。考虑一个登录到您的银行帐户的示例，我们可以访问您的所有数据，直到我们退出（或会话到期）。为了维护页面的会话，会话属性应为 true。

此属性用于处理 JSP 页面的 HTTP 会话。它可以有两个值：true 或 false。会话属性的默认值为 true，这意味着如果您不提及此属性，则服务器可能会认为此页面需要 HTTP 会话。

**此属性的默认值：** true

**会话属性语法：**

```
<%@ page session="value"%>
```

这里的值是**是真还是假**

**会议举例：**

```
<%@ page session="true"%>
```

上面的代码将允许页面具有会话隐式对象。

```
<%@ page session="false"%>
```

如果在 JSP 页面中指定了此代码，则意味着会话对象将不可用于该页面。因此，无法为该页面维护会话。

### 3\. isErrorPage ：

此属性用于指定当前 JSP 页面是否可用作另一个 JSP 页面的错误页面。如果 isErrorPage 的值为 true，则表示该页面可用于其他页面的异常处理。通常，这些页面具有错误/警告消息或异常处理代码，并且当发生异常时由另一个 JSP 页面调用。

isErrorPage 属性还有另一种用法 - [异常隐式对象](https://beginnersbook.com/2013/11/jsp-implicit-object-exception-with-examples/ "Exception implicit object")只能用于 isErrorPage 设置为 true 的那些页面。如果值为 false，则页面不能使用异常隐式对象。

**默认值：** false

**isErrorPage 属性的语法：**

```
<%@ page isErrorPage="value"%>
```

这里的值是 true 或 false。

**isErrorPage 示例：**

```
<%@ page isErrorPage="true"%>
```

这使得 JSP 页面成为异常处理页面。

### 4\. errorPage ：

如上所述，当 isErrorPage 属性对于特定页面为 true 时，则表示在异常情况下该页面可以被另一个页面调用。 errorPage 属性用于指定将 isErrorPage attrbute 设置为 true 的 JSP 页面的 URL。它处理页面中未处理的异常。

**errorPage 属性的语法：**

```
<%@ page errorPage="value"%>
```

这里的值是一个 JSP 页面名称，它具有异常处理代码（并且 isErrorPage 设置为 true）。

**errorPage 示例：**

```
<%@ page errorPage="ExceptionHandling.jsp"%>
```

这意味着如果在放置此代码的 JSP 页面上发生任何异常，则需要调用 ExceptionHandling.jsp（此页面应具有 isErrorPage true）页面。

### 5\. contentType ：

此属性用于设置 JSP 页面的内容类型。

**默认值**：text / html

**contentType 属性的语法：**

```
<%@ page contentType="value"%>
```

这里内容类型的值可以是诸如：text / html，text / xml 等。

**contentType 示例：**

下面的代码可用于 text / html 页面。

```
<%@ page contentType="text/html"%>
```

对于基于 text / xml 的页面：

```
<%@ page contentType="text/xml"%>
```

### 6\. isThreadSafe ：

让我们通过一个例子来理解这一点。假设您已经创建了一个 JSP 页面并将 isThreadSafe 提到为 true，这意味着 JSP 页面支持多线程（多个线程可以同时执行 JSP 页面）。另一方面，如果将其设置为 false，则 JSP 引擎将不允许多线程，这意味着只有单个线程将执行页面代码。

**isThreadSafe 属性的默认值：** true。

**isThreadSafe 属性的语法：**

```
<%@ page isThreadSafe="value"%>
```

这里的值可以是 true 或 false。

**isThreadSafe 示例：**

```
<%@ page isThreadSafe="false"%>
```

只有一个线程负责 JSP 页面执行。

### 7.缓冲区：

此属性用于指定缓冲区大小。如果在编码期间将此值指定为 none，则输出将由 JSPWriter 直接写入 Response 对象。并且，如果指定缓冲区大小，则输出首先写入缓冲区，然后它将可用于响应对象。

**缓冲区属性的语法：**

```
<%@ page buffer="value"%>
```

值为**大小，单位为 kb** 或**无**。

**缓冲区示例：**

此页面没有缓冲区：

```
<%@ page buffer="none"%>
```

页面的 5 kb 缓冲区大小，代码如下：

```
<%@ page buffer="5kb"%>
```

### 8.扩展：

像 java 一样，这里的属性也用于扩展（继承）类。

**extends 属性的语法：**

```
<%@ page extends="value"%>
```

值为 package_name.class_name。

**延伸示例：**

下面的代码将从包中继承 SampleClass：mypackage

```
<%@ page extends="mypackage.SampleClass"%>
```

### 9.信息：

它提供了对 JSP 页面的描述。当我们调用 getServletInfo（）方法时，info 中指定的字符串将返回。

**信息语法：**

```
<%@ page info="value"%>
```

这里的值是消息或描述

**信息属性示例：**

```
<%@ page info="This code is given by Chaitanya Singh"%>
```

### 10.语言：

它指定页面中使用的脚本语言（基础语言）。

**语言语法：**

```
<%@ page language="value"%>
```

值是这里的脚本语言。

**语言属性示例：**

```
<%@ page language="java"%>
```

### 11\. autoFlush ：

如果为 true，则表示缓冲区应该在满时刷新。当缓冲区溢出时，false 将抛出异常。

**默认值**：True

**autoFlush 的语法：**

```
<%@ page autoFlush="value"%>
```

值可以是真或假。

**autoFlush 属性示例：**

缓冲区将在满时刷新 -

```
<%@ page autoFlush="true"%>
```

由于溢出条件，缓冲区满时会抛出异常

```
<%@ page autoFlush="true"%>
```

### 12\. isScriptingEnabled ：

它已被删除而未被使用。

### 13\. isELIgnored ：

此属性指定是否评估表达式。

**默认值**：true

**isELIgnored 的语法：**

```
<%@ page isELIgnored="value"%>
```

value can be true or false.

**isELIgnored 属性示例：**

JSP 页面中存在的任何表达式都不会被评估 -

```
<%@ page isELIgnored="false"%>
```

将评估表达式（true 是默认值，因此无需指定） -

```
<%@ page isELIgnored="true"%>
```

## 2）包含指令

Include 指令用于将一个 JSP 页面的内容复制到另一个 JSP 页面。这就像将一个文件的代码包含在另一个文件中。

**包含指令的语法：**

```
<%@include file ="value"%>
```

这里的值是需要包含的 JSP 文件名。如果文件位于同一目录中，则只需指定文件名，否则需要在值字段中提及完整的 URL（或路径）。

**注意：它可以在页面的任何地方使用。**

**示例：**

```
<%@include file="myJSP.jsp"%>
```

您可以在 JSP 页面中使用上述代码来复制 myJSP.jsp 文件的内容。但是，在这种情况下，两个 JSP 文件必须位于同一目录中。如果 myJSP.jsp 位于不同的目录中，那么您需要在上面的代码中指定完整路径，而不仅仅是文件名。

**必须通过示例详细阅读**： [Include 指令。](https://beginnersbook.com/2013/11/jsp-include-directive/ "Include directive")

## 3）Taglib 指令

该指令基本上允许用户在 JSP 中使用 Custom 标签。我们将在即将到来的 JSP 教程中详细讨论 Custom 标签。 Taglib 指令可帮助您在 JSP 页面中声明自定义标记。

**Taglib 指令语法：**

```
<%@taglib uri ="taglibURI" prefix="tag prefix"%>
```

其中 URI 是统一资源定位符，用于标识自定义标记的位置，标记前缀是一个字符串，可以标识 uri 标识的位置中的自定义标记。

**Targlib 的例子：**

```
<%@ taglib uri="http://www.sample.com/mycustomlib" prefix="demotag" %>
<html>
<body>
<demotag:welcome/>
</body>
</html>
```

如您所见，uri 具有自定义标记库的位置，前缀标识自定义标记的前缀。
注意：在上面的例子中 - ＆lt; demotag：welcome＆gt;有一个前缀 demotag。