【Java】pageディレクティブ(JSPページの表示に関する設定)

<!-- ここから キャプチャー -+-+-+-+-+-+-+ -->
<!-- キャプチャータイトル -->
## pageディレクティブ

<!-- 説明 「〜〜とはなど」-->
### 【説明】
pageディレクティブ内へは、主にページの表示に関する設定を記述します。

<!-- 特徴・メリット -->

### 【使用場面】
JSPファイルの一番上に記述する。

```jsp
//【START】ディレクティブ =============
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
//【 END 】ディレクティブ =============


<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
```

<!-- 基本構文 -->
### 【基本構文】

構文は次の通りです。

```jsp
<%@ page
   [ language="java" ]
   [ extends="package.class" ]
   [ import="{package.class | package.*}, ..." ]
   [ session="true|false" ]
   [ buffer="none|8kb|sizekb" ]
   [ autoFlush="true|false" ]
   [ isThreadSafe="true|false" ]
   [ info="text" ]
   [ errorPage="relativeURL" ]
   [ contentType="mimeType [ ; charset=characterSet ]" |
      "text/html ; charset=ISO-8859-1" ]
   [ isErrorPage="true|false" ]
   [ pageEncoding="characterSet | ISO-8859-1" ]
   [ isELIgnored="true|false"]
%>
```
この中で設定したい項目だけを取り出してpageディレクティブに設定します。例えば次の通りです。

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

<!-- 補足 -->
## 【項目の詳細】

### language(JSPページで使用する言語を指定)
- デフォルト値:「java」
- 現状ではJavaしか指定できないため設定する必要はありません。

### extends
- JSPページを他のクラスのサブクラスにする場合に、スーパークラスを指定
- この項目の詳細は不明

### import(JSPページでクラスをimportする)
- Javaにおける「import」文と同じ役割
- JSPではデフォルトで次のクラスをimportしているため改めてimportしなくても利用することが可能


### session (セッションを有効にするかどうかを指定)
- 「true」又は「false」を記述
- デフォルトは「true」

### buffer (JSPページから出力されるデータをバッファしてからクライアントに返すかどうかを指定)
- デフォルトは「8kb」
- 「none」を指定
  - バッファされずにクライアントに出力データが送られる
- 「8kb」のようにキロバイト単位で容量を指定した場合は
  - 出力データがバッファがいっぱいになるまで待ってからクライアントにまとめて送信される為、効率よく送信が行える。

### autoFlush (バッファを超える出力データが合った場合の処理について指定)
- バッファを使用する場合に使用
- 「true」又は「false」を記述
- 「true」の場合
  - バッファがいっぱいになった場合には自動的にクライアントにデータを送信します。
- 「false」の場合
  - バッファがいっぱいになると例外が発生
  - 「buffer」に「none」を指定した場合以外は「autoFlash」に「false」は設定しないほうがいい



### isThreadSafe (スレッドセーフで実行するかどうかを指定)

- 「true」又は「false」を記述
- デフォルトは「true」
- 「true」の場合
  - 複数のリクエストが合った場合に同時に実行されることを許可
  - 「false」に設定した場合はリクエストの到着順に1つずつ処理

### info (JSPページに関する任意の情報を記述)

- 製作者や作成年月日など

### errorPage (エラーが発生した場合に表示するページへのパスを記述)

- 指定しない場合: デフォルトのエラーページが表示

### isErrorPage (JSPページがエラー表示用のページかどうかを指定)

- 「true」又は「false」を記述
- デフォルトは「false」
- 「errorPage」でエラー表示先を指定した場合には「errorPage」を「true」に設定する
- 「true」の場合は「exception」オブジェクトが利用可能になるため、このオブジェクトを使ってエラーに関する情報を取得することが出来る

### contentType (JSPページのデータ型と必要であれば文字コードをMIMEタイプを使って記述)

- JPEG画像を表すページであれば「image/jpeg」
- テキストファイルであれば「text/plain」を記述
- デフォルトで設定されているのはHTMLファイルで「text/html;charset=ISO-8859-1」
- 文字コードを指定する場合はセミコロン(;)の後に「charset=文字コード」の書式で続けて記述する

文字コードはデフォルトで「ISO-8859-1」(通称Latin-1)が指定されています。日本語を使う場合にはデフォルトのままでは文字化けしますので、必ず日本語の文字コードを指定して下さい。Windwos環境であれば「text/html;charset=Shift_Jis」又は「text/html;charset=Windows-31J」などでいいかと思います。

今までのサンプルでも次のように記述していました。

