[検証実験]Webシステム開発の効率化を検証する
第2回 仕様変更とフレームワーク効果
仕様変更に対応する |
さて、サンプルアプリケーションが動いたところで、仕様を少しだけ変えてプログラミングを試してみましょう。
現在の仕様では、画面に登録メンバーの身長、体重が表示されるため、自分の身長、体重がほかの人にばれてしまいます。これでは女性には使ってもらえませんので、取りあえず、
「メンバーの属性に性別を加え、女性であれば、メンバー表の身長と体重の表示を伏字にする」 とし、配慮の気配を少しだけ漂わせることにします。
作業は次のようになります。
- データベースの「メンバー」表に「性別」列を追加
- 画面1のメンバー表と登録部分に、性別欄を追加
- 画面1のメンバー表で、性別が女性の場合、身長と体重を「***」と表示
- 画面2のメンバー情報部分に、性別欄を追加
■データベースの変更
「メンバー」表に「性別」列を追加します。列名を「性別」とし、CHAR(2)、NOT NULL で定義します(実際の値は “男”か“女” かにします)。
氏名 | VARCHAR(30) | NOT NULL |
身長 | NUMERIC(3,0) | NOT NULL |
体重 | NUMERIC(3,0) | NOT NULL |
性別 | CHAR(2) | NOT NULL |
適宜、テーブルを再作成してください。
■画面1の変更
変更作業の内容と、意味について説明していきます。
1 100行目、体重の行の次に、次の2行を追加します。登録用の表(下側の表)で、性別の値をプルダウンメニューで表示するよう、Web入出力用オブジェクトを設定しています。
hMember.getField("性別").setFieldType(HtmlFieldType.INPUT_SELECT); |
2 116行目、氏名の行の直後に以下の行を追加します(追加する場所は if (e.getSource().equals(hMembersList)) の条件文の中です)。メンバー表(上側の表)で、性別が女性の場合には、身長と体重欄に「***」を、男性であれば値を表示するように、Web入出力用オブジェクトを設定しています。
if ("女".equals(rsMembersList.getValueAsString(index,
rsMembersList.getColumnSet().indexOf("性別")))) { |
3 データベースにPostgreSQLを使う場合は、PostgreSQL用ソースの144行目、体重の行の次に、1行追加します。データベースの「性別」列はNOT NULLで定義していますが、PostgreSQLではNULL不可などの情報が問い合わせ結果に含まれないため、表データオブジェクトに明示的に設定する必要があります。これにより、ユーザーが未入力や未選択のままサーバに送信すると、自動的にエラーメッセージが表示されます(ORACLEやDB2を使う場合は、これらの情報は自動設定されます)。
rsMember.getColumn("性別").setNullable(false); |
次に、Member.jspに変更を加えます。
4 16行目、体重の行の次に、1行追加します。メンバー表(上側の表)での性別の値表示を、右寄せに設定しています。
Form.setFieldDataTDAttribute(hMembersList, "性別",
"align=\"right\""); |
5 44行目、体重の行の次に、1行追加します。メンバー表(上側の表)の列見出しに「性別」を追加しています。
<th width="60" nowrap><b>性別</b></th> |
6 79行目、体重の列設定の次に、以下の行を追加します。メンバー登録のための表(下側の表)に性別用の行を追加しています。
<tr> |
■画面2の変更
変更内容は次のとおりです。まず、CalorieNoteListForm.javaに変更を加えます。
1 127行目、体重の行の次に、次の2行を追加します。メンバー情報の表(上側の表)で、性別の値をプルダウンメニューで表示するよう、Web入出力用オブジェクトを設定しています。
hMember.getField("性別").setFieldType(HtmlFieldType.INPUT_SELECT); |
次に、CalorieNoteList.jspに変更を加えます。
2 69行目、体重の列設定の次に、次の行を追加します。メンバー情報の表(上側の表)に性別用の行を追加しています。
<tr> |
以上で対応作業は終わりです。最後に、以下の作業を行います。
1 新しいWebモジュールの生成と配備を行います。Forteで変更を保存した後、[エクスプローラ]ウィンドウのWEB-INFのところで右クリックし、「配備」を選びます。
2 iWS上にあるJSPの古いキャッシュファイルを削除します。JSPを変更していますので、この作業が必要です。方法は2種類あります。
- iWS ディレクトリ下、https-ホスト名\ClassCacheディレクトリにある「Version」ファイルを直接削除(今回の例では、F:\iPlanet\Servers\https-testsrv\ClassCache\Version、Linux環境では/usr/iplanet/servers/https-testsrv/ClassCache/Version)。
- iWSの管理サーバを起動して、アクセスし(今回の例では、ポート8888)、[Servers]タブ画面で <Manage Servers> の「Manager」ボタンをクリック。[Java]タブをクリックし、画面左側の「Session Data/JSP Class Cache」をクリック。<Delete JSP Class Cache Files> にチェックし、「OK」ボタンをクリック。確認メッセージのウィンドウが表示されるので、「OK」ボタンをクリック。
3 iWSを再起動し、ブラウザからサンプルアプリケーションを実行します。
性別欄が表示されましたでしょうか(画面17)。表示されない場合は、ブラウザの更新ボタンをクリックしてみてください。
画面17 |
メンバーを登録し、女性の場合はメンバー表の身長と体重が“***”と表示され、男性の場合は値が表示されればOKです(画面18)。
画面18 |
第2回はここまでとなります。次回(最終回)は、今回ご紹介したサンプルアプリケーションを振り返って、フレームワークの効果を整理します。
4/4 |
INDEX |
||
[検証実験]Webシステム開発の効率化を検証 第2回 |
||
Page1 カロリー計算アプリケーション 環境を準備する |
||
Page2 データベースの準備 サンプルアプリケーションの構造 |
||
Page3 Webモジュールの生成と配備、実行 |
||
Page4 仕様変更に対応する |
||
Java Solution全記事一覧 |
- 実運用の障害対応時間比較に見る、ログ管理基盤の効果 (2017/5/9)
ログ基盤の構築方法や利用方法、実際の案件で使ったときの事例などを紹介する連載。今回は、実案件を事例とし、ログ管理基盤の有用性を、障害対応時間比較も交えて紹介 - Chatwork、LINE、Netflixが進めるリアクティブシステムとは何か (2017/4/27)
「リアクティブ」に関連する幾つかの用語について解説し、リアクティブシステムを実現するためのライブラリを紹介します - Fluentd+Elasticsearch+Kibanaで作るログ基盤の概要と構築方法 (2017/4/6)
ログ基盤を実現するFluentd+Elasticsearch+Kibanaについて、構築方法や利用方法、実際の案件で使ったときの事例などを紹介する連載。初回は、ログ基盤の構築、利用方法について - プログラミングとビルド、Androidアプリ開発、Javaの基礎知識 (2017/4/3)
初心者が、Java言語を使ったAndroidのスマホアプリ開発を通じてプログラミングとは何かを学ぶ連載。初回は、プログラミングとビルド、Androidアプリ開発、Javaに関する基礎知識を解説する。
|
|