新入社員、DBをJSPとサーブレットに連携させる

こんにちは。シンメトリック新入社員の田中です。先週でオセロのゲーム部分が出来上がり(バグはたくさんありそうですが。。。)今週はゲーム以外の部分について制作していきました。

新入社員、MySQLが動かなくなる

研修課題の要件としては、ゲーム部分以外に、勝率ランキングを出したり、ゲームのプロセスを表示する、などがあります。 それらの機能を実装するためにDBを使うため、今週はDB周りを触っていきました。

まずはDBに入っているデータをJavaで取り出して、表示させる単純なプログラムを書こうと考えました。

そのため、Javaから取り出す用のデータを先にDBに入れるため、MySQLを久しぶりに起動しました。 しかし、何度やってもMySQLのコマンドラインにうまくログイン出来ないという謎の状態が発生しました。 Windowsの方のcmdからも試してみましたが、謎のエラーメッセージが出るだけで、調べても分かりませんでした。 この日はかなりの時間を原因追及に使いましたが、結局分かりませんでした。

最終的にもう一度MySQLをインストールするはめになりましたが、これでMySQLが使えるようになりました。

新入社員、サーブレットとJSPを使う

ようやくMySQLが使えるようになったので、そこに、練習用のデータを入れました。 DBに触るのは1か月ぶりぐらいだったため、コマンドを結構忘れていたのが少しショックでした。

DBを連携させるにあたって、JSPやサーブレットを使うということを先輩社員の方から教えていただいていたので、まずはJSPとは何なのか、サーブレットとは何なのか、を調べることから始まりました。

相変わらず、調べてもふんわりとしか理解できませんでしたが、Javaの中にHTMLを書くのがサーブレットで、HTMLの中にJavaを書くのがJSPということが分かりました。

どちらも同じような機能を持っていますが、サーバ内部の処理はサーブレットで行い、画面表示はJSPで行うようにしました。

新入社員、DBと連携させる

まずは、DBに入っているデータをブラウザで表示させる処理を書きました。これらはデータを取り出したりするだけでしたのでJSPの方で書きました。 ネットで調べると色々出てきたのでこれらを参考にしながら作っていきました。

DBにはユーザ名と試合数、勝利数という項目を作りました。 その中の試合数と勝利数を割り算し、それを高い順に並び替えることによってランキング表を出力しました。

これを使って、オセロの対戦が終わり次第、試合数を+1にし、勝利すれば勝利数も+1にし、DBのデータを更新する。そのデータがランキング表に反映されるようにしようと思っています。

オセロ画面ではまだユーザ名などの情報を持てていないため、ユーザ名を連携させ次第作っていこうと思っています。

新入社員、ログイン機能を作る

オセロの対戦が終わり次第、ユーザ名と対戦結果をDBに入れるのですが、ユーザ名をずっと保持させたいので、ログイン機能を付けました。

ここではログイン機能とログアウト機能、新規登録機能を実装しました。

新規登録でDBにユーザ名とパスワードを入力するとそのデータがDBに格納されます。 次に登録したユーザ名とパスワードをログインページに入力したら、DBに同じデータがあるのかを参照し、あればログイン成功という形で作りました。

ユーザ名やパスワードの入力画面などはJSPの方で書き、ログインのチェックなどの部分はサーブレットの方で書きました。

images (1)

まだこれらは単体でしか動いていないのでそのログイン情報をオセロ画面でも保持できるようにしていきたいと思っています。

来週にはその辺も含め、今まで作った処理を合体させて最初から最後まで一連の流れがスムーズに動くようにしていきたいと思います。 後はサーバを構築し、作ったオセロをローカルではなくても使えるようするのも来週やろうと考えています。

計画としては、再来週の20日から6月末までの間はあまり新しく機能を追加しようとはしないで、デザインとテストをしっかりとやっていこうと思います。なので20日までには頑張って、一通りの処理を全て実装できるようにしたいと考えています。