Java Server Pages
手順 5 : HTML フ ォームの作成
8
設計時GUI
の開発コー ド リ ス ト
8-7 confconn.jsp
のコーデ ィ ング 1 <%@ taglib uri='/WEB-INF/taglibs/adk.tld' prefix='adk' %>2 <form method='POST' action='controller'>
3 <table>
4 <tr>
5 <td><adk:label name='userName' required='true'/></td>
6 <td><adk:text name='userName' maxlength='30' size='8'/></td>
7 </tr>
8 <tr>
9 <td><adk:label name='password' required='true'/></td>
10 <td><adk:password name='password' maxlength='30'size='8'/></td>
11 </tr>
12 <tr>
13 <td colspan='2'><adk:submit name='confconn_submit' doAction='confconn'/></td>
14 </tr>
15 </table>
16 </form>
コー ド リ ス ト 8-7 の内容を以下の節に示し ます。
ADK
タ グ ラ イ ブ ラ リ の イ ン ク ルー ド
ControllerServlet
のポ ス ト
[Form]
フ ィ ール ド の ラベルの表示テキ ス ト フ ィ ール ド のサ イ ズの表示
フ ォームの [Submit] ボ タ ンの表示
confconn() の実装
ADK タ グ ラ イ ブ ラ リのイ ン クルー ド
コー ド リ ス ト 8-7 の ラ イ ン 1 では、 JSP エンジンに ADK タ グ ラ イ ブ ラ リ を イ ン ク ルー ド する よ う に指定し ています。
<%@ taglib uri='/WEB-INF/taglibs/adk.tld' prefix='adk' %>
ADK
が提供する タ グ を表 8-3 に示し ます。手順
5 : HTML
フ ォ ームの作成アダプ タの開発
8-37
ControllerServlet のポス ト
コー ド リ ス ト 8-7 の ラ イ ン 2 では、 フ ォームが ControllerServlet
にポ ス ト さ
れます。<form method='POST' action='controller'>
ControllerServletは、 Web アプ リ ケーショ ンに合わせて web.xmlフ ァ イ ルで コ ン フ ィ グ レーシ ョ ン さ れます。 こ れは、RequestHandler
で実行する メ ソ ッ ド
に HTTP 要求を委託し ます。ControllerServletを使用する のに、 いずれの コー ド も指定する必要はあ り ません。 ただ し、 表 8-5 に リ ス ト さ れた初期パ ラ メ ータは指定する必要があ り ます。表
8-5 ControllerServlet
の初期パラ メ ータパラ メ ータ 説明
MessageBundleBase ア ダプ タ で使用する すべての メ ッ セージバン ド ルに基 本名を指定する 。
ADK
は、 サンプルアダプ タ には常に 論理名を使用す る。 ただ し、 メ ッ セージバン ド ルには 独自の命名規約を選択で き る 。 なお、 こ のプ ロ パテ ィ は、ra.xmlで も 設定で き る。DisplayPage アプ リ ケーシ ョ ンのページの フ ロ ー と ル ッ ク
&
フ ィ ー ルの両方を コ ン ト ロ ールするJSP
の名前を指定する 。 サンプルアダプ タ では、 こ のページでdisplay.jspが 表示 さ れ る 。LogConfigFile ア ダプ タ の
log4j
コ ン フ ィ グ レーシ ョ ン フ ァ イ ルを指定 す る。RootLogContext ルー ト ロ グの内容を指定する 。 ロ グの内容を利用し て、
プ ロ グ ラ ムの各モジ ュールに従い、 ロ グ メ ッ セージ を カテ ゴ リ 別に分類で き る 。
ADK
では、 特定のア ダプ タ の メ ッ セージがすべて、 特定のカテ ゴ リ 別に分類 さ れ る よ う に、 ルー ト ロ グの内容にアダプ タ の論理名を使 用する 。RequestHandlerClass ア ダプ タ の要求ハン ド ラ ク ラ ス に完全修飾名を付け る。
サンプルアダプ タ の場合、 こ の値は
sample.web.DesignTimeRequestHandlerであ る。
8
設計時GUI
の開発[Form] フ ィ ール ドのラベルの表示
コー ド リ ス ト 8-7 の ラ イ ン 5 では、 フ ォーム中のフ ィ ール ド の ラベルを表示し ま す。
<adk:label name='userName' required='true'/>
表示する値は、 ユーザの メ ッ セージ バン ド ルか ら検索し ます。required属性 は、 ユーザのパ ラ メ ータ指定が必須であ るかど う かを示し ます。
テキス ト フ ィ ール ドのサイズの表示
コー ド リ ス ト 8-7 の ラ イ ン 6 では、 テキ ス ト フ ィ ール ド にサ イ ズ 8、 最大長 30 が設定 さ れます。
<adk:text name='userName' maxlength='30' size='8'/>
フ ォームの [Submit] ボ タ ンの表示
コー ド リ ス ト 8-7 の ラ イ ン 13 では、 アダプ タ ユーザが入力を発行する ための フ ォームにボ タ ンが表示 さ れます。
<adk:submit name='confconn_submit' doAction='confconn'/>
ボ タ ンの ラベルは、confconn_submit を使用し て メ ッ セージ バン ド ルか ら検索 さ れます。 フ ォーム データ を発行する と 、ControllerServletが、 登録済みの リ ク エス ト ハン ド ラ (「RequestHandlerClassプ ロパテ ィ 」 を参照) で confconn メ ソ ッ ド を検索し、 リ ク エス ト データ を リ ク エス ト ハン ド ラ に送 り ま す。
confconn() の実装
AbstractDesignTimeRequestHandlerによ り 、 confconn()メ ソ ッ ド が実装さ れます。 こ の メ ソ ッ ド の実装に よ っ て、 Java Reflection API を利用し て、 アダプ タの ManagedConnectionFactory イ ン ス タ ン スのセ ッ ター メ ソ ッ ド に、 ユーザ が指定し た接続パ ラ メ ータがマ ッ プ さ れます。 アダプ タの
ManagedConnectionFactoryに具象な ク ラ ス を指定する だけで済むよ う にな り ます。 こ の ク ラ ス を指定する には、 次の メ ソ ッ ド を実装し ます。
public Class getManagedConnectionFactoryClass()
手順
5 : HTML
フ ォ ームの作成アダプ タの開発
8-39
手順 5b : addevent.jsp フ ォームの作成
こ のフ ォーム を使用し てアプ リ ケーショ ン ビ ューに新し い イベン ト を追加でき ます。 こ のフ ォームは EIS 固有の も のです。 コー ド リ ス ト 8-8 はサンプル アダ プ タの addevent.jspフ ォーム を示し ています。
コー ド リ ス ト
8-8 addevent.jsp
フ ォームを作成するサンプルコー ド 1 <%@ taglib uri='/WEB-INF/taglibs/adk.tld' prefix='adk' %>2 <form method='POST' action='controller'>
3 <table>
4 <tr>
5 <td><adk:label name='password' required='true'/></td>
6 <td><adk:text name='eventName' maxlength='100' size='50'/></td>
7 </tr>
8 <tr>
9 <td colspan='2'><adk:submit name='addevent_submit' doAction='addevent'/></td>
10 </tr>
11 </table>
12 </form>
以下の節に、addevent.jspの内容を説明し ます。
ADK タ グ ラ イ ブラ リのイ ン クルー ド
コー ド リ ス ト 8-8 の ラ イ ン 1 では、 JSP エンジンに ADK タ グ ラ イ ブ ラ リ を イ ン ク ルー ド する よ う に指定し ています。
<%@ taglib uri='/WEB-INF/taglibs/adk.tld' prefix='adk'%>
ADK
が提供する タ グ を表 8-3 に示し ます。ControllerServlet のポス ト
コー ド リ ス ト 8-8 の ラ イ ン 2 では、 フ ォームが ControllerServlet
にポ ス ト さ
れます。8
設計時GUI
の開発<form method='POST' action='controller'>
ControllerServletは、 Web アプ リ ケーショ ンに合わせて web.xml フ ァ イ ルで コ ン フ ィ グ レーショ ン さ れます。 こ れは、RequestHandler
で実行する メ ソ ッ ド
に HTTP 要求を委託し ます。ControllerServletを使用するのに、 いずれの
コー ド も指定する必要はあ り ません。 ただ し、 表 8-5 「ControllerServlet パ ラ メ ータ」 に リ ス ト さ れた初期パ ラ メ ータは指定する必要があ り ます。[Form] フ ィ ール ド ラベルの表示
コー ド リ ス ト 8-8 の ラ イ ン 5 では、 フ ォーム中のフ ィ ール ド の ラベルを表示し ま す。
<adk:label name='eventName' required='true'/>
表示する値は、 ユーザの メ ッ セージ バン ド ルか ら検索し ます。required
属性
は、 ユーザのパ ラ メ ータ指定が必須であ るかど う かを示し ます。テキス ト フ ィ ール ドのサイズの表示
コー ド リ ス ト 8-8 の ラ イ ン 6 では、 テキ ス ト フ ィ ール ド にサ イ ズ 50、 最大長
100
が設定 さ れます。<adk:text name='eventName' maxlength='100' size='50'/>
フ ォームの [Submit] ボ タ ンの表示
コー ド リ ス ト 8-8 の ラ イ ン 9 では、 アダプ タ ユーザが入力を発行する ための フ ォームにボ タ ンが表示 さ れます。
<adk:submit name='addevent_submit' doAction='addevent'/>
ボ タ ンの ラベルは、addevent_submit を使用し て メ ッ セージ バン ド ルか ら検索 さ れます。 フ ォーム データ を発行する と 、ControllerServletが、 登録済みの リ ク エス ト ハン ド ラ (「RequestHandlerClassプ ロパテ ィ 」 を参照) で addevent() メ ソ ッ ド を検索し、 リ ク エス ト データ を リ ク エス ト ハン ド ラ に送
り ます。
手順
5 : HTML
フ ォ ームの作成アダプ タの開発
8-41
フ ィ ール ドの追加
イベン ト を定義する と きに必要 と な る その他のフ ィ ール ド を追加する必要があ り ます。 複数のフ ィ ール ド があ る フ ォームの例については、 附録 E 「DBMS サン プル アダプタ を使用し たアダプ タ開発方法の学習」 を参照し て く だ さ い。
手順 5c : addservc.jsp フ ォームの作成
こ のフ ォーム を使用し て、 アプ リ ケーショ ン ビ ューに新し いサービ ス を追加で き ます。 こ のフ ォームは EIS 固有の も のです。 コー ド リ ス ト 8-9 にサンプル ア ダプ タ の addservc.jsp
フ ォーム を示し ます。
コー ド リ ス ト
8-9 addservc.jsp のコーデ ィ ング
1 <%@ taglib uri='/WEB-INF/taglibs/adk.tld' prefix='adk' %>2 <form method='POST' action='controller'>
3 <table>
4 <tr>
5 <td><adk:label name='serviceName' required='true'/></td>
6 <td><adk:text name='serviceName' maxlength='100' size='50'/></td>
7 </tr>
8 <tr>
9 <td colspan='2'><adk:submit name='addservc_submit' doAction='addservc'/></td>
10 </tr>
11 </table>
12 </form>
ADK タ グ ラ イ ブラ リのイ ン クルー ド
コー ド リ ス ト 8-9 の ラ イ ン 1 では、 JSP エンジンに ADK タ グ ラ イ ブ ラ リ を イ ン ク ルー ド する よ う に指定し ています。
<%@ taglib uri='/WEB-INF/taglibs/adk.tld' prefix='adk' %>
タ グ ラ イ ブ ラ リ では、 ADK で提供 さ れる使いやすいフ ォーム検証機能がサポー ト さ れます。 ADK タ グ ラ イ ブ ラ リ には、 表 8-3 に示すタ グが用意さ れています。
8
設計時GUI
の開発ControllerServlet のポス ト
コー ド リ ス ト 8-9 の ラ イ ン 2 では、 フ ォームが ControllerServlet
にポス ト さ
れます。<form method='POST' action='controller'>
ControllerServletは、 Web アプ リ ケーショ ンに合わせて web.xml フ ァ イ ルで コ ン フ ィ グ レーショ ン さ れます。 こ れは、RequestHandler
で実行する メ ソ ッ ド
に HTTP 要求を委託し ます。ControllerServletを使用するのに、 いずれの コー ド も指定する必要はあ り ません。 ただ し、 表 8-5 「ControllerServlet パ ラ メ ータ」 に リ ス ト さ れた初期パ ラ メ ータは指定する必要があ り ます。[Form] フ ィ ール ド ラベルの表示
コー ド リ ス ト 8-9 の ラ イ ン 5 では、 フ ィ ール ド の ラベルを表示し ます。
<adk:label name='serviceName' required='true'/>
表示する値は、 ユーザの メ ッ セージ バン ド ルか ら検索し ます。required属性 は、 ユーザのパ ラ メ ータ指定が必須であ るかど う かを示し ます。
テキス ト フ ィ ール ドのサイズの表示
コー ド リ ス ト 8-9 の ラ イ ン 6 では、 テキ ス ト フ ィ ール ド にサ イ ズ 50、 最大長
100
が設定 さ れます。<adk:text name='serviceName' maxlength='100' size='50'/>
フ ォームの [Submit] ボ タ ンの表示
コー ド リ ス ト 8-9 の ラ イ ン 9 では、 アダプ タ ユーザが入力を発行する ための フ ォームにボ タ ンが表示 さ れます。
<adk:submit name='addservc_submit' doAction='addservc'/>
手順
5 : HTML
フ ォ ームの作成アダプ タの開発
8-43
ボ タ ンの ラベルは、 [addservc_submit]
を使用し て メ ッ セージ バン ド ルか ら検 索さ れます。 フ ォーム データ を発行する と 、ControllerServletが、 登録済み の リ ク エス ト ハン ド ラ (「RequestHandlerClassプ ロパテ ィ 」 を参照) で addservc メ ソ ッ ド を検索し 、 リ ク エス ト データ をリクエスト ハンドラに送 り ま す。フ ィ ール ドの追加
サービ ス を定義する と きに必要 と な る その他のフ ィ ール ド を追加する必要があ り ます。 複数フ ィ ール ド のあ る フ ォームの例については、 附録 E 「DBMS サンプ ル アダプ タ を使用し たアダプ タ開発方法の学習」 を参照し て く だ さ い。
手順 5d : イベン ト およびサービスの編集機能の実 装 (省略可能)
設計時にユーザに対し イベン ト やサービ ス を編集する機能を許可する場合は、 ア ダプ タ プ ロパテ ィ を編集し、edtservc.jsp と edtevent.jspのフ ォーム を作成 し て、 具体的な メ ソ ッ ド を実装する必要があ り ます。 こ こ では、 以下の タ ス ク に ついて説明し ます。
注意
:
こ の手順は省略可能です。 ユーザに こ れ ら の機能を提供する必要はあ り ません。アダプ タ プロパテ ィ フ ァ イルの更新
まず、 アダプ タ プ ロパテ ィ フ ァ イ ルを次の よ う に変更し てサンプル アダプタ に 合わせてシス テ ム プ ロパテ ィ を更新し ます。
以下のプロパテ ィ を追加し ます。
edtservc_title=Edit Service
edtservc_description=On this page, you edit service properties.
edtevent_description=On this page, you edit event properties.edtevent_title=Edit Event
glossary_description=This page provides definitions for commonly used terms.