検索

キーワード


【Java】JSPのアクションタグ

  • 公開日:2020-10-21 16:32:14
  • 最終更新日:2020-11-13 21:49:38
【Java】JSPのアクションタグ

こんにちは。エンジニアの新田です!

ここでは、システムエンジニアとして働いている私が、システム開発手法や開発言語について紹介していこうと思います。

今回は、JSPのアクションタグについて紹介します。

Javaについて勉強している方、Webアプリケーションを構築したいと思っている方の参考になれば幸いです!

関連記事:【Java】JSPの基本的な構文


アクションタグとは?

アクションタグは、Javaの処理をタグ形式で記述できるようにしたものです。(タグを解釈する裏側では、Javaのコードが実行されているという事になります。)

JSPページの中に直接Javaのコードを記述するとJSPページの可読性が悪くなる場合があります。そこで外部のJavaコードを呼び出すためのタグを設定しておき、JSPページ内ではタグを記述するだけで利用できるようになっています。

このタグを使うことによってJavaの知識がないWEBデザイナーでも、JSPページ内にタグを記述するだけでJavaの処理を埋め込むことができるようになります。

アクションタグには標準で用意されている標準アクションと、自分で定義できるカスタムタグがあります。

今回は標準アクションについて紹介します。


標準アクション


jsp:useBean

JavaBeansのインスタンス化とスコープへの登録を行い、JSPページから使用可能にします。

(JavaBeansについてはこちらの記事を参照)

同一スコープに同一のJavaBeansが既に登録されている場合は、インスタンスを生成せずに再利用します。(同じJavaBeansでも scopeが違う場合は、別なオブジェクトとして新たに生成される)

<<属性値>>

useBean説明

※「beanName」、「class」 のいずれかを必ず指定する必要がある。

【使用例】

<jsp:useBean id="expertSe" class="jp.co.forwardsoft.bean.engineer" scope="session" />
<%=
expertSe.getName() %>



jsp:setProperty

<jsp:useBean>で生成したJavaBeansインスタンスのプロパティに値を設定します。

プロパティに値を設定するためには、該当JavaBeansインスタンスに対象プロパティの「setter」メソッドが用意されている必要があります。

<<属性値>>

setProperty属性値

※「property」が「*」でない場合は、「param」か「value」のいずれかを設定する必要がある。

【使用例】

<jsp:setProperty name="expertSe" property="name" value="佐藤" />
<jsp:setProperty name="expertSe" property="gender" value="<%= gender %>" />
<jsp:setProperty name="expertSe" property="age" param="age" />



jsp:getProperty

<jsp:useBean>で生成したJavaBeansのプロパティ値を取得します。

プロパティ値を取得するためには、該当JavaBeansインスタンスに対象プロパティの「getter」メソッドが用意されている必要があります。

<<属性値>>

getProperty属性

【使用例】

<jsp:getProperty name="expertSe" property="name" />
<%=
expertSe.getName() %>



jsp:include

指定されたURLに動的にリクエストを転送し、出力結果をJSPページに取り込みます。

<<属性値>>

include属性

【使用例】

<jsp:include page="includePage.jsp" />


includeアクションとincludeディレクティブの違い

includeアクションは、includeディレクティブとほぼ同じ機能を持っています。

ただし、includeディレクティブはインクルードファイルの変更は認識されないが、includeアクションはページ表示時に常にインクルードファイルが実行されるため、その都度変更が反映されます。

includeアクション

  • リソース(インクルードファイル)に対し、リクエストを転送する(=ひとつのリクエストで複数のJSPが処理される)。
  • 各リソース(インクルードファイル)がそれぞれ処理され出力が行われる。
  • リクエスト(ページ表示)のたびに実行されるので、変更はその都度反映される。(ファイルに変更があれば、インスタンスが生成し直される)

includeディレクティブ

  • JSPサーブレットソースへの変換時にインクルードファイルの内容を取り込み、変換・コンパイル・実行する。
  • インクルードする側を変更しない限り、基本的には変更は反映されない。(インクルードファイルを変更しても自動的に即時反映はされない)



jsp:forward

現在のリクエストを他のページに転送します。リクエストおよびレスポンスの情報を転送し、出力は転送先で行われます。

includeの場合は、元のJSPに結果が差し込まれますが、forwardは転送先の出力結果のみが表示されます。(元のJSPの出力結果は無視される)

<<属性値>>

forward属性

【使用例】

<jsp:forward page="forwardPage.jsp" />



jsp:param

include、forwardアクションと組み合わせて(子要素として)使用することで、リクエストパラメータを設定することができます。

設定されたパラメータは、リクエストオブジェクトに格納されて送信されます。(request.getParameter で取得可能)

