Javaの道 Javaに関する
 ニュースJava基本Servlet・JSPオープンソースFAQ掲示板
Javaの道 > オープンソース > Struts −5.beanタグライブラリ
更新日:2006/6/4
Struts−5.beanタグライブラリ
ここでは、Strutsで用意されているカスタムタグライブラリのうち、beanタグライブラリについて解説します。beanタグライブラリにはBeanのプロパティ、変数、cookie、ヘッダ情報、パラメータ情報などを取得するタグ、取得した情報を表示するタグなどが定義されています。

実行環境
・WindowsXP Home Edition
・J2SDK 1.4.2_04
・Tomcat 5.0.18
・Struts 1.2.4
使用例
ヘッダ情報、パラメータ情報を取得し、表示するプログラムを作成します。
【作成ファイル一覧】
ファイル名
内容
ヘッダ情報、パラメータ情報を取得する処理をbeanタグライブラリで作成します。
アクション・フォームBeanに保存されたヘッダ情報、パラメータ情報を取得し、表示する処理をbeanタグライブラリで作成します。
入力された値を保持するアクション・フォームBeanです。
アクション・クラスです。遷移先のファイルとして、exBean2.jspを指定します。
<bean:message>タグで表示するメッセージが記載されたメッセージ・リソースファイルです。
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). taglibディレクティブで使用するタグライブラリを指定します。
(2). <bean:header>タグを使用します。HTTPヘッダの情報を取得します。id属性に取得した値を代入する変数を指定します。name属性に取得するヘッダ名を指定します。value属性には、指定したヘッダ情報がない場合に取得される値を指定します。ヘッダ情報がなくvalue属性が指定されていない場合には例外が生成されます。
(3). <bean:parameter>タグを使用します。リクエストパラメータの値を取得します。id属性に取得した値を代入する変数を指定します。name属性に取得するパラメータ名を指定します。value属性には、指定したパラメータ情報がない場合に取得される値を指定します。パラメータ情報がなくvalue属性が指定されていない場合には例外が生成されます。
(4). 変数param1、param2に代入されている値を表示します。
(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). taglibディレクティブで使用するタグライブラリを指定します。
(2). <bean:message>タグを使用します。メッセージ・リソースファイル内のメッセージを表示します。key属性には、メッセージ・リソースファイル内の表示したいメッセージのkeyを指定します。arg0属性にはメッセージに代入したい値を指定します。arg属性はarg0〜arg4まで最大5つ指定できます。メッセージ・リソースファイル内では代入したい箇所を{0}〜{4}で指定します。
(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). ActionFormクラスをスーパークラスとして、BeanRegistrationFormクラスを宣言します。
(2). exBean.jspで取得した値を保存する変数を宣言します。
(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). Actionクラスをスーパークラスとして、BeanRegistrationActionクラスを宣言します。
(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). <form-beans>タグでアクション・フォームBeanを指定します。
(2). <action-mappings>タグでアクション・クラス、関連するアクション・フォームBeanを指定します。
(3). <forward>タグでアクション・クラス実行後に返された値"success"に合致する遷移先(exBean2.jsp)を指定します。
(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プロパティ、変数の値を取得し、表示します。



このページのトップへ
 ニュースJava基本Servlet・JSPオープンソースFAQ掲示板
Javaの道_CopyrightJavaの道