Strutsメモ2

データソースの利用

Developer Guides(API リファレンス?)のutilに書いてるままですけど。

struts.configでデータソースの指定をして、
  <data-sources>
    <data-source>
      <set-property property="driverClass"
                       value="org.gjt.mm.mysql.Driver"/>
      <set-property property="maxCount"
                       value="4"/>
      <set-property property="url"
                       value="jdbc:mysql://localhost/shop"/>
      <set-property property="password"
                       value=""/>
      <set-property property="user"
                       value=""/>
    </data-source>
  </data-sources>
アプリケーションスコープからデータソースを取得。
DataSource dataSource = (DataSource)
request.getSession(true).getServletContext().getAttribute(Action.DATA_SOURCE_KEY);
ActionServletでGenericDataSource作って、アプリケーションスコープ に埋めてるみたいです。

あ、もちろんJDBCドライバをクラスがロードできる場所に置きましょう (Tomcatだと$catalina_home/libか$myapp/WEB-INF/lib)。

リソースの日本語化

文字リソースのファイル(ApplicationResources.propertiesとか)で 日本語を利用する場合は、リソースファイル名を〜_jp.propertiesにして、 さらにnative2asciiをかけなければなりません。 あと、リソースの再読み込みのために strutsのWebアプリケーションをリロードします。

admin機能の使い方

struts-config.xmlを書き換えたときなどは、
http://<host名>/<アプリ名>/admin/reload.do
でリロードします。 ただし、これはバージョン1.02の方法で、 バージョン1.1では、別の方法でやるみたい。調査中。

Strutsのタグの利用1

JSTLで済まそうかと思ってましたが、 基本的なタグだけ使ってみようということで、ちょっとだけ使ってみました。

beanタグ

bean:messageを使ってみた。
リソースファイルからresult.titleをキーに文字を読み込み。
<bean:message key="result.title"/>
引数渡して文字を読み込みはこんな感じ。 argXに渡す引数はStringじゃないとダメらしい。 Objectとプリミティブはあってもいいかもと思いました。
<bean:message key="result.message"
  arg0="<%=word.getName()%>"
  arg1="<%=word.getWord()%>"
  arg2="<%=String.valueOf(word.getScore())%>"
  arg3="<%=rank.toString()%>"
  />

logicタグ

logic:iterateを使ってみた。
以下の処理はこんな意味。 名前がBATTLE_MANAGERのオブジェクトをスコープから取得し、 getWords()メソッドの帰り値のコレクションをループする。 コレクションの要素にwordという変数名をつける。 コレクションのインデックスにindexという名前をつける。
<logic:iterate id="word" name="BATTLE_MANAGER" property="words" indexId="index">
  <tr>
    <td><%=index.intValue() + 1%><!-- +1したいためにスクリプトレット使用 -->
    <td><bean:write name="word" property="name"/>
    <td><bean:write name="word" property="word"/>
    <td><bean:write name="word" property="score"/>
  </tr>
</logic:iterate>


そしてバージョンアップしたワードばとらーがwb-0.2.zipです。
スクリプトレットをカスタムタグに置き換えたのと、 日本語のリソースファイルを使ってみました(国際化ぁ)。
あと、最初にアプリケーションスコープにオブジェクトを埋めるために J2EE仕様のfilterを使ってみました (今回これですが、Strutsでアプリケーションの初期化時に行う処理の書き方があるかも)。


次のページへ

(2002/8/29)
もどる