2009年4月28日火曜日

vistaにあるjdk1.4.2のJVM異常終了問題

buglist
http://bugs.sun.com/bugdatabase/view_bug.do;
jsessionid=e6d5c1817eb35f4fa58ed3bef6db0?
bug_id=6830549

2009年4月10日金曜日

Struts応用(六):Tilesの関連設定手順

※下記ソースを使う時、()→<>に変更してください。
Tilesタグは、画面のテンプレート化と画面設計の共通化のため使われるStrutsのタグです。
1.Tilesプラグインを有効にする設定:
各struts-config.xmlに下記の設定を追加する
(plug-in className="org.apache.struts.tiles.TilesPlugin" )
(set-property property="definitions-config" value="/WEB-INF/tiles-defs.xml" /)
(set-property property="moduleAware" value="true" /)
(/plug-in)
※注:moduleAwareの値はfalseであれば、Web.xmlにある一番目のモジュールのstruts-config.xml
にある該当設定が有効、かつ、他のすべてのモジュールにも有効;trueの場合、自分のモジュール
だけに有効

2.自定義Tilesタグの作成:
ファイル「tiles-defs.xml」を編集し、自定義ものを追加
例:
(tiles-definitions)
(definition name="tilesName" path="/layout.jsp")
(put name="title" value="タイトルです"/)
(put name="menu" value="/menu.jsp"/)
(put name="contents" value="/contents.jsp"/)
(/definition)
(/tiles-definitions)
これで「layout.jsp」というテンプレートの画面レイアウト
を定義した

3.Tilesタグプラグイン定義ファイルの参照:
二つの方法がある
・JSPのヘーダ部に直接該当定義ファイルを参照
(%@ taglib uri="http://struts.apache.org/tags-tiles" prefix="tiles" %)
・web.xmlにtaglibの定義ファイル参照URIを定義し、JSPから参照
「web.xmlの定義」
(taglib)
(taglib-uri)/WEB-INF/struts-tiles.tld(/taglib-uri)
(taglib-location)/WEB-INF/struts-tiles.tld(/taglib-location)
(/taglib)
※この場合、tldファイルが/web-inf/下に追加しないといけない
「JSPの参照」
(%@ taglib uri="/WEB-INF/struts-tiles.tld" prefix="tiles" %)
※方法一は、直接Webからファイルを参照するから、通信とバージョン確定が
難しいから、二番目の方法がいいでしょう

4.JSPにTilesタグの利用:
①上記「3」の参照方法で定義ファイルのURI参照をJSPに追加
②struts-tiles.tldに定義されているタグの方法が利用できる
例:(layout.jsp)
(%@taglib uri="/WEB-INF/struts-tiles.tld" prefix="tiles" %)
(html:html)
(body)
(table width="100%")
(tr colspan="2")
(td align="center")(tiles:getAsString name="title"/)(/td)
(/tr)
(tr)
(td width="20%" valign="top")(tiles:insert attribute="menu"/)(/td)
(td width="80%" valign="top")(tiles:insert attribute="contents"/)(/td)
(/tr)
(/table)
(/body)
(/html:html)

5.layout.jsp画面の遷移定義:
該当モジュールのstruts-config.xmlにあるActionタグに下記属性を追加する
例:
(action-mappings)
(action name="formName" path="/MyAction" type="pkg.MyAction" validate="false" scope="request")
(forward name="success" path="tilesName"/)(!--該当pathの値は、 tiles-defs.xml」に
定義されているdefinationのnameの値と同じ名前--)
(forward name="error" path="error.jsp"/)
(/action)
(/action-mappings)
これでTilesタグを使っているJSP「layout.jsp」への遷移ができる

Struts応用(五):validation.xmlに検証対象情報の定義方法

※下記ソースを使う時、()→<>に変更してください。
例:
(?xml version="1.0" encoding="Shift_JIS" ?)
(!DOCTYPE form-validation PUBLIC
"-//Apache Software Foundation//
DTD Commons Validator Rules Configuration 1.0//EN"
"http://jakarta.apache.org/commons/dtds/validator_1_0.dtd")
(form-validation)
(formset)
(form name="testForm")(!-- アクションフォームBeansの論理名 --)
(field property="title" depends="required,maxlength")
(arg0 key="タイトル" resource="false" /)
(arg1 name="maxlength" key="100" resource="false" /)
 (arg2 name="maxlength" key="maxlength.max" resource="true" /)
(arg3 name="maxlength" key="${var:maxlength}" resource="false" /)
(var)
(var-name)maxlength(/var-name)
(var-value)100(/var-value)
(/var)
(/field)
(!--(field)要素を繰り返し記述--)
(/form)
(!--(form)要素を繰り返し記述--)
(/formset)
(/form-validation)
※説明:
1.arg0~arg3まで定義できる
2.name:検証名(validator-rules.xml/自定義validator-rules.xmlに定義される)
対応エラーメッセージのキー:error.検証名
3.resource:「true」の場合、リソースのプロパティファイルをキーによって参照
4.key:検証標準定義(三つの方法がある)
  ①arg1のように:
検証標準値は、keyの設定値である
  ②arg2のように:
検証標準値は、リソースプロパティファイルにあるキー=「maxlength.max」
の値である
  ③arg3のように:
検証標準値は、varタグによって定義されている変数「maxlength」の値である

Struts応用(四):Validatorプラグインの利用手順

