広告

■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
                      2010年01月10日

    Java総合講座 - 初心者から達人へのパスポート
                  vol.186

                                セルゲイ・ランダウ
 バックナンバー: http://www.flsi.co.jp/Java_text/
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■


-------------------------------------------------------
・現在、このメールマガジンは以下の2部構成になっています。
[1] 当初からのコース:毎週日曜の夜に発行
   これは現在、中級レベルになっています。
[2] 2009年11月開講コース:毎週水曜の夜に発行
   これは現在、初心者向けのレベルになっています。
・このメールマガジンは、画面を最大化して見てください。
小さな画面で見ていると、不適切な位置で行が切れてしまう
など、問題を起すことがあります。
・このメールマガジンに掲載されているソース・コード及び
文章は特に断らない限り、すべて筆者が著作権を所有してい
ます。また、これらのソース・コードは学習用のためだけに
提供しているものです。
-------------------------------------------------------


========================================================
◆ 01.Strutsのアプリケーション開発
========================================================


では、これから少し本格的なStrutsのアプリケーションを作っていきましょう。

以前vol.079〜vol.103で作成したのと同様のインターネット・ショッピングの
WebアプリケーションをStrutsを使って作っていきます。(どんなアプリケー
ションだったか忘れた人はvol.079〜vol.103をサッと復習して下さい。)

ただし、まったく同じ内容では芸がないので、今回は以下の機能を追加して、
より複雑なシステムにします。

・ユーザー登録(会員登録)をしなくてもショッピングができるようにする。
・ユーザーID(顧客番号)はお客様が決められるようにする。ただし、既存の
ユーザーIDを重複して登録することはできないものとする。
・ユーザーのログイン時にはパスワードのチェックも行う。
・支払い方法を選択可能とし、今回は(1)クレジットカード(2)銀行振込のどちらか
の選択式とする。
・注文状況を管理する機能も追加する。
・国際化に対応したアプリケーションとし、日本語以外の言語でのWebページ表示を
可能とする。



◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆


では、データベースの作成作業から始めましょう。

テーブルは基本的にはvol.080〜vol.081と同様の内容ですが、追加された機能
もあるため、少しカラム等を変更(あるいは追加)します。


まず、お客様(User)のテーブルは下記のような構造にしましょう。

[テーブル名]:USER
[カラム]:
 U_TYPE(ユーザーの種類、文字[M=会員、T=一時的顧客]、プライマリー・キー(主キー))
 USERID(ユーザーID、文字列、プライマリー・キー(主キー))
 PASS(パスワード、バイナリー)
 NAME(顧客名、文字列)
 ZIPCODE(郵便番号、文字列)
 ADDRESS(住所、文字列)


続いて、商品カテゴリー(Category)のテーブルは下記のようにしましょう。
(これは今回新たに追加したテーブルです。)

[テーブル名]:CATEGORY
[カラム]:
 NUM(カテゴリー番号、文字列、プライマリー・キー)
 NAME(カテゴリー名、文字列)


続いて、商品(Item)のテーブルは下記のようにしましょう。

[テーブル名]:ITEM
[カラム]:
 NUM(商品番号、文字列、プライマリー・キー)
 NAME(商品名、文字列)
 PRICE(価格、整数)
 IMAGE(商品の写真のファイル名)
 C_NUM(商品のカテゴリー番号、文字列、外部キー)
 QUANTITY(在庫数、整数)


では、次に注文(Order)のテーブルのほうですが、これは、
注文の顧客や注文日などを記録する

[テーブル名]:ORDERHEADER
[カラム]:
 O_NUM(注文番号、整数、プライマリー・キー)
 O_DATE(注文日、日付)
 U_TYPE(購入者のユーザーの種類、文字、外部キー)
 USERID(購入者のユーザーID、文字列、外部キー)
 PAYMETHOD(支払い方法、整数[0=クレジットカード払い、1=銀行振込])
 PAYMENT(料金支払い、整数[0=未払い、1=支払い済み])
 DELIVERY(商品の配達、整数[0=未配達、1=配達済み、2=配達中])

と、注文された個々の商品の情報を記録する

