「Java+MySQL+Tomcatで始めるWebアプリケーション構築入門」 正誤表・補遺 --------------------------------------------- p.53 誤:たとえばダブルクオート記号を"に置換する場合は、次のように書かなければ ならない str.replaceAll("\\"","""); Javaの文字列ではダブルクオートを\"と書くが、これを正規表現で表す場合には\\"と 書かなければならないのだ。 正:たとえば数字をxに置換する場合は、次のように書かなければならない str.replaceAll("\\d","x"); 数字一文字を表す正規表現は\dだが、これをreplaceAllメソッドで指定する場合は\\d と書かなければならないのだ。 補足:replaceAllで指定するパターン(最初の引数)は、まず文字リテラルのエスケー プシーケンスが文字コードに変換され、次に正規表現の解釈が行われます。そのため、 正規表現で\記号を使う場合は、リテラルとして\\を指定する必要があるわけです。 拙著でのミスはリテラルのエスケープシーケンスと正規表現を混同した所にありました。 ダブルクオート記号を"に置換する場合は\記号を重ねずに str.replaceAll("\"","""); とします。 この件、スワジランドさんにご指摘いただきました。 ありがとうございます。 --------------------------------------------- p.62, 最後の行 //new --> //cal p.142, 中段やや下 join 【テーブル1】-->【テーブル2】 p.305, 上段 異動先 --> 移動先 p.364, 1行目 createNew --> createNewFile p.405, 中段 grant all on bbs.* to Mulder --> grant all on bbs.* to Mulder identified by 'TrustNo1'; p.420, 3行目 createStatement --> getConnection p.435, 中段 --> 削除(id="user"のほうしか使用していない) p.438, 下段 UserList0.java --> UserList0.jsp 以上、岡田さんにご指摘いただきました。 ありがとうございました。 --------------------------------------------- p.422 User.javaの String strUrl="" は String strUrl=null に訂正してください。 p.425 User.javaのloadメソッドで1行目と12行目の間に  this.strUserName=rs.getString("user_name"); を追加してください。 以上、AKIRAさんにご指摘いただきました。 ありがとうございました。 ---------------------------------------------- P.417 の/BBS/WEB-INF/DBCP/BBS.xml について補足します。 このファイルは、P.404〜P.405で説明しているコンテキストの設定ファイル(BBS.xml) を修正してDBCPが使えるようにするための例です。網かけの部分を conf/Catalina/localhost/BBS.xmlにコピー/ペースト(またはファイル全体を上書き) してください。 また、この設定を有効にするには、Tomcatをリスタートする必要があります。 ----------------------------------------------- P.442ページの UserEdit.jspには正しいコードが書かれていますが、 CD-ROMのコードが違っています。 7行目に次のようなコードがあります。 String strId = request.getParameter("id"); if(strId!=null){ int intId=Integer.parseInt(strId); editUser.load(intId); } この後に else{ editUser.clear(); } を追加してください。次のようになります。 String strId = request.getParameter("id"); if(strId!=null){ int intId=Integer.parseInt(strId); editUser.load(intId); }else{ editUser.clear(); } ----------------------------------------------- P.430 ユーザー名:test パスワード:test では、ログインできません。これは、testユーザーが初期状態で「無効アカウント」に なっているからです。 ユーザー名:admin パスワード:I-have-ABBA でログインして、ユーザー管理画面でtestユーザーの権限を変更するとログインできる ようになります。 ----------------------------------------------- P.413 コードの12行目に「//挿入」というコメントがありますが、正しくは「//更新」です。 下から3行目に「//更新」とありますが、正しくは「//挿入」です。 ----------------------------------------------- P.419 CD-ROMのコードの方に間違いがありました。 /BBS/DbcpTest/UserEdit.jsp の 24行目 誤:strId="0"; 正:strId="新規"; 同57行 誤:<%if(strId.equals("0")){%> 正:<%if(strId.equals("新規")){%> 同77行 誤:<%if(strId.equals("0")){%> 正:<%if(strId.equals("新規")){%> もともと新規の場合は「ID=0」 と表示していたのをやめて 「ID=新規」と表示するようにしたのですが、DbTestの方だ けを修正してDbcpTestのコードを修正するのを忘れていま した。 ----------------------------------------------- P.361 「評価」が選択されていない場合に「評価が指定なし」となるべき所が、 空欄になってしまいます。p.361のコードの一番上の部分を次のように 修正してください。 誤: if(strEval != null){ intEval=Integer.parseInt(strEval); strEvalName = aryEval[intEval]; } 正: if(strEval != null){ intEval=Integer.parseInt(strEval); } strEvalName = aryEval[intEval]; 「じょん」さんにご指摘いただきました。ありがとうございます。 ----------------------------------------------- お詫びして訂正します。