ログイン画面を作るには…?
最近は課題でレシピサイトを作っています。
わからないことだらけで期日に終わるか心配ですが、とりあえずやったことを忘れないように記録したいと思います。
今日はDBにテーブルを作り、Servletやらなんやら作りました。
ただログインするためにユーザ名とパスワードを作ってやるだけなのにいろんなファイルを作らなければなりません。
どこでDBとコネクションをするのか。
どこでSQL文書くのか。
どこでユーザ名とパスワードがあってるか確認するのか。
セッションはどう使うんだ。。
まだつくり途中ですが、このファイルを作りました。
ConnectionManager.java
UserDto.java
UserDao.java
LoginServlet.java
ConnectionManager.javaでしているのは、
- フィールドでSTR_CONNECT, USER_NAME, PASSWORDを作ってDB接続。
- Connection conn = null でコネクション用意。
- コンストラクタで Class.forName("ドライバ接続")
- conn = DriverManager.getConnection(STR_CONNECT, USER_NAME, PASSWORD)コネクションに接続文字列とnameとpasswordを入れる
- ただDBにコネクトしてるだけですね。
UserDto.java
- 主にフィールドでprivate String userId;など定義する。
- 作ったそのフィールドに対しセッターゲッターを作る
UserDao.java
- 最初に作ったConnectionManagerをextendsしています。
- UserIdとPasswordが一致していている数を数えるメソッドを作る
- StringBufferでSQL文を書きます。
- SELECT count(USERID) as count FROM USER WHERE USERID = ? AND PASSWORD = ?
USERテーブルから?(USERID)と?(PASSWORD)をcountって変数?でカウントしますよ~的な。
- PreparedStatement ps =null で格納場所作る
- int count = null countの場所も作っとく
- ps = conn.prepareStatement(sb.toString()); でJDBC接続
- ps.setString(1, userId) 1番目の?にuseridって名前のものを入れる。2も同様。
- ResultSet rs = ps.executeQuery(sb.toString())でSQLの結果を持ってくる
- while(rs.next())でまわすこの中でcountに数字を入れている→return count;
- →countを使わなければwhile文でuserDto.setUserId(rs.getString("USERID"))という感じでまわすreturn userDto;
LoginServlet.java
- String userId = request.getParameter("userId") と("password")を入れる
- Daoで作ったメソッドの戻り値をint countに入れる
- countがなければ最初の画面(ログイン画面)に戻る
- countがあれば次のページへ行ける
- RequestDispatcherで画面を飛ばす!
ざっとこんな感じでした。文章にすると難しいですね。なんか言い方間違えてたりすると思いますが、新人なんで勘弁してくださいな。
明日はセッションでいろいろ保管してページいろいろ実装してきます。