Javaに関する様々な情報をご紹介します。

5beanタグライブラリ

Javaに関する様々な情報をご紹介します。

beanタグライブラリ

ここでは、Strutsで用意されているカスタムタグライブラリのうち、beanタグライブラリについて解説します。beanタグライブラリにはBeanのプロパティ、変数、cookie、ヘッダ情報、パラメータ情報などを取得するタグ、取得した情報を表示するタグなどが定義されています。

実行環境
  • ・WindowsXP Home Edition
  • ・J2SDK 1.4.2_04
  • ・Tomcat 5.0.18
  • ・Struts 1.2.4

使用例

ヘッダ情報、パラメータ情報を取得し、表示するプログラムを作成します。

作成ファイル一覧

ファイル名 内容
exBean.jsp ヘッダ情報、パラメータ情報を取得する処理をbeanタグライブラリで作成します。
exBean2.jsp アクション・フォームBeanに保存されたヘッダ情報、パラメータ情報を取得し、表示する処理をbeanタグライブラリで作成します。
BeanRegistrationForm.java 入力された値を保持するアクション・フォームBeanです。
BeanRegistrationAction.java アクション・クラスです。遷移先のファイルとして、exBean2.jspを指定します。
application.properties <bean:message>タグで表示するメッセージが記載されたメッセージ・リソースファイルです。
struts-config.xml Strutsプログラムの定義ファイルです。

【exBean.jsp】beanタグライブラリを使用して、ヘッダ情報、パラメータ情報を取得し、表示するプログラムです。

<%@ page contentType="text/html; charset=Shift_JIS" %>
<%-- (1)タグライブラリの指定 --%>
<%@ taglib uri="/tags/struts-html" prefix="html" %>
<%@ taglib uri="/tags/struts-bean" prefix="bean" %>

<html:html>
<head><title>beanタグライブラリ</title></head>
<body>
<%-- (2)<bean:header>タグの使用 --%>
<bean:header id="param1" name="user-agent" value="no-header" />
<%-- (3)<bean:parameter>タグの使用 --%>
<bean:parameter id="param2" name="name" value="no-name" />
beanタグライブラリ サンプル1
<html:form action="/BeanRegistration">

<%-- (4)ヘッダ情報、パラメータ情報の表示 --%>
<%= param1 %>
<br><br>
<%= param2 %>
<br><br>
<%-- (5)取得情報の送信 --%>
<html:hidden property="ua" value="<%= param1 %>" />
<html:hidden property="name" value="<%= param2 %>" />
<html:submit property="submit" value="送信"/>

</html:form>

</body>
</html:html>
  1. (1)taglibディレクティブで使用するタグライブラリを指定します。
  2. (2)<bean:header>タグを使用します。HTTPヘッダの情報を取得します。id属性に取得した値を代入する変数を指定します。name属性に取得するヘッダ名を指定します。value属性には、指定したヘッダ情報がない場合に取得される値を指定します。ヘッダ情報がなくvalue属性が指定されていない場合には例外が生成されます。
  3. (3)<bean:parameter>タグを使用します。リクエストパラメータの値を取得します。id属性に取得した値を代入する変数を指定します。name属性に取得するパラメータ名を指定します。value属性には、指定したパラメータ情報がない場合に取得される値を指定します。パラメータ情報がなくvalue属性が指定されていない場合には例外が生成されます。
  4. (4)変数param1、param2に代入されている値を表示します。
  5. (5)<html:form>タグ、<html:hidden>タグなどを使用し、取得した値をアクション・フォームBeanに送信します。

【exBean2.jsp】beanタグライブラリを使用し、アクション・フォームBeanに保存された情報を取得し、表示するプログラムです。また、メッセージ・リソースファイルから情報を取得し、表示を行います。

<%@ page contentType="text/html; charset=Shift_JIS" %>
<%-- (1)タグライブラリの指定 --%>
<%@ taglib uri="/tags/struts-html" prefix="html" %>
<%@ taglib uri="/tags/struts-bean" prefix="bean" %>

<html:html>
<head><title>beanタグライブラリ</title></head>
<body>

beanタグライブラリ サンプル1
<br><br>
<%-- (2)<bean:message>タグの使用 --%>
<bean:message key="title.msg" arg0="bean" />
<br><br>
<%-- (3)<bean:write>タグの使用 --%>
<bean:write name="BeanRegistrationForm" property="ua"
scope="request" ignore="true" />
<bean:write name="BeanRegistrationForm" property="name"
scope="request" ignore="true" />

</body>
</html:html>
  1. (1)taglibディレクティブで使用するタグライブラリを指定します。
  2. (2)<bean:message>タグを使用します。メッセージ・リソースファイル内のメッセージを表示します。key属性には、メッセージ・リソースファイル内の表示したいメッセージのkeyを指定します。arg0属性にはメッセージに代入したい値を指定します。arg属性はarg0~arg4まで最大5つ指定できます。メッセージ・リソースファイル内では代入したい箇所を{0}~{4}で指定します。
  3. (3)<bean:write>タグを使用します。<bean:write>タグは指定した条件に合致する値を表示します。name属性でアクションフォーム・Beanを指定します。property属性でアクションフォーム・Bean内の該当するプロパティ名を指定します。scope属性でプロパティ値のスコープを指定します。ignore属性をtrueにすると、プロパティ値が存在しない場合、<bean:write>タグは何の動作も行いません。

