DBクエストII〜JSP(悪霊)の神々〜



TECHNICAL MASTERはじめてのJavaフレームワークStruts/Spring/Hibernate対応

TECHNICAL MASTERはじめてのJavaフレームワークStruts/Spring/Hibernate対応

前回までのあらすじ


 ゆうしゃ じゅいち は 
はじめてのJavaフレームワーク の たすけで
ポストグレを つかいこなし 
ネットビーンズの ぼうがいを しりぞけ
みごとDB(データベース)を みつけだした。


 だが ウェブにんしょう を おこなうためには
JSPを つかいこなさなければ ならないという。
ゆうしゃ じゅいち の ぼうけんは つづく・・・



 えー、前回までで、postgreSQLデータベースのインストールと、JavaServletによるデータベース(以下DB)の表への書き込み・読み出しを成功させました。
 今回は、ネットゲームの入り口である、ゲームユーザーのアカウント登録システムの作成に挑戦しました。


 たいていのネットゲームではwebページ上でユーザー登録を行います。正確には

  1. まだ使われていないユーザーアカウント(ユーザーID)なのかチェック
  2. 未使用IDなら、パスワードと連絡先メルアドを仮登録(その他個人情報を登録することもある)
  3. 登録メルアド宛に確認メールを送り、そこから正式認証用webページにアクセスさせる。
  4. 正式ページにアクセスしてきたら正式登録し、プレイを許可する。



 という流れな訳ですが、面倒なので確認メールの部分はカット。仮登録を正式登録にしちゃいます。これでグッっと楽になった。
 未使用IDかどうかの判定は参考書に似た記述があるので流用。こりゃーあっさり出来そうだ。


 ・・・と、思ったのが甘かった。(またこのパターンかよorz)


 この本はEclipseを対象にしているのでNetBeans使いとしてはとまどったが、実はNetBeansの方が総合的にはラクチン。そのためにわざわざ新しいプロジェクトを立ち上げなくてはいけないのが業腹だが、ソースの移動は自動リファクタリングされるので問題ないから許す。
 新規プロジェクト→Web→Webアプリケーション(→あとはデフォルトのまま次へ→次へ→完了)で、index.jspファイルとweb.htmlファイルを自動的に作ってくれるのでそれを参考に、後は本に書いてあるとおり書き足し、Servlet用のJavaファイルとindex.htmlとresult.jspを作成。するだけで良い。postgreやcodecのドライバー登録も前回同様。楽だ。


 ・・・が、動かない(涙)。


 いつものように目を皿のようにしてケアレス入力ミスを潰してゆくが、うんともすんとも言わない。なにしろindex.htmlからフォーム入力を送ってもサーブレットサーバーが要求されたリソースは存在しない(404エラー)と返してくるのだ。とりあえずサーブレットが動作しそうな環境にはなっていることは伺えるが、スタートページからJavaファイルにアクセスできないことには話しにならない。
 最後に、始めから気になっていた部分をいじる。
 Webアプリケーションプロジェクトに対して新規ファイル→サーブレットとすると、Web.xmlファイルにおいて自動生成される部分が出現する。その内の

    <servlet-mapping>
        <servlet-name>New1Servlet</servlet-name>
        <url-pattern>/New1Servlet</url-pattern>
    </servlet-mapping>

というurl-patternタグの対象URLが本と違うのだ。本の方(Eclipse)は

    <servlet-mapping>
        <servlet-name>New1Servlet</servlet-name>
        <url-pattern>/servle/New1</url-pattern>
    </servlet-mapping>

こんな感じになっていた。なお、このNew1ServletはJavaファイルで、もちろんこの名前のファイルであり、New1というファイルは存在しない。どうやら○○Servletと名前を付けて/servlet/○○と変換して自動生成するのがEclipse流なのだろう。対してNetBeansではそのままURLになるのだ。始めはそう考えていた。
 しかしどうも違うらしい。本と同じ/servle/New1と書き直すとちゃんと動作してくれたのだ!なんだこりゃ?
壊れてんのか!?NetBeans


 今日エラー動作の検証のためにまた新規にプロジェクトを作成し、サーブレットファイルを作ってみた。作るだけでWeb.xmlファイルに自動的にがコーディングされるのはラクチンである。が、気になるところが出現。ファイル作成の最後のページにURLパターンを入力する欄があったのだ。デフォルトは上記の最初のように/New1Servletとなっていた。
 あっ!もしかして!
 もう覚えていないが、最初の作成時にここをいじったためにおかしくなったのではないか?
 いや、しかし。しかしだ。Web.xmlファイルをNetBeansで編集すると、「一般」「サーブレット」「フィルタ」「ページ」「参照」「セキュリティー」「XML」のタグが見えるが(どのタグの中身見てもチンプンカンプンなんすけど|||orz)、ここの「サーブレット」の中に作成時とよく似たURLパターンの欄があるのだ。これを/servle/New1に変えるとなんと自動生成されていた「XML」タグ内ののコードも/servle/New1に変化していた!
 まーつまり、ここは連動していて、フォームからの入力を受け入れるURLはいつでも変更可能だ、ということらしい。(このタグを全部使いこなせるようになったらスゴイことできそうだな・・・)ということはここをいじったから、というのはツジツマが合わない。いじって/servle/New1になっていたのなら何の問題もなかったからだ。むしろいじらなかったから今の問題がある。・・・とにかく関係なさそうだ。ヤレヤレ。


もーーーー!!


ワケ分かんねーよ(怒)!!


俺の怒り度はっ


一秒間に地球を


7回り半するぞコラァ!!