Java知識ゼロからはじめる入門書
段階を追ってJSP/サーブレットを懇切丁寧に説明してあります。レッスンで取り上げているサンプルは、簡単ですがすぐに使える便利なものばかりです。
1レッスンごと実際に自分でサンプルを作って、動かしてもらいます。
解説を読んで内容を理解したら、本書の通りに実践して基本知識とテクニックをがっちり固めます。
更新履歴
- FAQ情報:2004年7月21日 更新
- 正誤訂正:2005年3月2日 更新
目次
- 第1日目:JSPの基本的な構造を学ぼう
- 1時限目:おぼえようJSPの基本
- 2時限目:繰り返し処理を構築してみよう(1)
- 3時限目:フォームからの入力を受け取ろう
- 4時限目:繰り返し処理を構築してみよう(2)
- 第2日目:ユーザリクエストの処理を学ぼう
- 1時限目:クエリ情報を活用してみよう
- 2時限目:ヘッダ情報を取得してみよう
- 3時限目:クッキーを活用してみよう
- 第3日目:クラスで拡がるJSPの世界<基本篇>
- 1時限目:HTMLの予約文字をエンコードする
- 2時限目:日付の計算をしてみよう
- 3時限目:連想配列を活用してみよう
- 第4日目:クラスで拡がるJSPの世界<正規表現・ファイル篇>
- 1時限目:正規表現検索に挑戦しよう
- 2時限目:テキストファイルを読み取ってみよう
- 3時限目:カスタムログを記録しよう
- 第5日目:XML+XSLT/DOMでより高度なデータ処理
- 1時限目:XSLTを使ってXML文書を表示しよう
- 2時限目:DOMでXMLからデータを抽出してみよう
- 3時限目:DOMでXML文書を編集してみよう
- 第6日目:JDBCでカンタン データベース連携<基本篇>
- 1時限目:データベースに新規データを登録する
- 2時限目:データベースを検索してみよう
- 3時限目:データベースのデータを更新、削除する
- 第7日目:JDBCでカンタン データベース連携<応用篇>
- 1時限目:データベースアクセスを効率化しよう
- 2時限目:データベースの構造情報を参照しよう
- 3時限目:データベースからデータをダウンロードする
- 第8日目:サーブレット技術の基本的な構造を学ぼう
- 1時限目:おぼえようサーブレットの基本
- 2時限目:HTMLからサーブレットを呼び出そう
- 3時限目:サーブレットから外部リソースを扱ってみよう
- 第9日目:JavaBeans導入でWeb開発の効率化
- 1時限目:サーブレットからJava Beansを呼び出そう
- 2時限目:Beansからサーブレットにデータを渡そう
- 3時限目:JSPからJava Beansを呼び出そう
- 第10日目:カスタムタグ、フィルタによる開発・運用の効率化
- 1時限目:タグライブラリを利用しよう
- 2時限目:オリジナルのタグを作成してみよう
- 3時限目:フィルタでログ収集をしてみよう
- 付録
- 練習問題解答
- 索引
- 50音順索引
正誤表
| 該当頁 | 該当箇所 | 修正刷 |
|---|---|---|
| 訂正箇所 | 訂正事項 | 更新日 |
| Orientation p.42 | 第0日 ④環境変数を設定する スクリプト3行目 | 2刷 |
| # export CLASSPATH==.:$TOMCAT_HOME~ | # export CLASSPATH=.:$TOMCAT_HOME~ | 2002/06/03 |
| Orientation p.34 | MySQLを起動する 4行目 | 2刷 |
| [OK]ボタンをクリックします | [Cancel]ボタンをクリックします | 2002/06/23 |
| p.13 | 【p_intro.jsp】スクリプト2行目 | 7刷 |
| buffer="8" | buffer="8kb" (Tomcat4.1以降をお使いの場合はkbを追記してください) |
2003/11/20 |
| p.22 | 4行目 doble型のサイズ5の説明 | 4刷 |
| double[] dblNum=new double[4] | double[] dblNum=new double[5] | 2002/10/17 |
| p.27 | 【err.jsp】スクリプト2行目 | 2刷 |
| Shift_JIS" import="java.io.*"isErrorPage="true" | Shift_JIS" import="java.io.*" isErrorPage="true" ←isErrorPageの前にスペースを入れてください | 2002/06/24 |
| p.32 | (4)チェックボックス (ソース下のスクリーンショット) | 2刷 |
| チェックのあるもの オレンジ | チェックのあるもの オレンジ、りんご | 2002/06/24 |
| p.52 | 【p1_kuku.jsp】スクリプト20行目 | 5刷 |
| if(I*j>40){bresk;} | if(I*j>40){break;} | 2003/02/13 |
| p.67 | 【headers.jsp】5~6、19~20行目 | 2刷 |
| 5 </head> 6 <h1 style="background:#cccccc">ヘッダ情報の取得</h1> (中略) 19 </table> 20 </html> |
5 </head> <body> ←1行追加 6 <h1 style="background:#cccccc">ヘッダ情報の取得</h1> (中略) 19 </table> </body> ←1行追加 20 </html> |
2002/07/05 |
| p.68 | 表中のヘッダ名 | 2刷 |
| reffer | referer | 2002/06/24 |
| p.71 | 3行目 | 6刷 |
| 15 <% out.print("strNam"); %> </th> | 15 <% out.print(strNam); %> </th> ←「"」をとる | 2003/07/17 |
| p.73 | 【p1_lang.jsp】スクリプト1行目 | 2刷 |
| <%@page contentType="text/html;charset=Shift_JIS" "%> | <%@page contentType="text/html;charset=Shift_JIS"%> | 2002/06/24 |
| p.99 | lastIndexOfメソッドの構文 | - |
| Stringオブジェクト.IndexOf(部分文字列[,検索開始位置]) | Stringオブジェクト.lastIndexOf(部分文字列[,検索開始位置]) | 2004/08/17 |
| p.112 | 【p_birth.jsp】 スクリプト35~37行目 | 2刷 |
| 35 <body onload="alart(\\'<%=strMsg %>\\')"> 36 </head> 37 <body> |
35 </head> 36 <body onload="alart(\\'<%=strMsg %>\\')"> 37 削除してください |
2002/06/21 |
| p.154 | 【p_addrec.jsp】スクリプト23行目 | 4刷 |
| response.sendRedirect("p1_addrec.html"); | response.sendRedirect("p_addrec.html"); | 2002/12/04 |
| p.156 | 第5日1時限目 サンプルファイルはこちら | 2刷 |
| table.xsl | list.xsl | 2002/05/30 |
| p.159 | 【xslt.jsp】スクリプト5行目 | 6刷 |
| ~day05-1/table.xsl"); | ~day05-1/list.xsl"); | 2002/12/31 |
| p.163 | 本文1行目 | 7刷 |
| (現在は1.1です) | (現在は1.0です) | 2003/10/19 |
| p.163 | 本文下から2行目 | 7刷 |
| <address>要素がルート要素であり、 | <addbook>要素がルート要素であり、 | 2003/10/19 |
| p.166 | 4 JSPでXSLT変換を行う手順 スクリプト5行目 | 7刷 |
| ~day05-1/table.xsl"); | ~day05-1/list.xsl"); | 2003/10/16 |
| p.169 | ヒント スクリプト5行目 | 6刷 |
| table.xslは本文で~ | list.xslは本文で~ | 2002/12/31 |
| p.177 | Nodeオブジェクトのメソッド一覧表 (2つ目のメソッド名) | 6刷 |
| geLastChild | getLastChild | 2002/12/31 |
| p.210 | 【p_softDsc.jsp】スクリプト3行目 | 6刷 |
| String id=;[⑦]; | String id=[⑦]; | 2003/01/31 |
| p.224 | 【prepare.jsp】30~31行目 | 3刷 |
| 30 %> 31 </body> |
30 %> </table> ←1行追加 31 </body> |
2002/10/26 |
| p.233 | 【p_prepare2.jsp】スクリプト20行目 | - |
| ~getParameter("id" + i )) | ~getParameter("id" + i )); ←末尾にセミコロンを追加 | 2004/08/09 |
| p.285 | 【p1_srv_reader.java】スクリプト6行目 | 6刷 |
| 6 public class srv_reader extends HttpServlet { | 6 public class p1_srv_reader extends HttpServlet { | 2002/12/31 |
| p.295 | 【bean_dbInsert.java】スクリプト7行目 (P.297解説部も同様) | 6刷 |
| public void bean_dbInsert(){} | public bean_dbInsert(){} | 2003/02/19 |
| p.322 | 【bean_dbSeach.java】スクリプト8行目 | 2刷 |
| private ArrayList | private ArrayList result; | 2002/06/20 |
| p.328 | 【p_dbMvc.jsp】スクリプト15行目 | 6刷 |
| 15 <td><%=dbb.getId(i)></td> | 15 <td><%=dbb.getId(i)%></td> | 2002/12/31 |
| p.344 | 【text2table.java】スクリプト11~13行目 | - |
| 11 String file = ""; 12 String titleColor = "#FFffCC"; 13 String dataColor = "#FFffFF"; |
11 private String file = ""; 12 private String titleColor = "#FFffCC"; 13 private String dataColor = "#FFffFF"; |
2005/03/02 |
| p.350 | 手順4 属性値をセットする 本文解説、スクリプト内の行番号 | - |
| 10~12、43~45行目に注目してください。 10 private String file = ""; 11 private String titleColor = "#FFffCC"; 12 private String dataColor = "#FFffFF"; ・・・ 43 public void setTitleColor(String titleColor){this.titleColor=titleColor;} 44 public void setDataColor(String dataColor){this.dataColor=dataColor;} 45 public void setFile(String file){this.file=file;} |
11~13、45~47行目に注目してください。 11 private String file = ""; 12 private String titleColor = "#FFffCC"; 13 private String dataColor = "#FFffFF"; ・・・ 45 public void setTitleColor(String titleColor){this.titleColor=titleColor;} 46 public void setDataColor(String dataColor){this.dataColor=dataColor;} 47 public void setFile(String file){this.file=file;} |
2005/03/02 |
| p.353 | 【p__txetWriter.jsp】スクリプト14行目 | 6刷 |
| 14 String[] srtElm={"no","nam","sex","old","tel","add"}; | 14 String[] srtElm={"no","nam","sex","tel","add"}; | 2002/12/31 |
| p.358 | 【logFilter.java】スクリプト13行目 | 6刷 |
| 13 ~ServletContext=config.getServletContext(); | 13 ~ServletContext context=config.getServletContext(); | 2002/12/31 |
| p.405 | 第9日3時限目練習問題の解答 | 6刷 |
| p_Mvc.jspは~ | p_dbMvc.jspは~ | 2002/12/31 |
| p.409 | 第10日3時限目練習問題の解答 | 6刷 |
| mysql > SELECT * FROM log-rec; | mysql > SELECT * FROM log_rec; | 2002/12/31 |
FAQ
バージョンアップに伴い、無名ユーザでのパスワード設定が不可となりました。そのため、MySQL4.0.20を使用する場合、パスワード設定はrootユーザでないと実行できなくなります。
パスワード設定をする場合は、コマンドプロンプトから、以下のように入力してください。
=======================================================
> C:\mysql\bin\mysql -u root
Welcome to the MySQL monitor. Commands end with ; or \g.
…(中略)…
mysql> SET PASSWORD FOR root@localhost=PASSWORD('root');←【パスワードを設定】
パスワード設定をする場合は、コマンドプロンプトから、以下のように入力してください。
=======================================================
> C:\mysql\bin\mysql -u root
Welcome to the MySQL monitor. Commands end with ; or \g.
…(中略)…
mysql> SET PASSWORD FOR root@localhost=PASSWORD('root');←【パスワードを設定】
更新日: 2004.07.21
Tomcat4.1.12以降で無名サーブレット(web.xmlに明示的に登録しないサーブレット)がデフォルトで無効に変更されています。
Conf/web.xmlの以下の箇所のコメントアウトを外してください。
<!-- ←削除
<servlet>
<servlet-name>invoker</servlet-name>
<servlet-class>
org.apache.catalina.servlets.InvokerServlet
</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>0</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>
--> ←削除
・・・(中略)・・・
<;!-- ←削除
<servlet-mapping>
<servlet-name>invoker</servlet-name>
<url-pattern>/servlet/*</url-pattern>
</servlet-mapping>
--> ←削除
Conf/web.xmlの以下の箇所のコメントアウトを外してください。
<!-- ←削除
<servlet>
<servlet-name>invoker</servlet-name>
<servlet-class>
org.apache.catalina.servlets.InvokerServlet
</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>0</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>
--> ←削除
・・・(中略)・・・
<;!-- ←削除
<servlet-mapping>
<servlet-name>invoker</servlet-name>
<url-pattern>/servlet/*</url-pattern>
</servlet-mapping>
--> ←削除
更新日: 2004.02.16
RedHatにCコンパイラ関係のモジュールがインストールされていないようです。
以下のURLを参考になさってみてください。
http://www.kt.rim.or.jp/~nozawat/gcc.html
以下のURLを参考になさってみてください。
http://www.kt.rim.or.jp/~nozawat/gcc.html
更新日: 2003.07.27
mod_webappsの正式サポートが4.0.2からWindows版では外れました。
環境によってはmod_webapp より mod_jk2を使用するか、Tomcat単体で使用なさったほうが良いかもしれません。
Mod_jk2によるApache連携方法については以下のサイトをご参照ください。
Windows:
https://wings.msn.to/index.php/-/B-08/jsp_win_connector/
Linux:
https://wings.msn.to/index.php/-/B-08/jsp_lin_connector/
環境によってはmod_webapp より mod_jk2を使用するか、Tomcat単体で使用なさったほうが良いかもしれません。
Mod_jk2によるApache連携方法については以下のサイトをご参照ください。
Windows:
https://wings.msn.to/index.php/-/B-08/jsp_win_connector/
Linux:
https://wings.msn.to/index.php/-/B-08/jsp_lin_connector/
更新日: 2003.03.21
Tomcat 4.1.12からはInvokerServletがデフォルトで無効になっております。
http://jakarta.apache.org/site/news.html
24 September 2002 - Security updates: Tomcat 4.1.12
Stable and Tomcat 4.0.5 Released
が参考になります。
http://jakarta.apache.org/site/news.html
24 September 2002 - Security updates: Tomcat 4.1.12
Stable and Tomcat 4.0.5 Released
が参考になります。
更新日: 2002.12.04
以下の内容を試してみてください。
c:\mysql\binへのパスが通っているか確認してください。
my.ini、my.cnfの設定を行ってください(本書コラムP.243参照)。
二度目以降の展開に際しては、一度データベースをDROPしてください(さもないと、既に存在している旨がエラー表示されます)。
また、以下のサイトも参考になりますので、MySQLの基本的なオペレーションを知りたい方は併せて参照ください。
http://homepage1.nifty.com/gak/webdb/mysql.html
c:\mysql\binへのパスが通っているか確認してください。
my.ini、my.cnfの設定を行ってください(本書コラムP.243参照)。
二度目以降の展開に際しては、一度データベースをDROPしてください(さもないと、既に存在している旨がエラー表示されます)。
また、以下のサイトも参考になりますので、MySQLの基本的なオペレーションを知りたい方は併せて参照ください。
http://homepage1.nifty.com/gak/webdb/mysql.html
更新日: 2002.10.26
J2SEには確かにServletAPIが入っていませんが、代わりに Tomcatにservlet.jarが含まれています。
servlet.jarへのCLASSPATHがきちんと通っているかどうか確認してみてください。
servlet.jarへのCLASSPATHがきちんと通っているかどうか確認してみてください。
更新日: 2002.10.19
> mysqladmin -u root -p DROP xxxx (xxxxはデータベース名を入力)で一度データベースを削除してから再度データを展開してみてください。
更新日: 2003.06.04
MySQLのデフォルトの文字コードがLatin1という欧米系の文字コードであるため、環境によっては文字化けが発生したり、データを正常にインポートできないことがあります。
Windowsの場合はシステムフォルダ配下の「my.ini」、Linuxの場合は「/etc/my.cnf」に以下のコードを追加し文字コードを明示的に指定してください。
[mysqld]
default-character-set=sjis
[mysql]
default-character-set=sjis
(Linuxの場合はsjisの部分をujisとしてください。)
以下のサイトも参考になりますので、ご参照ください。
http://www.kent-web.com/pubc/jcode/
Windowsの場合はシステムフォルダ配下の「my.ini」、Linuxの場合は「/etc/my.cnf」に以下のコードを追加し文字コードを明示的に指定してください。
[mysqld]
default-character-set=sjis
[mysql]
default-character-set=sjis
(Linuxの場合はsjisの部分をujisとしてください。)
以下のサイトも参考になりますので、ご参照ください。
http://www.kent-web.com/pubc/jcode/
更新日: 2002.06.24
MySQLを起動してから、確認をおこなってください。
更新日: 2003.11.07
c:\windows配下のautoexec.batというファイルを編集します。エディタ(メモ帳など)で開いて、autoexec.batの末尾に、各環境変数と値を入力してください。環境変数が「JAVA_HOME」、設定したい値が「c:\j2sdk1.4.1_02」のときは、
SET JAVA_HOME=C:\j2sdk1.4.1_02
と入力します。他の環境変数も同様に追加してください。
すべて追加したら、OSを再起動してください。
SET JAVA_HOME=C:\j2sdk1.4.1_02
と入力します。他の環境変数も同様に追加してください。
すべて追加したら、OSを再起動してください。
更新日: 2003.04.10
第0日lページのようにhttpd.confを編集をしている(jsp10を入れている)かど うかご確認ください。
更新日: 2002.06.12
S-JIS表示の場合「ソ」「表」「能」などは2バイト文字の後ろ側が「\」なので、エスケープしないと文字化けしてしまいます。「ソ\フト」「芸能\人」というように入力すれば正しく表示されます。
以下のサイトも参考になりますので、ご参照ください。
http://www.kent-web.com/pubc/jcode/
以下のサイトも参考になりますので、ご参照ください。
http://www.kent-web.com/pubc/jcode/
更新日: 2002.11.18
Utilityタグライブラリは現在「非推奨」の扱いとなり、現バージョンでは動作できないようです。
同じような機能としては、Commons Validatorなどがあります。
http://jakarta.apache.org/commons/validator/index.html
同じような機能としては、Commons Validatorなどがあります。
http://jakarta.apache.org/commons/validator/index.html
更新日: 2003.07.23
お問い合わせ
書籍に関するご質問や誤りのご報告、ご意見・ご感想などをお寄せください。
お問い合わせの前にFAQ・正誤表をご確認ください。すでに掲載済みの内容については個別回答が難しい場合があります。