[テーブル名]:ORDERITEM
[カラム]:
 O_NUM(注文番号、整数、プライマリー・キーかつ外部キー)
 SEQ_NUM(注文内の品目の番号、整数、プライマリー・キー)
 I_NUM(商品番号、文字列、外部キー)
 QUANTITY(注文数、整数)

という2つのテーブルで管理することにしましょう。



◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆


では、これらのテーブルを作成するためのSQLのファイルを以下のように
作成しましょう。


(1) [テーブル名]:USER
--------------------------------------------------------
create table USER (
U_TYPE char(1) not null,
USERID char(7) not null,
PASS varbinary(20) not null,
NAME varchar(20) not null,
ZIPCODE char(8) not null,
ADDRESS varchar(100) not null,
primary key(U_TYPE, USERID)
);
--------------------------------------------------------
これは、C:\JavaWorkSpaceフォルダーの中に、
USER.sql
というファイル名で保管しておきましょう。


(2) [テーブル名]:CATEGORY
--------------------------------------------------------
create table CATEGORY (
NUM char(5) not null,
NAME varchar(20) not null,
primary key(NUM)
);
--------------------------------------------------------
これは、C:\JavaWorkSpaceフォルダーの中に、
CATEGORY.sql
というファイル名で保管しておきましょう。


(3) [テーブル名]:ITEM
--------------------------------------------------------
create table ITEM (
NUM char(5) not null,
NAME varchar(100) not null,
PRICE integer not null,
IMAGE varchar(100),
C_NUM char(5) not null,
QUANTITY integer  not null,
primary key(NUM),
foreign key(C_NUM) references CATEGORY (NUM)  on delete cascade
);
--------------------------------------------------------
これは、C:\JavaWorkSpaceフォルダーの中に、
ITEM.sql
というファイル名で保管しておきましょう。


(4) [テーブル名]:ORDERHEADER
--------------------------------------------------------
create table ORDERHEADER (
O_NUM integer not null,
O_DATE date not null,
U_TYPE char(1) not null,
USERID char(7) not null,
PAYMETHOD decimal(1,0) not null,
PAYMENT decimal(1,0) not null,
DELIVERY decimal(1,0)  not null,
primary key(O_NUM),
foreign key(U_TYPE, USERID) references USER (U_TYPE, USERID)  on delete cascade
);
--------------------------------------------------------
これも先ほどと同じフォルダーに
ORDERHEADER.sql
というファイル名で保管しておきましょう。


(5) [テーブル名]:ORDERITEM
--------------------------------------------------------
create table ORDERITEM (
O_NUM integer not null,
SEQ_NUM integer not null,
I_NUM char(5) not null,
QUANTITY integer not null,
primary key(O_NUM, SEQ_NUM),
foreign key(O_NUM) references ORDERHEADER (O_NUM)  on delete cascade,
foreign key(I_NUM) references ITEM (NUM)  on delete cascade
);
--------------------------------------------------------
これも先ほどと同じフォルダーに
ORDERITEM.sql
というファイル名で保管しておきましょう。



◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆


では、さっそくデータベースを作成し、上記のテーブルを組み込んで
いきましょう。
データベースの名前はSTRUSHOPにします。
以下のようにMySQLのコマンド・ライン・クライアントを起動して作業を行い
ましょう。

(1) 「スタート」ボタン→「すべてのプログラム」→「MySQL」→
「MySQL Server 5.0」→「MySQL Command Line Client」
を選択します。

(2) rootのパスワードを聞いてきますので

rootpass

を入力しましょう。

(3) データベースSTRUSHOPを作成しましょう。下記のコマンドを入力して
ください。

create database STRUSHOP charset sjis;

(4) 続いて、STRUSHOPデータベースを使用(接続)するために以下の
コマンドを入力します。

use STRUSHOP


(5) 以下のコマンドで(先ほど保管したファイルを使って)テーブルを作成
しましょう。

source C:\JavaWorkSpace\USER.sql

source C:\JavaWorkSpace\CATEGORY.sql

source C:\JavaWorkSpace\ITEM.sql

source C:\JavaWorkSpace\ORDERHEADER.sql

source C:\JavaWorkSpace\ORDERITEM.sql