【BeanRegistrationForm.java】exBean.jspで取得した値を保存し、値を取得するメソッドを提供するアクション・フォームBeanを作成します。

package struts;

import org.apache.struts.action.*;

//(1)BeanRegistrationFormクラスの宣言
public final class BeanRegistrationForm extends ActionForm {
    //(2)プロパティ値を保持する変数の宣言
    private String ua;
    private String name;

    //(3)プロパティ値のアクセスメソッドの宣言
    public void setUa(String ua) {this.ua = ua;}
    public String getUa() {return ua;}
    public void setName(String name) {this.name = name;}
    public String getName() {return name;}

}
  1. (1)ActionFormクラスをスーパークラスとして、BeanRegistrationFormクラスを宣言します。
  2. (2)exBean.jspで取得した値を保存する変数を宣言します。
  3. (3)プロパティ値のアクセスメソッドを宣言します。setXxxメソッドでプロパティ値を保存します。getXxxメソッドでメソッドが呼ばれたとき、プロパティ値を返します。

【BeanRegistrationAction.java】今回のアクション・クラスでは特に何の処理も行わず、exBean2.jspを呼び出します。

package struts;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import javax.servlet.ServletContext;
import org.apache.struts.action.*;

//(1)BeanRegistrationActionクラスの宣言
public final class BeanRegistrationAction extends Action {
    public ActionForward execute(ActionMapping mapping,
            ActionForm form,
            HttpServletRequest req,
            HttpServletResponse res) {

        //(2)exBean2.jspの呼び出し
        return (mapping.findForward("success"));
    }
}
  1. (1)Actionクラスをスーパークラスとして、BeanRegistrationActionクラスを宣言します。
  2. (2)findForwardメソッドを使用して、exBean2.jspを呼び出します。"success"とexBean2.jspのマッピングはstruts-config.xmlに定義します。

【application.properties】<bean:message>タグで表示するメッセージ・リソースファイルのメッセージを記載します。メッセージは日本語(タグライブラリ実行結果)を表示させるために、native2asciiコマンドで日本語をASCIIコードに変換しています。{0}には、<bean:messages>タグのarg0属性で指定された値が入ります。

title.msg={0}\u30bf\u30b0\u30e9\u30a4\u30d6\u30e9\u30ea\u5b9f\u884c\u7d50\u679c

【struts-config.xml】

<?xml version="1.0" encoding="Shift_JIS"?>
<!DOCTYPE struts-config PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN"
    "http://struts.apache.org/dtds/struts-config_1_2.dtd">

<struts-config>

    <!-- (1)アクション・フォームBeanの指定 -->
    <form-beans>
        <form-bean
                    name="BeanRegistrationForm"
                    type="struts.BeanRegistrationForm"/>
    </form-beans>

    <!-- (2)アクション・クラスの振る舞いを指定 -->
    <action-mappings>
        <action path="/BeanRegistration"
                    type="struts.BeanRegistrationAction"
                    name="BeanRegistrationForm"
                    scope="request">
            <!-- (3)アクション・クラス実行後の遷移先を指定 -->
            <forward name="success" path="/exBean2.jsp"/>
        </action>
    </action-mappings>

    <!-- (4)メッセージ・リソースファイルを指定 -->
    <message-resources parameter="resources.application"/>

</struts-config>
  1. (1)<form-beans>タグでアクション・フォームBeanを指定します。
  2. (2)<action-mappings>タグでアクション・クラス、関連するアクション・フォームBeanを指定します。
  3. (3)<forward>タグでアクション・クラス実行後に返された値"success"に合致する遷移先(exBean2.jsp)を指定します。
  4. (4)<message-resources>タグでメッセージ・リソースファイルの設置場所を指定します。メッセージ・リソースファイルの拡張子は記述しません。

【実行結果】Strutsの実行方法に関してはJavaの道:Struts(基本操作)を参照してください。以下のURLでアクセスするとuser-agentヘッダ情報と、パラメータnameの値aiueoが取得されているのが確認できます。

URL:http://localhost:8080/SExam/exBean.jsp?name=aiueo

Struts実行結果_1
Struts実行結果_2

beanタグライブラリ一覧

beanタグライブラリで定義されているタグの一覧です。詳細な使用方法に関しては、以下のJakarta Projectのドキュメントをご参照ください。
Strutsドキュメント(beanタグライブラリ):http://struts.apache.org/userGuide/struts-bean.html

タグ 内容
cookie cookieの値を取得します。
define 指定されたBeanプロパティ、変数の値を取得します。
header HTTPヘッダの値を取得します。
include 属性に指定したファイル(HTML、Servlet、JSPなど)の実行結果を取得します。
message メッセージ・リソースファイル内のメッセージを取得し、表示します。
page 属性に指定したJSPの暗黙オブジェクトを取得します。暗黙オブジェクトはresponse、request、session、application、configのいずれかを指定できます。
parameter リクエストパラメータの値を取得します。
resource Webアプリケーション内のファイルの内容を取得します。ファイル名は/から指定する必要があります。
size 配列、コレクションの要素数を取得します。
struts Struts内の設定オブジェクトを取得します。ActionFormBean、ActionForward、ActionMappingのオブジェクトを指定できます。
write 指定したBeanプロパティ、変数の値を取得し、表示します。

5beanタグライブラリ