【Java Web入門 #7】JSPを利用した動的な表示(2)|JSP標準アクションの利用
2025.01.24
前回の記事では、JSPで利用できる暗黙オブジェクトとJSPの最も基本的な構成要素(<% で始まるもの)について説明しました。今回の記事では、標準アクションと呼ばれるJSPの動的な表示に利用される構成要素について説明します。
◆Java Web入門の過去記事はこちら
◆Java入門 記事一覧はこちら
標準アクション
標準アクションとは
JSPの「アクション」とは、「JSPページから定義されたJavaコードの実行を呼び出すタグ」を指し、中でも最初からJSPの仕様として準備されているものを「標準アクション」と呼びます。
標準アクションでは、JSPの動的表示のために利用される頻度が高いオブジェクトの操作や、リソースの読み込み、リクエスト転送、さらにアクションを拡張するカスタムタグの操作などを行うためのタグが準備されています。
基本的な標準アクションの一覧
標準アクション | 説明 |
jsp:useBean | JSP内で利用するJavaBeansを指定する。 |
jsp:setProperty | JSP内で利用するJavaBeansのプロパティに値を設定する。 |
jsp:getProperty | JSP内で利用するJavaBeansのプロパティから値を取得する。 |
jsp:include | 同一Webアプリケーション内の別のリソース(JSP、静的ファイル、サーブレット等)をインクルードする。 |
jsp:element | JSPの出力にXML要素を追加する。 |
jsp:param | インクルードまたはフォワード先に対し、パラメータを指定する。 |
jsp:attribute | カスタムタグの要素に値を指定する。 |
jsp:body | 親要素であるアクションの内容を設定する。 親要素に対して jsp:attribute アクションで属性が設定されている場合にのみ利用。 |
jsp:doBody | (タグファイル内でのみ利用可) カスタムタグ利用時に、タグの内容(ボディ部)を出力する箇所を指定する。 |
jsp:invoke | (タグファイル内でのみ利用可) 指定されたフラグメントを評価し、カスタムタグの利用時に出力または変数への代入を行います。 |
jsp:forward | リクエストの転送を設定する。 |
jsp:plugin | Javaアプレットプラグインを埋め込む。(Java11以降使用されない) |
jsp:fallback | Javaプラグインが実行できない場合に表示する代替コンテンツを指定する。(Java11以降使用されない) |
jsp:params | Javaアプレットにパラメーターを引き渡す。(Java11以降使用されない) |
JavaBeansの利用
前々回の記事(【Java Web入門 #4】JSPを利用する)では、リクエストやセッションにsetAttributeすることで、サーブレットからJSPへ処理結果などの値を引き渡す方法を説明しました。
しかし、実際の業務アプリケーションなどでは、画面上には多くの項目を表示するため、ひとつひとつの情報に名前を付けてやり取りするのは非常に面倒になってきます。
こういった場合は、JavaBeansを利用することで、サーブレットでのデータの処理の形に合わせて、関連する情報をオブジェクトに取りまとめてJSPに引き渡すことができます。JSPでは、jsp:useBean アクションなどを利用することで、コードを簡潔に記述でき、可読性も高めることができます。
【系統ごとにデータをオブジェクトにまとめるイメージ】
jsp:useBean
jsp:useBean アクションは、JSP内で利用するJavaBeansオブジェクトを指定するために利用します。複数のJavaBeansを利用する場合は、異なるid属性を指定します。
属性 | 必須 | 説明 |
id | 〇 | 使用するJavaBeansオブジェクトのインスタンス名を指定する。 |
scope | JavaBeansオブジェクトのスコープ(有効範囲)を指定する。 page/request/session/applicationのいずれかを設定。 (省略した場合のデフォルトはpage) | |
class | ※1 | 使用するJavaBeansのクラス(実体クラス)を指定する。(※2) 抽象クラスやインターフェイスは指定できない。 |
type | ※1 | 使用するJavaBeansをJSP内で利用する際の「型」を指定する。(※2) 抽象クラスやインターフェイスも指定できる。 (ただし、インスタンスの実体クラスがその実装である必要あり) |
beanName | 使用するJavaBeansのクラスを指定する。(※2) 指定したスコープに同じidのインスタンスが見つからないときに、java.bean.Beansクラスのinstantiateメソッドを利用してインスタンスを作成したい場合にのみ利用される。 |
※2 完全修飾名(パッケージ名付きのクラス名/インターフェイス名)での指定が必要。
jsp:useBean で指定したJavaBeansは、別のJSPやサーブレットによって、指定したスコープ内に同じidで定義されていた場合はそのオブジェクトを利用します。これはサーブレットやスクリプトレットとも共通で利用できるインスタンスであり、そのスコープに対し、idの値をキーとしてsetAttribute/getAttributeメソッドで情報を保持/取得することができます。
例えば以下のように、サーブレットでリクエストスコープに「infobean」というキーで保持したJavaBeansに対して、JSPでは「id="infobean"」と指定することでアクセスできます。
// サーブレット
site.knovus.SampleBean bean = new site.knovus.SampleBean();
request.setAttribute("infobean", bean);
// JSP(jsp:useBean)では、上記のJavaBeansに以下でアクセスできる。
<jsp:useBean id="infobean" class="site.knovus.SampleBean" scope="request" />
または
<jsp:useBean id="infobean" type="site.knovus.SampleBean" scope="request" />
指定したスコープ内に同じidで保持されているJavaBeansが見つからない場合は、「class」「type」「beanName」の3つの属性の指定内容で動作が変わります。jsp:useBean アクションで指定可能な属性の組み合わせと、その場合の動作は以下の通りです。
beanName の指定状態 | class | type | 説明(スコープに見つからない場合の動作) |
beanName 指定なし | 〇 | - | ・新しくインスタンスを生成する ・クラス、型ともclassの設定値 |
(同上) | 〇 | 〇 | ・新しくインスタンスを生成する ・クラスはclassの設定値、型はtypeの設定値 |
(同上) | - | 〇 | ・インスタンスを生成しない |
beanName 指定あり | - | 〇 | ・新しくインスタンスを生成する ・クラスはbeanNameの設定値、型はtypeの設定値 |
この3つの属性については、特別な理由がなければ(特に学習中は)classのみ指定すれば基本的に問題ありません。不要なインスタンスを生成したくない場合はtypeのみ指定とすれば良いでしょう。
beanName 属性にの設定内容については、上記の説明の通り特殊な状況での利用となるため、当記事では詳細は割愛します。
jsp:setProperty
jsp:setProperty アクションは、JavaBeansオブジェクトのプロパティに値を設定するために利用します。設定する対象のJavaBeansは、useBeanアクションで指定した id 属性で指定する必要があります。値を設定するプロパティにはsetterメソッドが実装されている必要があります。
属性 | 必須 | 説明 |
name | 〇 | 対象のJavaBeansオブジェクト名を指定する。 |
property | 〇 | 値を設定するJavaBeansオブジェクトのプロパティ名を指定する。 「*」を指定した場合は、requestオブジェクトからパラメーターを全て読み取り、同じ名前のプロパティがあれば全て設定する。 |
value | ※ | プロパティに設定する値を指定する。式(<%= %>)やEL式の指定も可。 |
param | ※ | プロパティに設定する値を、リクエストオブジェクトから取得するためのパラメーター名。(request.getParameter メソッドで指定する名前) 指定した名前のパラメーターが送信されていない場合、nullで上書きはされない。 |
jsp:getProperty
jsp:getProperty アクションは、JavaBeansオブジェクトのプロパティを取得し、出力するために利用します。値を取得するプロパティにはgetterメソッドが実装されている必要があります。
属性 | 必須 | 説明 |
name | 〇 | 対象のJavaBeansオブジェクト名を指定する。 |
property | 〇 | 値を取得(出力)するJavaBeansオブジェクトのプロパティ名を指定する。 |
useBean/setProperty/getPropertyのサンプル
以下のサンプルコードでは、JavaBeansのクラスをJSP内で利用してリクエストパラメーターの値をセッションスコープに保持させて、ページ遷移後にも利用できるようにしています。
・利用するJavaBeansクラス(site.knovus.beans.UserInfo)
package site.knovus.beans;
import java.io.Serializable;
public class UserInfo implements Serializable{
private static final long serialVersionUID = 1L;
/* ユーザー名 userName */
private String userName;
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
/* 年齢 age */
private Integer age;
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
/* 現在のページ currentPage */
private String currentPage;
public String getCurrentPage() {
return currentPage;
}
public void setCurrentPage(String currentPage) {
this.currentPage = currentPage;
}
}
・リクエストパラメーターを受信するためのJSP
まず、JavaBeansのインスタンスを生成して、受信したリクエストパラメーターを格納して保存させるためのJSPを作成します。
<%@ page contentType="text/html; charset=UTF-8"%>
<%-- /* jsp:useBean アクションで、利用するJavaBeans「userInfo」を指定 */ --%>
<jsp:useBean id="userInfo" class="site.knovus.beans.UserInfo" scope="session" />
<%-- /* jsp:setProperty アクションで、JavaBeans「userInfo」のプロパティ「currentPage」に値を設定 */ --%>
<jsp:setProperty name="userInfo" property="currentPage" value="<%= request.getRequestURI() %>" />
<%
// リクエストパラメーター(userName・age)の値を取得
String reqUserName = request.getParameter("userName");
String reqAge = request.getParameter("age");
int intAge = 0;
boolean hasError = false;
// パラメーターの送信内容を確認
if(reqUserName == null || reqAge == null){
hasError = true;
}else{
try{
intAge = Integer.parseInt(reqAge);
}catch(Exception e){
hasError = true;
}
}
%>
<html>
<head>
<meta charset="UTF-8">
<title>JavaBeansの利用</title>
</head>
<body>
<% if(hasError){ %>
<p style="color:red;">ユーザー名(userName)と年齢(age・数値)を指定してください。</p>
<% }else{ %>
<p>ユーザー名:<%= reqUserName %></p>
<p>年齢:<%= reqAge %></p>
<%-- /* jsp:getProperty アクションで、JavaBeans「userInfo」のプロパティ「currentPage」の値を出力 */ --%>
<p>現在のページ:<jsp:getProperty name="userInfo" property="currentPage" /></p>
<a href="next.jsp">次のページで確認</a>
<%-- /* jsp:setProperty アクションで、JavaBeans「userInfo」のプロパティ2つに値を設定 */ --%>
<jsp:setProperty name="userInfo" property="userName" value="<%= reqUserName %>" />
<jsp:setProperty name="userInfo" property="age" value="<%= intAge %>" />
<% } %>
</body>
</html>
3行目ではjsp:useBeanアクションを用い、「userInfo」というidでJavaBeansの利用を指定しています。
<jsp:useBean id="userInfo" class="site.knovus.beans.UserInfo" scope="session" />
5行目、41行目、42行目では、setPropertyアクションで3つのプロパティに値を設定しています。対象のJavaBeansは name="userInfo" として指定しています。
*5行目
<jsp:setProperty name="userInfo" property="currentPage" value="<%= request.getRequestURI() %>" />
*41行目・42行目
<jsp:setProperty name="userInfo" property="userName" value="<%= reqUserName %>" />
<jsp:setProperty name="userInfo" property="age" value="<%= intAge %>" />
ここでは上記のコードを、usebean.jspという名前で保存しました。パラメーター「userName」と「age」をクエリストリングで指定して表示してみます。
http://localhost:8080/WebPractice/jsp/usebean.jsp?userName=Knovus&age=21
表示結果:
生成されたHTML:
・セッションからJavaBeansの情報を取り出して表示するJSP(next.jsp)
次に、上記のJSPから、「次のページで確認」のリンクで遷移する先のJSPを準備します。
このJSPページでは、前画面で「userInfo」のidでセッションに保持させたJavaBeansオブジェクトを取り出して利用することができます。
<%@ page contentType="text/html; charset=UTF-8"%>
<%-- /* jsp:useBean アクションで、利用するJavaBeansを指定 */ --%>
<jsp:useBean id="userInfo" class="site.knovus.beans.UserInfo" scope="session" />
<%-- /* jsp:setProperty アクションで、JavaBeans「userInfo」のプロパティ「currentPage」に値を設定 */ --%>
<jsp:setProperty name="userInfo" property="currentPage" value="<%= request.getRequestURI() %>" />
<html>
<head>
<meta charset="UTF-8">
<title>JavaBeansの利用2</title>
</head>
<body>
<%-- /* jsp:getProperty アクションで、JavaBeans「userInfo」の各プロパティ値を出力 */ --%>
<p>前画面から引き渡されたJavaBeans(userInfo)の値</p>
<p>userInfo.userName:<jsp:getProperty name="userInfo" property="userName" /></p>
<p>userInfo.age:<jsp:getProperty name="userInfo" property="age" /></p>
<hr/>
<p>当画面でJavaBeans(userInfo)に再設定した値</p>
<p>userInfo.currentPage:<jsp:getProperty name="userInfo" property="currentPage" /></p>
</body>
</html>
前画面(usebean.jsp)と同じように、3行目で利用するJavaBeansオブジェクトを指定しています。前画面で既に同じ名前(id)でJavaBeansのインスタンスを生成し、セッションスコープに保持しているため、ここではインスタンスを生成せずに、セッションスコープ上のインスタンスを利用します。
<jsp:useBean id="userInfo" class="site.knovus.beans.UserInfo" scope="session" />
5行目では、「currentPage」プロパティを、現在のURI(/WebPractice/jsp/next.jsp)の値で上書きしています。
<jsp:setProperty name="userInfo" property="currentPage" value="<%= request.getRequestURI() %>" />
14行目、15行目、18行目では、jsp:getPropertyアクションでJavaBeansオブジェクトに保持されたプロパティ値を出力しています。
*14行目~15行目
<p>userInfo.userName:<jsp:getProperty name="userInfo" property="userName" /></p>
<p>userInfo.age:<jsp:getProperty name="userInfo" property="age" /></p>
*18行目
<p>userInfo.currentPage:<jsp:getProperty name="userInfo" property="currentPage" /></p>
前画面の「次のページで確認」をクリックしてこの画面を表示した結果は以下の通りです。
前画面で保存したパラメーターの情報が、JavaBeansオブジェクト を介して引き渡されていることがわかります。
表示結果:
生成されたHTML:
要素の追加
jsp:include
jsp:include アクションは、JSPページにHTMLや他のJSPページなどのリソースをインクルードするために利用します。インクルードする対象は、同じWebアプリケーション上のリソースである必要があります。
属性 | 必須 | 説明 |
page | 〇 | インクルードするリソースのURIを指定する。 |
flush | インクルード後に、JSPの出力バッファをフラッシュするかどうかを指定する。 省略した場合のデフォルト値は「false」(フラッシュしない)。 |
動的なJSPやサーブレットをインクルードした場合は、それらの実行結果が出力されます。includeディレクティブではJSPからサーブレットへの変換時に組み込まれる(静的組み込み)のに対して、jsp:include アクションではページへのアクセス時に組み込まれる(動的組み込み)という違いがあります。
下記のサンプルコードでは、JSPファイル「include.jsp」、HTMLファイル「include.html」、サーブレット「IncludeServlet」の3つをインクルードして出力しています。
<%@ page contentType="text/html; charset=UTF-8"%>
<html>
<head>
<meta charset="UTF-8">
<title>jsp:includeアクションの動作</title>
</head>
<body>
<div style="background-color:#e8e8ff; ">
<jsp:include page="include.jsp" />
</div>
<hr/>
<div style="background-color:#ffe8e8; ">
<jsp:include page="../html/include.html" />
</div>
<hr/>
<div style="background-color:#e8ffe8; ">
<jsp:include page="../IncludeServlet" />
</div>
</body>
</html>
インクルードした各リソースのコードは以下の通りです。
・include.jsp
<%@ page contentType="text/html; charset=UTF-8"
import="java.util.Date, java.text.SimpleDateFormat"%>
<%
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String datetimeStr = df.format(new Date());
%>
<p>現在日時は <%= datetimeStr %> です。</p>
・include.html
<p>これはHTMLファイルです。</p>
<p>拡張子は「.html」です。</p>
・IncludeServlet.java
package site.knovus.example;
import java.io.IOException;
import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
public class IncludeServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String content = "<p>これはサーブレット(IncludeServlet)からの出力です。</p>";
response.getWriter().append(content);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
これら3つのリソースをインクルードしたJSPの表示結果と、生成されるHTMLのコードは以下の通りとなります。
表示結果:
生成されたHTML:
jsp:element
jsp:element アクションは、XML 要素を動的に作成し、それを応答に追加します。HTMLを生成する通常のWebアプリケーションではあまり利用されませんが、XML要素として生成したコンテンツをHTML上に出力することもできます。
属性 | 必須 | 説明 |
name | 〇 | 追加するXML要素の名前を指定する。 |
jsp:element アクションは、子要素として jsp:attribute アクションおよび jsp:body アクションを持つことができます。
子要素の jsp:attribute アクションは、jsp:element アクションで追加する要素の属性を設定します(複数設定可)。子要素の jsp:body アクションは jsp:element アクションで追加する要素の値を設定します。
以下のサンプルコードでは、子要素のjsp:bodyタグの子要素として、さらにjsp:elementタグを追加しています。このように、jsp:elementタグを利用して階層を持つXML要素を追加することも可能です。
<%@ page contentType="text/html; charset=UTF-8" %>
<html>
<head>
<meta charset="UTF-8">
<title>jsp:elementアクションの動作</title>
</head>
<body>
<jsp:element name="div" >
<jsp:attribute name="id">content</jsp:attribute>
<jsp:attribute name="style">
font-weight:bold;
width:50%;
height:50%;
display: grid;
place-items: center;
background: yellow;
</jsp:attribute>
<jsp:body>
<jsp:element name="a" >
<jsp:attribute name="id">blanklink</jsp:attribute>
<jsp:attribute name="href">about:blank</jsp:attribute>
<jsp:attribute name="target">_blank</jsp:attribute>
<jsp:body>空白の新しいタブを表示</jsp:body>
</jsp:element>
</jsp:body>
</jsp:element>
</body>
</html>
このJSPの表示結果と、生成されるHTMLのコードは以下の通りです。『id="content"のdiv要素』の子要素として、『id="blanklink"のa要素』が追加されているのがわかります。
表示結果:
生成されたHTML:
転送
jsp:forward
jsp:forward アクションは、JSPページからリクエストの転送を行うために利用します。転送先は同じWebアプリケーション上のURIである必要があります。
属性 | 必須 | 説明 |
page | 〇 | リクエストを転送する先のURIを指定する。 |
forward アクションを利用してリクエストを転送する場合、転送の前にクライアントへの出力を行ってはいけません。
下記のサンプルソースでは、 jsp:forward タグではクライアントに対して何も出力していないため、指定したURLにリクエストが転送されます。
<jsp:forward page="usebean.jsp?userName=fwd&age=10" />
<%-- /* JSPファイルの先頭で転送を呼び出し */ --%>
実行結果:
対して下記のサンプルソースでは、1行目のpageディレクティブで「buffer="none"」と指定したため、jsp:forward タグよりも前のコンテンツ部分がクライアントへ即座に出力されてしまい、Webブラウザ上では jsp:forward アクションによる転送がされません。
<%@ page contentType="text/html; charset=UTF-8" buffer="none" %>
<html>
<head>
<meta charset="UTF-8">
<title>jsp:forwardアクションの動作</title>
</head>
<body>
<%-- /* ページを転送 */ --%>
<jsp:forward page="usebean.jsp?userName=fwd&age=10" />
</body>
</html>
途中までクライアント(Webブラウザ)へ出力されたHTMLコード:
親要素への挿入
jsp:param
jsp:param タグは、jsp:include アクションでの読み込み先や、jsp:forward アクションでの転送先に送信するリクエストオブジェクトに、パラメーターを追加するために利用します。
属性 | 必須 | 説明 |
name | 〇 | 設定するパラメーターの名前を指定する。 |
value | 〇 | 設定するパラメーターの値を指定する。 |
jsp:param で追加したパラメーターは、インクルード先または転送先で、request.getParameter メソッドで取得できるリクエストパラメーターとして受信されます。
またこの時、リクエストオブジェクトに同じ名前のパラメーターが既に設定されていた場合、jsp:param で設定した値で上書きされることに注意してください。
下記のサンプルソースでは、useBeanアクションの説明で利用した「usebean.jsp」に対して、「userName」「age」の2つのパラメーターを追加して転送しています。
<%@ page contentType="text/html; charset=UTF-8"%>
<html>
<head>
<meta charset="UTF-8">
<title>jsp:forwardアクションの動作</title>
</head>
<body>
<%-- /* ページを転送 */ --%>
<jsp:forward page="usebean.jsp">
<jsp:param name="userName" value="Forwarded" />
<jsp:param name="age" value="0" />
</jsp:forward>
</body>
</html>
このJSPの表示結果は以下の通りです。指定したパラメーターが転送先の「usebean.jsp」に引き渡されていることがわかります。
jsp:attribute
jsp:attribute アクションは、親要素であるアクションに対して属性を挿入するために利用します。
属性 | 必須 | 説明 |
name | 〇 | 親要素に追加する属性の名前を指定する。 |
jsp:attribute アクションによって属性を挿入できる対象(親要素)は、JSPの標準アクションまたはカスタムタグのみです。<a>などのHTMLタグの子要素として挿入しても、属性を追加することはできません。(実行時エラーとなります)
下記のサンプルコードは jsp:useBean アクションの記述例です。この要素には「id」「class」「scope」の3つの属性が設定してあります。
<jsp:useBean id="userInfo" class="site.knovus.beans.UserInfo" scope="session" />
jsp:attributeタグを用いる場合、属性の設定を以下のように置き換えて記述できます。
<jsp:useBean>
<jsp:attribute name="id">userInfo</jsp:attribute>
<jsp:attribute name="class">site.knovus.beans.UserInfo</jsp:attribute>
<jsp:attribute name="scope">session</jsp:attribute>
</jsp:useBean>
jsp:body
jsp:body アクションは、親要素の内容を設定するために利用します。jsp:body アクションの内容には式およびEL式を設定することも可能です。
このアクションは、jsp:attribute アクションを利用して親要素に属性を追加した場合に、親要素の内容と jsp:attribute アクションを判別するために利用されます。例えば、以下のようなHTMLを出力するとします。
<div style="background: yellow;">
この行が要素の内容
</div>
このdiv要素の内容は2行目の「この行が要素の内容」の部分です。これを jsp:element アクションで出力する場合、style属性を追加するために jsp:attribute アクションを子要素として追加しています。
このとき「この行が要素の内容」の部分は、jsp:body アクションを利用して追加する必要があります。
<jsp:element name="div">
<jsp:attribute name="style">background: yellow;</jsp:attribute>
<jsp:body>
この行が要素の内容
</jsp:body>
</jsp:element>
追加するdiv要素に属性を追加する必要がない場合は、以下のように jsp:body アクションを利用せず直接 jsp:elementアクションに対して内容を設定できます。
<jsp:element name="div">
この行が要素の内容
</jsp:element>
カスタムタグの操作
jsp:doBody アクションと jsp:invoke アクションは、JSPファイル内ではなく、カスタムタグの作成時にタグファイル(カスタムタグによる出力を定義するためのファイル)で利用します。
これらのアクションの詳細については、次回以降カスタムタグの利用についての記事で説明しますので、ここでは概要と属性の説明にとどめます。
jsp:doBody
jsp:doBody アクションは、カスタムタグを作成する際にタグファイル内で利用します。JSPファイルでこのアクションを含むカスタムタグを利用する際に、jsp:doBody の指定内容に応じた出力がなされます。出力はページへの出力のほかに、変数の値として保持することもできます。
属性 | 必須 | 説明 |
scope | 変数に出力する際のスコープを指定する。 省略した場合のデフォルト値は「page」。 | |
var | 出力を値として保持する変数名を指定する。 varReaderを指定した場合は指定不可。 | |
varReader | 出力を値として保持するjava.io.Readerオブジェクトの変数を指定する。 varを指定した場合は指定不可。 |
jsp:invoke
jsp:invoke アクションは、タグファイル内で利用します。JSPファイルでこのアクションを含むカスタムタグを利用する際に指定したフラグメントを評価し、指定内容に応じた出力がなされます。jsp:doBody アクションと同様に、ページへの出力または変数の値として保持することができます。
属性 | 必須 | 説明 |
name | 〇 | 評価するフラグメントの名前を指定する。 |
scope | 変数に出力する際のスコープを指定する。 省略した場合のデフォルト値は「page」。 | |
var | 出力を値として保持する変数名を指定する。 varReaderを指定した場合は指定不可。 | |
varReader | 出力を値として保持するjava.io.Readerオブジェクトの変数を指定する。 varを指定した場合は指定不可。 |
(Java11以降)実質利用されないもの
以下の2つのアクションは、Javaアプレットプラグインの利用時に使われるタグですが、Javaアプレット自体がJava11以降では廃止されています。(Java 8 上のjavaアプレットのサポートも2019年3月に終了しています)
※参考(Oracle社HP):Java SE 8 の Java Plugin サポートの終了について
このため、ここではプラグインの簡単な内容のみ説明しますが、今後は実質的に利用されないアクションであることにご注意ください。
jsp:plugin
jsp:plugin アクションは、Java アプレットプラグインを埋め込むために利用されます。かつて主要Webブラウザであった、Internet Explorer と Netscape ではプラグイン利用時のHTMLタグが異なっていたため、ブラウザを判別して、適したHTMLタグを出力するアクションとして利用されていました。
jsp:fallback
jsp:fallback アクションは、Webブラウザ上で Java プラグインが実行できない場合に表示する、代替コンテンツを指定するために利用されます。jsp:plugin タグの内部でのみ利用可能なため、こちらも今後は利用されることはないと思われます。
jsp:params
jsp:params アクションは、jsp:pluginアクションに実行時パラメーターを指定するために利用され、子要素に jsp:param アクションを設定します。これも Java プラグインが廃止されているため、今後利用されることはないと思われます。
いかがでしたでしょうか?Webアプリケーションの開発では、JSPの標準アクションのうちでも jsp:useBean アクションの利用頻度は特に高いと思いますので、まずはそこからマスターしてみるのが良いでしょう。
次回の記事では、JSP上で値の出力に多く利用されるEL式について説明します。それ以外にも、JSPの標準タグ(JSTL)や、カスタムタグの作成・利用方法など、JSPを便利に利用するための機能について引き続き説明していきたいと思います。