ソースコード(プロジェクトフォルダ)をSドライブにアップロードして提出してください
S:\Java\課題提出\サーバサイド\13章
以下の仕様で会員情報を登録するテーブルをデータベースstXX(各自の生徒番号のスキーマ)に作成してください。
テーブル作成に使用したCREATE TABLE文をファイルに保存し、提出フォルダに提出してください。
列名 | 型 | サイズ | 制約 | 概要 |
---|---|---|---|---|
ID | NUMBER | 7 | 主キー オートインクリメント | ID自動採番 |
PASS | VARCHAR2 | 20 | not null | パスワード |
NAME | VARCHAR2 | 40 | not null | 氏名 |
ADDRESS | VARCHAR2 | 100 | not null | 住所 |
TEL | VARCHAR2 | 20 | not null | 電話番号 |
VARCHAR2 | 40 | not null unique | メールアドレス 重複禁止 |
ssjavakadai13_start.war をダウンロードし、インポートしてください。
参考:インポート手順
これまで作成してきたカーシェアリングサイトをベースにしていますが、大幅に変更しているので、必ずインポートしてからこの後の課題に取り組みましょう。
まずは全体のデータの流れを確認しておきましょう。
プロジェクトのルート(= サイトルート) または index.jspからサーバーで起動すると、ログイン兼新規会員作成画面が表示されるようになっています。
現時点では画面遷移はできるようになっていますが、データベースアクセス部分が作成されておらず、ダミーデータでの動作となっています。
以降の課題で、データベースアクセス部分を作成して、新規会員登録機能、ログイン機能、会員情報変更機能、パスワード変更機能を実装します。ヘッダーリンクにあるその他の機能はダミーのままいじりません。
ログイン時に使用するのはメールアドレスです。FCS_CUSTOMERテーブルの主キーは自動採番のIDですが、メールアドレスもunique(重複禁止)としているので、会員情報を特定することが可能です。
会員が忘れにくいメールアドレスを使ってログインしてもらい、プログラム内部的にはID番号で対象レコードを指定するような作りにします。
余談ですが、ログインせずに利用してほしくないサーブレットにアクセスすると、フィルターの機能を使用して、強制的にログイン画面にリダイレクトされるようにしています。
kadai.daoパッケージに以下のクラスを作成してください。
クラス名 | CustomerDAO | ||||||||
---|---|---|---|---|---|---|---|---|---|
定数フィールド |
|
||||||||
メソッド |
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) 各リソースをクローズする |
CustomerDAO クラスは、kadai.modelパッケージのLoginLogicクラス、AddCustomerLogicクラス、UpdateCustomerLogicクラス、ChangePasswordLogicクラスから呼び出して使用します。(元のコードはダミーデータで動作するようになっています)
上記各クラスのexecuteメソッドを修正し、データベースのデータを使用して動作するようにしてください。
完成したら、新規ユーザー作成、ログイン、ユーザー情報変更、パスワード変更、ログアウトまでの一連の流れをテストしましょう。
※今回DAOに作成するよう指定したメソッドは、「更新が成功したか否か」しかリターンしない、かなり雑なつくりとなっています。
余裕がある人は、一旦提出後、各メソッドの戻り値を工夫するなどして、エラーの原因がわかりやすいメッセージを出せるようにするなどアレンジしてみてください。
また、会員情報だけでなく、カーシェアの予約ページもDBを使用するようにするなど、挑戦してみてください。