※クエリ情報と同名のパラメータを渡した場合はparam アクションタグの値が優先されます。

<<属性値>>

param属性値

【使用例】

<jsp:includ page="includePage.jsp">
    <jsp:param name="name" value="インクルード" />
</jsp:include>

<jsp:forward page="forwardPage.jsp">
    <jsp:param name="name" value="フォワード" />
</jsp:forward>



jsp:plugin

Javaプラグインを埋め込むためのタグを出力します。(Javaプラグインを実行するHTMLを生成します)

クライアント環境(ブラウザ)によりJavaプラグインを埋め込むためのタグが異なる場合があるため、自動的にクライアント環境を判別し、その環境に適したタグを出力します。

<<属性値>>

plugin属性値

【使用例】

<jsp:plugin type="applet" code="jp.co.forwardsoft.plugin.TestApplet">
<jsp:params> <jsp:param name="type" value="test"/> </jsp:params> <jsp:fallback>プラグインの起動に失敗しました。</jsp:fallback> </jsp:plugin>



jsp:params

<jsp:plugin>タグで、プラグインにプラグインにパラメータを引き渡すために使用する

使用例は、<jsp:plugin>を参照してください。



jsp:fallback

<jsp:plugin>タグで、プラグインが起動できなかった場合に表示するコンテンツを指定します。

使用例は、<jsp:plugin>を参照してください。






関連記事:【Java】JSPの基本的な構文




【著者】

新田

JavaメインのWebアプリケーション開発に多く携わっています。
Javaの基本的な部分の紹介や、これまで経験したシステム開発手法、新しい技術についても紹介していこうと思います。

よく読まれている記事
【Java】JSPでタグライブラリを使う(JSTL)

【Java】JSPでタグライブラリを使う(JSTL)

こんにちは。エンジニアの新田です!ここでは、システムエンジニアとして働いている私が、システム開発手法や開発言語について紹介していこうと思います。今回は、JSPの標準タグライブラリ「JSTL」について紹介します。Javaについて勉強している方、Webアプリケーションを構築したいと思っている方の参考になれば幸いです!関連記事リンク: 【Java】JSPの基本的な構文/【Java】JSPのアクションタグ

【Java】Stringクラス文字列を操作するメソッドの使い方まとめ!実例も紹介!

【Java】Stringクラス文字列を操作するメソッドの使い方まとめ!実例も紹介!

こんにちは。新人エンジニアのサトウです。システムエンジニアとして駆け出したばかりですが、初心者なりの視点でわかりやすい記事を心がけていますので参考になればうれしいです。プログラム初心者✅にも、プログラムに興味がある人✨も、短い時間で簡単にできますのでぜひこの記事を読んで試してみてください!そもそもStringとは何?『 String 』... Java言語において文字列のデータ型を指します。基本デ

【Java】文字列の置き換え(String#format)!エスケープシーケンスのまとめも!!

【Java】文字列の置き換え(String#format)!エスケープシーケンスのまとめも!!

こんにちは。新人エンジニアのサトウです。システムエンジニアとして駆け出したばかりですが、初心者なりの視点でわかりやすい記事を心がけていますので参考になればうれしいです。プログラム初心者✅にも、プログラムに興味がある人✨も、短い時間で簡単にできますのでぜひこの記事を読んで試してみてください!Stringクラスformatメソッドの文字列整形【java.utilパッケージ】Formatterクラスfo

【Java】文字列格納後に変更可能!?StringBufferクラスとStringBuilderクラス!

【Java】文字列格納後に変更可能!?StringBufferクラスとStringBuilderクラス!

こんにちは。新人エンジニアのサトウです。システムエンジニアとして駆け出したばかりですが、初心者なりの視点でわかりやすい記事を心がけていますので参考になればうれしいです。プログラム初心者にも✅、プログラムに興味がある人✨も、短い時間で簡単にできますのでぜひこの記事を読んで試してみてください!文字列を扱う3つのクラス【java.langパッケージ】java.langパッケージの文字列を扱うクラスにはS

【Java】値?変数?型??しっかり解説!『データ型(プリミティブ型と参照型)』

【Java】値?変数?型??しっかり解説!『データ型(プリミティブ型と参照型)』

こんにちは。新人エンジニアのサトウです。システムエンジニアとして駆け出したばかりですが、初心者なりの視点でわかりやすい記事を心がけていますので参考になればうれしいです。プログラム初心者✅にも、プログラムに興味がある人✨も、短い時間で簡単にできますのでぜひこの記事を読んで試してみてください!プリミティブ型と参照型プログラム開発では型を持った変数を使ってデータのやり取りをしますが、データ型によって仕様