研修Servlet 04: JSP、インクリード、スコープ、EL式、JSTL

インクルード・・・JSPの中で行われることが多い。

 

2種類のインクルード

1.アクション(動的なインクルード)・・・依頼先の処理結果を依頼元に反映。

2.ディレクティブ(静的なインクルード)・・・依頼先のソースコードを依頼元に返し、依頼元で全ての処理をする。

 

アクションによるインクルード

 

<include_action.jsp>

<header.jsp>

 

ディレクティブによるインクルード

 

<include_directive.jsp>

<common.jsp>

JSPの構成要素

1. コア要素
JSPの文法のコアとなる要素。

宣言 <%! 〜 %> フィールドやメソッド
スクリプトレット <% 〜 %> 処理記述部分
<%= 〜 %> 出力する式
コメント <%– 〜 –%> コメント
EL式 ${ 〜 } ELを利用した記述

 

2.ディレクティブ
JSPからサーブレットへの変換時の設定やオプションを記述。

ディレクティブ <%@ 〜 %> JSP変換時のコマンド

 

3. アクション
JSPの実行時に呼び出されるJSPのタグ。

標準アクション 標準で利用できるアクション
カスタムアクション アクションのユーザー拡張

暗黙オブジェクト

定義はしていないが使えるオブジェクト。

オブジェクト名 説明
request クライアントからのリクエストを取得する
response クライアントへのレスポンスを設定する
out JSPの実行結果をクライアントへの出力する
pageContext JSPのオブジェクトを管理する
session セッション情報を管理する
application アプリケーションデータを管理する
page JSPページ自身を表す。「this」と同じ。
config JSPページのパラメータを設定する
exception 例外発生時のエラー情報を取得する

 

4つのスコープ

 
スコープ 変数の有効範囲
page JSPページ
request HTTPリクエスト
session HTTPセッション
application Webアプリケーション

*JSPだけ「pageスコープ」ある。

*pageスコープ・・・JSPの処理が完了するまで値を保存。

JSP上で宣言された変数は基本psgeスコープに保存

 

EL(Expression Language)式

JSP式を簡略可能(コードではEL式を基本利用する)。

*スコープの名前と一致するものを取得。

EL式のスコープを探す順:探す対象のし指定ない場合↓

1ページ → 2.リクエスト → 3.セッション → 4.アプリケーション

 

<記入例1:JSP式 → EL式>

 

<helo2.jsp>

 

JavaBeans:ある機能を一つにまとめたクラスのこと。

「getterメソッド」

 

「setterメソッド」

 

<User.java>:JavaBeans例

 

【集合や配列の要素へのアクセス】

配列、リスト、マップの要素へアクセス可能

*マップの要素・・・JavaのHashMapクラスを使用

*HashMap・・・(別名:連想配列)要素を格納する時に要素に対応するキーを合わせて登録

 

《配列やListの場合》

《Mapを扱う場合》

 

EL式での演算子

分類 演算子 説明
算術 + 加算
減算
* 乗算
/ (div) 除算
% (mod) 剰余
比較 == (eq) 等しい
!= (ne) 等しくない
< (lt) 小さい
> (gt) 大きい
<= (le) 以下
>= (ge) 以上
empty nullまたは空文字
論理 && (and) 集合積
|| (or) 集合和
! (not) 否定
3項 a ? b : c 「a」の場合は「b」、「a」以外の場合は「c」

※演算子の括弧内は、別名です。

 

【EL式の暗黙オブジェクト】

◆表1 EL式の暗黙オブジェクト
オブジェクト 説明
pageContext ページコンテキストオブジェクト
pageScope ページスコープのMap
requestScope リクエストスコープのMap
sessionScope セッションスコープのMap
applicationScope アプリケーションスコープのMap
param リクエストパラメータのMap
paramValue 複数の値を持つリクエストパラメータのMap
header ヘッダのMap
headerValue 複数の値を持つヘッダのMap
initParam 初期パラメータのMap
cookie クッキーの名前と値のMap

 

探すスコープの指定(上記の表内で「 ~Scope」と書かれているもの適用)

 

コンテキストパス取得

 

EL式の無効化

各ファイルに指定する場合

「web.xml」で全てのJSPに対して無効化設定

 

カスタムタグ・JSTL

JSTLの入手(下記2種類のファイル取得)

JSTLのダウンロードはこちら

1.jstl-api-1.2.jar  :JSTLのAPI

2.jstl-impl-1.2.jar :JSTLの実装

*Eclipseに実装する!「WebContent」→「WEB-INF」→「lib」にコピー。

 

 

カスタムタグの使用

 

JSTLで扱うCoreタグ

タグ 説明
<c:set> 変数をセットする
<c:remove> 変数を削除する
<c:out> 出力する
<c:if> 単一の条件分岐
<c:choose>
<c:when><c:otherwise>
複数の条件分岐
<c:forEach> 繰り返し(ループ)
<c:forTokens> 文字列を区切り文字で分割する
<c:import> ファイルをインポートする
<c:redirect> リダイレクトする
<c:url> URLを生成する。URLエンコードも行う。
<c:catch> 例外処理の定義
<c:param> パラメータを指定する

setタグ:スコープ変数(pageスコープの変数)に値を指定。

 

EL式ではsetタグで定義した変数名を取得できる

 

スコープの削除

 

【Ifタグ】・・・条件を満たす場合の処理しか指定できない。

【chooseタグ(whenタグ、otherwiseタグ)】・・・条件分岐の処理

 

【forEachタグ】・・・for文処理

 

関連記事

研修Servlet 01:サーブレットの基本、MVCモデル

研修Servlet 02: JSP

研修Servlet 03: JSP、入力パラメータ取得、フィルタ、ディスパッチ