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)
もどる