### pageEncoding (JSPページの文字コードを指定)

- デフォルトは「ISO-8859-1」
- デフォルトの値は「contentType」で指定した文字コード
- 指定は不要


### isElIgnored(EL式を適用するかどうかを指定)

- trueの場合は適用しない
- falseを設定すると適用
- デフォルトは「false」

<!-- ここまで  キャプチャー -+-+-+-+-+-+-+ -->

[Progate]:https://prog-8.com/
[ドットインストール]:https://dotinstall.com/

<!-- A -->
[abstract修飾子]:https://qiita.com/takahirocook/items/9fa0e1cbb8a4dd4e1ff4
[abstract]:https://qiita.com/takahirocook/items/9fa0e1cbb8a4dd4e1ff4
<!-- B -->
<!-- C -->
[Calendar]:https://qiita.com/takahirocook/items/204dd7331db777eb6f3b
<!-- D -->
[Date]:https://qiita.com/takahirocook/items/a760e20ef2d9aa5c08fc
<!-- E -->
<!-- F -->
[final]:https://qiita.com/takahirocook/items/5e0916d9bf28bcf68d0c
[final修飾子]:https://qiita.com/takahirocook/items/5e0916d9bf28bcf68d0c
<!-- G -->
[getter・setter]:https://qiita.com/takahirocook/items/27828bc8477735612021
[getter]:https://qiita.com/takahirocook/items/27828bc8477735612021
[GET]:https://qiita.com/takahirocook/items/8080a478439f6043b2c1
[GETメソッド]:https://qiita.com/takahirocook/items/8080a478439f6043b2c1
[getParameter()]:https://qiita.com/takahirocook/items/8080a478439f6043b2c1
[getParameter]:https://qiita.com/takahirocook/items/8080a478439f6043b2c1
[getParameterメソッド]:(https://qiita.com/takahirocook/items/8080a478439f6043b2c1)
[getParameterValues]:https://qiita.com/takahirocook/items/7a071493ae73cc4749e1
[getParameterValuesメソッド]:https://qiita.com/takahirocook/items/7a071493ae73cc4749e1
<!-- H -->
<!-- I -->
[import]:https://qiita.com/takahirocook/items/59a8a09cab6a98d3bca2
<!-- J -->
[JDBC]:https://qiita.com/takahirocook/items/064b591cffa4221144ed
<!-- K -->
<!-- L -->
[List]:https://qiita.com/takahirocook/items/4d622fc6f271569783b5
[length]:https://qiita.com/takahirocook/items/16a123fb73b30869053b
[list]:https://qiita.com/takahirocook/items/4d622fc6f271569783b5
<!-- M -->
[Map]:https://qiita.com/takahirocook/items/49f46151ecb5e332db32
[map]:https://qiita.com/takahirocook/items/49f46151ecb5e332db32
[mainメソッド]:https://qiita.com/takahirocook/items/f4635915337303de338c
<!-- N -->
[new演算子]:https://qiita.com/takahirocook/items/00f9f97592bf50831d39
[new]:https://qiita.com/takahirocook/items/00f9f97592bf50831d39
<!-- O -->
<!-- P -->
[printf()メソッド]:https://qiita.com/takahirocook/items/06d525be63eccd99ed49
[printf()関数]:https://qiita.com/takahirocook/items/06d525be63eccd99ed49
[POST]:https://qiita.com/takahirocook/items/7a071493ae73cc4749e1
[POSTメソッド]:https://qiita.com/takahirocook/items/7a071493ae73cc4749e1
<!-- Q -->
<!-- R -->
<!-- S -->
[static修飾子]:https://qiita.com/takahirocook/items/cf527f85d17a5af86735
[static]:https://qiita.com/takahirocook/items/cf527f85d17a5af86735
[setter]:https://qiita.com/takahirocook/items/27828bc8477735612021
[SimpleDateFormat]:https://qiita.com/takahirocook/items/aa857c8f2153193095e4
[set]:https://qiita.com/takahirocook/items/d498329cd26e1500f476
[Set]:https://qiita.com/takahirocook/items/d498329cd26e1500f476
[super]:https://qiita.com/takahirocook/items/75a07131e7e791c8442c
<!-- T -->
[this]:https://qiita.com/takahirocook/items/d251ec4693c68f6b9538
[Time]:https://qiita.com/takahirocook/items/9caef0bb2409caedba55
[this]:https://qiita.com/takahirocook/items/d251ec4693c68f6b9538
[web.xml]:https://qiita.com/takahirocook/items/d41a92bd36807d456f82
<!-- U -->
<!-- V -->
<!-- W -->
<!-- X -->
<!-- Y -->
<!-- Z -->

<!-- あ行 -->
[オブジェクト指向]:https://qiita.com/takahirocook/items/041ba7a096b71ab8ffd4
[継承]:https://qiita.com/takahirocook/items/6c84ea66a6e2ad536a37
[オーバーライド]:https://qiita.com/takahirocook/items/09dd8e5f56d6617ce45a
[オーバーロード]:https://qiita.com/takahirocook/items/b937c3c07126fe7e02a4
[インスタンス]:https://qiita.com/takahirocook/items/ec01cdcbb440cf0d1cc4
[インスタンス化]:https://qiita.com/takahirocook/items/ec01cdcbb440cf0d1cc4
[アクセス修飾子]:https://qiita.com/takahirocook/items/e51b0b9d37d95ad587fe
[インスタンス化]:https://qiita.com/takahirocook/items/cf527f85d17a5af86735
[インスタンス変数]:https://qiita.com/takahirocook/items/cf527f85d17a5af86735
[インターフェイス]:https://qiita.com/takahirocook/items/ca84be8dfef664b19194
[インターフェース]:https://qiita.com/takahirocook/items/ca84be8dfef664b19194
[インポート]:https://qiita.com/takahirocook/items/59a8a09cab6a98d3bca2
[インデックス]:https://qiita.com/takahirocook/items/16a123fb73b30869053b
<!-- か行 -->
[拡張for文]:https://qiita.com/takahirocook/items/470b2858de1a4f99b334
[クラスメソッド]:https://qiita.com/takahirocook/items/cf527f85d17a5af86735
[クラスフィールド]:https://qiita.com/takahirocook/items/cf527f85d17a5af86735
[クラス変数]:https://qiita.com/takahirocook/items/cf527f85d17a5af86735
[カプセル化]:https://qiita.com/takahirocook/items/e469a7c0539a0012868e
[クラス]:https://qiita.com/takahirocook/items/50cbbdca8e21539170e9
[コンストラクタ]:https://qiita.com/takahirocook/items/fa1822f2f22c3786593e
<!-- さ行 -->
[サーブレット]:https://qiita.com/takahirocook/items/1ee780d68fd859e43daf
[書式指定子]:https://qiita.com/takahirocook/items/06d525be63eccd99ed49
[静的メソッド]:https://qiita.com/takahirocook/items/cf527f85d17a5af86735
[静的変数]:https://qiita.com/takahirocook/items/cf527f85d17a5af86735
[静的メソッド]:https://qiita.com/takahirocook/items/cf527f85d17a5af86735
[スーパークラス]:https://qiita.com/takahirocook/items/75a07131e7e791c8442c
<!-- た行 -->
[定数]:https://qiita.com/takahirocook/items/5e0916d9bf28bcf68d0c
[抽象クラス]:https://qiita.com/takahirocook/items/9fa0e1cbb8a4dd4e1ff4
[抽象メソッド]:https://qiita.com/takahirocook/items/9fa0e1cbb8a4dd4e1ff4
[動的メソッド]:https://qiita.com/takahirocook/items/cf527f85d17a5af86735
<!-- な行 -->
[日時の文字列操作]:https://qiita.com/takahirocook/items/aa857c8f2153193095e4

<!-- は行 -->
[パッケージ]:https://qiita.com/takahirocook/items/39b58d17abcb159ef5c1
[引数]:https://qiita.com/takahirocook/items/5e5b0ba79e869f4a592e
[配列]:https://qiita.com/takahirocook/items/16a123fb73b30869053b
[配列操作]:https://qiita.com/takahirocook/items/16a123fb73b30869053b
[日付操作]:https://qiita.com/takahirocook/items/9caef0bb2409caedba55
[フィールド]:https://qiita.com/takahirocook/items/28df75a133049a74ece1
[フィールド変数]:https://qiita.com/takahirocook/items/28df75a133049a74ece1
[インスタンスフィールド]:https://qiita.com/takahirocook/items/cf527f85d17a5af86735
<!-- ま行 -->
[戻り値]:https://qiita.com/takahirocook/items/3b6fa670a1d6dd4a9386
[メソッド]:https://qiita.com/takahirocook/items/5bfe43576d87a2a4006c
[メソッドの呼び出し]:https://qiita.com/takahirocook/items/f4635915337303de338c
<!-- や行 -->
<!-- ら行 -->
<!-- わ行 -->