※下記ソースを使う時、()→<>に変更してください。
1.Validatorプラグインに関する設定:
場所:struts-config.xml及び各モジュールのstruts-config.xml
形式:
(plug-in className="org.apache.struts.validator.ValidatorPlugIn")
(set-property property="pathnames"
value="/WEB-INF/validator-rules.xml,
/WEB-INF/validation.xml,
/WEB-INF/myvalidator-rules.xml"/)
(/plug-in)
説明:
①設定できるpropetyには、ValidatorPlugInのドキュメントを参照
②validator-rules.xml:標準な検証情報ファイル(変更の必要なし)
③validation.xml:フォーム要素に対して適用する検証の種類、
検証時に必要なパラメータ、エラーメッセージなどのマッピング
④myvalidator-rules.xml:自定義の検証ルール

2.Actionタグの設定:
属性validate=trueを設定すると、サーバ側の検証を有効にする
input属性には、検証エラーのエラー画面など定義できる

3.message-resources要素:
エラーメッセージファイルを指定
※注意:
該当メッセージリソースファイルに日本語を含んでいる場合、
事前に該当リソースファイルに対して、Unicode変換が必要。
Unicode変換は、コマンドラインで行う
(変換前の名前は、変換後の名前と別々にする)
例:
>native2ascii ApplicationResources.properties.sjis
ApplicationResources.properties

4.validation.xmlに検証対象情報の定義:
5.自分のアクションフォームBeanは、ActionFormではなく、
ValidatorFormのサブクラスにしなりといけない
public class TestForm extends ValidatorForm{
}

Struts応用(三):Struts-config.xmlファイルを複数の設定ファイルに分割する方法

※下記ソースを使う時、()→<>に変更してください。
1.初期化パラメータの設定値をカンマで区切る方法
例:
(servlet)
(servlet-name)action(/servlet-name)
(servlet-class)org.apache.struts.action.ActionServlet(/servlet-class)
(init-param)
(param-name)config(/param-name)
(param-value)/WEB-INF/struts-config.xml,
/WEB-INF/struts-config2.xml
(/param-value)
(/init-param)
(load-on-startup)1(/load-on-startup)
(/servlet)

2.モジュール化によるファイル分割を用いる方法
(servlet)
(servlet-name)action(/servlet-name)
(servlet-class)org.apache.struts.action.ActionServlet(/servlet-class)
(!-- デフォルトモジュール --)
(init-param)
(param-name)config(/param-name)
(param-value)/WEB-INF/struts-config.xml(/param-value)
(/init-param)
(!-- 登録モジュール --)
(init-param)
(param-name)config/reg(/param-name)
(param-value)/WEB-INF/struts-config-reg.xml(/param-value)
(/init-param)
(load-on-startup)1(/load-on-startup)
(/servlet)

モジュール化では、プレフィックスを用いて名前空間を分割します。
デフォルトモジュール:http://ホスト名/コンテキスト名/アクション名.do
登録モジュール:http://ホスト名/コンテキスト名/モジュール名(reg)/アクション名.do
※これは、上記configファイルの(param-name)のURIで決めるもの
要注意のは、上記モジュール化によって、JSPのactionパスは、サブモジュールの
設定ファイル(例:struts-config-reg.xml)に定義されたActionMappingと合えない可能性
があります。原因は、URIにモジュール名があること。これは、Strutsが決めたものだ。
解決の一つ方法は、仲介役の遷移画面が用意し、該当仲介画面を通じて、上記モジュールの
実際の作業JSPが表示される。
例:
(html:link module="/reg" action="/forwardLoginReg")regモジュールへ(/html:link)
「action="/forwardLoginReg"」がstruts-config-reg.xmlに定義される。

(action path="/forwardLoginReg" forward="/loginReg.jsp")
(/action)
これで、loginReg.jspがモジュールregを含んでいるURIに表示されることができる
※struts-config.xmlに定義できる属性:
* (data-sources)要素
* (form-beans)要素
* (global-exceptions)要素
* (global-forwards)要素
* (action-mappings)要素
* (controller)要素
* (message-resources)要素
* (plug-in)要素

Struts応用(二):Tomcatサーバデバッグ環境の作成手順

目的:Eclipseの開発環境に直接Tomcatサーバを使って、デバッグをする
手順:
1.Eclipse画面にある「サーバー」ビュー画面を右クリックする
2.「新規」→「サーバー」をクリックする
3.「新規サーバー定義」の画面でTomcatサーバーを選んで、「次へ」をクリックする
4.左側のデバッグ対象プロジェクトを右側の「構成プロジェクト」に追加して、
「終了」をクリックする。
5.StrutsのlibフォルダにあるjarファイルをTomcatの「common」→「lib」にコピー

これでTomcatサーバのデバッグ環境ができる

Struts応用(一):Strutsプロジェクトの作成手順

1.Eclipseの「ファイル」→「新規」→「プロジェクト」を開く
2.動的Webプロジェクトを選んで、「次へ」をクリック
3.プロジェクト名を入力し、他の項目をデイフォルトのままで「次へ」
4.「終了」ボタンをクリックする
5.作成したプロジェクト名前を右クリックし、「プロパティ」設定を行う
6.プロパティ設定画面の「Javaのビルド・パス」画面を開く
7.「ライブラリ」タブ画面にStrutsのlibフォルダにあるjarファイルを該当
画面に追加する
8.「OK」をクリックする
ここまで、Strutsフレームワークを使うWebプロジェクトの作成ができる