ソースコード(プロジェクトフォルダ)をSドライブにアップロードして提出してください

S:\Java\課題提出\サーバサイド\13章


問題1 会員情報テーブルの作成

以下の仕様で会員情報を登録するテーブルをデータベースstXX(各自の生徒番号のスキーマ)に作成してください。

テーブル作成に使用したCREATE TABLE文をファイルに保存し、提出フォルダに提出してください。


テーブル名 FCS_CUSTOMER

列名サイズ制約概要
IDNUMBER7主キー
オートインクリメント
ID自動採番
PASSVARCHAR220not nullパスワード
NAMEVARCHAR240not null氏名
ADDRESSVARCHAR2100not null住所
TELVARCHAR220not null電話番号
MAILVARCHAR240not null
unique
メールアドレス
重複禁止

問題2 動的Webプロジェクトのインポート

ssjavakadai13_start.war をダウンロードし、インポートしてください。
参考:インポート手順

これまで作成してきたカーシェアリングサイトをベースにしていますが、大幅に変更しているので、必ずインポートしてからこの後の課題に取り組みましょう。


まずは全体のデータの流れを確認しておきましょう。

プロジェクトのルート(= サイトルート) または index.jspからサーバーで起動すると、ログイン兼新規会員作成画面が表示されるようになっています。

現時点では画面遷移はできるようになっていますが、データベースアクセス部分が作成されておらず、ダミーデータでの動作となっています。

以降の課題で、データベースアクセス部分を作成して、新規会員登録機能、ログイン機能、会員情報変更機能、パスワード変更機能を実装します。ヘッダーリンクにあるその他の機能はダミーのままいじりません。

ログイン時に使用するのはメールアドレスです。FCS_CUSTOMERテーブルの主キーは自動採番のIDですが、メールアドレスもunique(重複禁止)としているので、会員情報を特定することが可能です。

会員が忘れにくいメールアドレスを使ってログインしてもらい、プログラム内部的にはID番号で対象レコードを指定するような作りにします。

余談ですが、ログインせずに利用してほしくないサーブレットにアクセスすると、フィルターの機能を使用して、強制的にログイン画面にリダイレクトされるようにしています。

問題3 DAOの利用

kadai.daoパッケージに以下のクラスを作成してください。

クラス名 CustomerDAO
定数フィールド
JDBC_DRIVERデータベース接続ドライバ名
JDBC_URLデータベース接続URL
DB_USERデータベースユーザー名
DB_PASSデータベースパスワード
メソッド public Customer login(メールアドレス, パスワード)
  ログイン処理
  引数のメールアドレスとパスワードを元に、会員情報を検索してリターンする
  メールアドレス、パスワードが一致する会員が存在しない場合、nullをリターンする

public boolean addCustomer(会員情報(Customer型), パスワード)
  新規会員情報登録処理

public boolean updateCustomer(会員情報(Customer型) )
  会員情報変更処理
  IDを指定して既存の会員情報を変更する
  ※パスワードは除く。パスワードは別メソッドで変更を行う

public boolean updatePassword(会員情報(Customer型), 旧パスワード, 新パスワード)
  パスワード変更処理
  ID、旧パスワードを指定して新パスワードで更新する

private void closeAll(Connection, PreparedStatement)
private void closeAll(Connection, PreparedStatement, ResultSet)
  各リソースをクローズする

問題4 Logicクラスからの接続

CustomerDAO クラスは、kadai.modelパッケージのLoginLogicクラス、AddCustomerLogicクラス、UpdateCustomerLogicクラス、ChangePasswordLogicクラスから呼び出して使用します。(元のコードはダミーデータで動作するようになっています)

上記各クラスのexecuteメソッドを修正し、データベースのデータを使用して動作するようにしてください。


完成したら、新規ユーザー作成、ログイン、ユーザー情報変更、パスワード変更、ログアウトまでの一連の流れをテストしましょう。

※今回DAOに作成するよう指定したメソッドは、「更新が成功したか否か」しかリターンしない、かなり雑なつくりとなっています。

余裕がある人は、一旦提出後、各メソッドの戻り値を工夫するなどして、エラーの原因がわかりやすいメッセージを出せるようにするなどアレンジしてみてください。

また、会員情報だけでなく、カーシェアの予約ページもDBを使用するようにするなど、挑戦してみてください。