(6) 最後に、MySQLのコマンド・ライン・クライアントを終了しましょう。

quit



◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆


(次回に続く)


では、今日はここまでにします。



================================================
◆ 02.前回の演習問題の答
================================================


まず、Tomcat 6をEclipse上でWebサーバーとして起動できるように
登録作業を行いましょう。

まずEclipseでJ2EEパースペクティブを開いておいて下さい。

(1) メニュー・バーから「ファイル」→「新規」→「その他」を選択し、
「新規」ウインドウの中で「サーバー」配下の「サーバー」を選択し、
「次へ」ボタンをクリックします。

(2) 「新規サーバー」ウインドウの中で「Apache」配下の「Tomcat v6.0サーバー」
を選択し、「次へ」ボタンをクリックします。

(3) 「Tomcatインストール・ディレクトリー」欄にEclipseのインストールで一緒に
入ってきたTomcat5.5のディレクトリー

C:\pleiades\tomcat6.0

を入力(または「参照」ボタンをクリックして画面から指定してもよい)し、
「完了」ボタンをクリックします。

これで、プロジェクト・エクスプローラーの中のServers配下に「ローカル・
ホストのTomcat v6.0サーバー-config」というフォルダーができ、また、
「サーバー」ビューの中に「ローカル・ホストのTomcat v6.0サーバー」
というのができているはずです。


これで、Tomcat Version 6をEclipse上で実行できる環境が用意されました。



では、続いてプロジェクトを作成しましょう。

プロジェクト・エクスプローラーの中で右クリックし、「新規」→「プロジェクト」
を選択します。

「新規プロジェクト」ウインドウの中で「Web」配下の「動的Webプロジェクト」
を選択し、「次へ」ボタンをクリックします。

「新規動的Webプロジェクト」ウインドウの中で「プロジェクト名」欄に

StrutsWithTomcat6Test

と入力し、「Target runtime」は

Apache Tomcat v6.0

を選択し(このとき「構成」も自動的に「Apache Tomcat v6.0デフォルト構成」
に変わる)、「完了」ボタンをクリックします。



では、続いて「プロジェクト・エクスプローラー」の中にできたStrutsWithTomcat6Test
(プロジェクト)の配下にあるWebContentを右クリックし、「新規」→「その他」
を選択します。

「新規」ウインドウの中で「Amateras」配下の「Struts」の配下に
「Strutsサポートの追加」という項目がありますので、それをを選択し、
「次へ」ボタンをクリックします。

「Strutsサポートの追加」ウインドウの中で「Webアプリケーションのルート」欄


/StrutsWithTomcat6Test/WebContent

になっていることを確認して下さい。(自分で設定を変更しない限り、WTP
ではWebContentというフォルダーがWebアプリケーションのルートになって
いるので、この通りの指定になっている必要があります。)

他の項目はそのまま(すべてにチェック・マークがついている状態)で、
「完了」ボタンをクリックします。

そうすると、WebContentのWEB-INF配下にStruts用の各種ファイルが自動生成
されます。



では続いてアプリケーションの開発に取りかかりましょう。

StrutsEtoTestプロジェクトとまったく同じソースを作成/編集していきます。
(StrutsEtoTestプロジェクトの各ファイルをそのままコピーしてもかまいません。)

完成したら実行してみましょう。Tomcatがv6.0になったこと以外は
StrutsEtoTestのときとまったく同じ作業になります。

Tomcat v6.0でもまったく同様に動作することがわかりますね。



┏━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
★ホームページ:
      http://www.flsi.co.jp/Java_text/
★このメールマガジンは
     「まぐまぐ(http://www.mag2.com)」
 を利用して発行しています。
★バックナンバーは
      http://www.flsi.co.jp/Java_text/
 にあります。
★このメールマガジンの登録/解除は下記Webページでできます。
      http://www.mag2.com/m/0000193915.html
★このメールマガジンへの質問は下記Webページにて受け付けて
 います。わからない所がありましたら、どしどしと質問をお寄
 せください。
      http://www.flsi.co.jp/Java_text/
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━┛

Copyright (C) 2010 Future Lifestyle Inc. 不許無断複製