webアプリケーション構築 java 7版...java入門 java7版 b5変 371頁...

41

Upload: others

Post on 27-May-2020

4 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Webアプリケーション構築 Java 7版...Java入門 Java7版 B5変 371頁 定価(本体2,000円+税) 好評発売中! Javaバイブルシリーズ オブジェクト指向プログラミング

(本体 2,800 円+税)

好評発売中 !

HTML演習HTML5対応版

著者:中島省吾●B5変 305頁●定価(本体2,000円+税)

好評発売中 !

JavaバイブルシリーズJava入門 Java7版

●B5変 371頁●定価(本体2,000円+税)

好評発売中 !

Javaバイブルシリーズオブジェクト指向プログラミングJava7版

●B5変 421頁●定価(本体2,000円+税)

Webア�リ構築カ�ー.indd 1 13.2.18 6:31:41 PM

Page 2: Webアプリケーション構築 Java 7版...Java入門 Java7版 B5変 371頁 定価(本体2,000円+税) 好評発売中! Javaバイブルシリーズ オブジェクト指向プログラミング

● OracleとJavaは、Oracle Corporation 及びその子会社、関連会社の米国及びその他の国における

登録商標です。

●Eclipseは米国およびその他の国における Eclipse Foundation, Inc. の商標もしくは登録商標です。

●MySQLの名称及びロゴは、Oracle Corporationの登録商標または商標です。

●Apache Tomcat、Tomcat、Apacheは、Apache Software Foundationの登録商標または商標です。

● Windowsは米国Microsoft Corporationの米国およびその他の国における登録商標です。

● その他記載された会社名およびロゴ、製品名などは該当する各社の商標または登録商標です。

● 本書では™および®の記載は省略しました。

Webアプリ_00巻頭_130212.indd 2 13/02/12 14:14

Page 3: Webアプリケーション構築 Java 7版...Java入門 Java7版 B5変 371頁 定価(本体2,000円+税) 好評発売中! Javaバイブルシリーズ オブジェクト指向プログラミング

i

はじめに

インターネットが人々の生活基盤と位置付けられて久しくなった今日、特にWebアプリを利用した情報の

入力や活用はより重要性を増しています。

本書は、Webアプリケーションの構築方法として入門的なApache Tomcatサーバに焦点を当て、その動

作のしくみの学習とWebアプリケーションを作る手順について小さなサンプル作成を通して学んでいくも

のです。また、インターネットを身近に利用するとき今日ではサーバのしくみに脆弱性対策は欠かせな

い条件となっており、本書はこうした観点にも触れることとしました。

Javaを学習した方が実用的なプログラムとしてWebアプリケーションを作る一助となれば幸いです。

対象とする読者

本書は、次のような技術に関する基礎的な知識を有している人を対象に、サーバサイドJavaを使って

Webアプリケーションを構築できるようになることを目標としています。

・Javaプログラミングの基礎知識

オブジェクト指向技術(継承、インスタンス、実装、ポリモルフィズムなど)の簡単なプログラムをJava

で作成することができる。

・データベースに関する基礎知識

リレーショナルデータベースに関して基礎知識とテーブルの作成、検索、更新、削除などをSQL命令

で操作できる。

・HTMLの基礎知識

<table>や<form>など基本的タグを理解している。また、HTMLを使ってWebページを作成することがで

きる。

・インターネットプロトコルの基礎知識

TCP/IPの概略とOSI階層を理解している。クライアント/サーバ間のパケットの要求・応答を理解して

いる。

Webアプリ_00はじめに_13212.indd 1 13/02/12 14:14

Page 4: Webアプリケーション構築 Java 7版...Java入門 Java7版 B5変 371頁 定価(本体2,000円+税) 好評発売中! Javaバイブルシリーズ オブジェクト指向プログラミング

ii

サポート情報/サンプルプログラム

本書に記載された項目に関する最新情報や、サンプルプログラムなどを、必要に応じて公開しています。

<URL> http://www.scc-kk.co.jp/scc-books/support/B-364/support.html

本書の概要/標準学習時間

章 概要 学習時間

(1時限=90分)

第1章 Webサーバの構成要素 TCP/IPにおけるリクエストとレスポンス、

動的Webコンテンツ 1.0時限

第2章 簡単なWebアプリケーション EclipseとTomcatによる初歩的サーブレット

作成方法 6.0時限

第3章 JSP JSPの基本文法

4.0時限

第4章 プログラム間のつながり セッションの概念を中心に複数ページで構

成されるWebアプリの考慮事項 4.0時限

第5章 JavaBeans JavaBeansの基本事項

4.0時限

第6章 JDBCドライバによるDB操作 MySQLを操作するJDBC例題

3.0時限

第7章 ユーザ認証 Webアプリでのログイン方法

2.0時限

第8章 システムの統合化 1~7章の技術を総復習した実習

3.0時限

第9章 セキュリティ確保の実現 安全なWebアプリ構築方法

1.0時限

第10章 フールプルーフ 利用者の誤操作への対策

1.0時限

第11章 総合演習 第8章の構築実習に基づいた応用実習 (模範解答は本書には記載していません。上記

のサポート情報ページからダウンロードすること

ができます。)

15.0時限

付録1 Eclipse、Tomcat、MySQLなどのインストー

ル作業 1.0時限

合計 45.0時限

学習時間はあくまでも目安です。理解度に合わせて、さらに時間をかけて学習しても構いません。

iii

プログラムのソースコード 本書ではソースコードがどこにあるかが一目でわかるように、ソースコードに背景色を付けています。ま

た、ソースコードで使用する文字で紛らわしいものに関しては以下のように区別しやすい形にしてありま

す。

ナビゲーションマップ 本書の学習の順序は以下を想定しています。

表記 意味

1  数字の1(イチ)

l  英小文字の(l エル)

I  英大文字の(I アイ)

0  数字の0(ゼロ)

o  英小文字のo(オー)

O  英大文字のO(オー)

付録1 第1章

第11章 第10章

第9章第8章

第7章

第6章第5章 第4章第3章

第2章 選択省略可

必修内容

先行する章は

必須の前提知識 途中の章知識

を習得済みであれ

ば省略可能

Webアプリ_00はじめに_13212.indd 2 13/02/12 14:14

Page 5: Webアプリケーション構築 Java 7版...Java入門 Java7版 B5変 371頁 定価(本体2,000円+税) 好評発売中! Javaバイブルシリーズ オブジェクト指向プログラミング

ii

サポート情報/サンプルプログラム

本書に記載された項目に関する最新情報や、サンプルプログラムなどを、必要に応じて公開しています。

<URL> http://www.scc-kk.co.jp/scc-books/support/B-364/support.html

本書の概要/標準学習時間

章 概要 学習時間

(1時限=90分)

第1章 Webサーバの構成要素 TCP/IPにおけるリクエストとレスポンス、

動的Webコンテンツ 1.0時限

第2章 簡単なWebアプリケーション EclipseとTomcatによる初歩的サーブレット

作成方法 6.0時限

第3章 JSP JSPの基本文法

4.0時限

第4章 プログラム間のつながり セッションの概念を中心に複数ページで構

成されるWebアプリの考慮事項 4.0時限

第5章 JavaBeans JavaBeansの基本事項

4.0時限

第6章 JDBCドライバによるDB操作 MySQLを操作するJDBC例題

3.0時限

第7章 ユーザ認証 Webアプリでのログイン方法

2.0時限

第8章 システムの統合化 1~7章の技術を総復習した実習

3.0時限

第9章 セキュリティ確保の実現 安全なWebアプリ構築方法

1.0時限

第10章 フールプルーフ 利用者の誤操作への対策

1.0時限

第11章 総合演習 第8章の構築実習に基づいた応用実習 (模範解答は本書には記載していません。上記

のサポート情報ページからダウンロードすること

ができます。)

15.0時限

付録1 Eclipse、Tomcat、MySQLなどのインストー

ル作業 1.0時限

合計 45.0時限

学習時間はあくまでも目安です。理解度に合わせて、さらに時間をかけて学習しても構いません。

iii

プログラムのソースコード 本書ではソースコードがどこにあるかが一目でわかるように、ソースコードに背景色を付けています。ま

た、ソースコードで使用する文字で紛らわしいものに関しては以下のように区別しやすい形にしてありま

す。

ナビゲーションマップ 本書の学習の順序は以下を想定しています。

表記 意味

1  数字の1(イチ)

l  英小文字の(l エル)

I  英大文字の(I アイ)

0  数字の0(ゼロ)

o  英小文字のo(オー)

O  英大文字のO(オー)

付録1 第1章

第11章 第10章

第9章第8章

第7章

第6章第5章 第4章第3章

第2章 選択省略可

必修内容

先行する章は

必須の前提知識 途中の章知識

を習得済みであれ

ば省略可能

Webアプリ_00はじめに_13212.indd 3 13/02/12 14:14

Page 6: Webアプリケーション構築 Java 7版...Java入門 Java7版 B5変 371頁 定価(本体2,000円+税) 好評発売中! Javaバイブルシリーズ オブジェクト指向プログラミング

iv

目次

第1章 Webサーバの構成要素 ·································································································· 1

1-1 Webサーバの構成 ··········································································································· 2

1-2 HTTPリクエストとHTTPレスポンス ··········································································· 3

1-3 静的Webコンテンツと動的Webコンテンツ ······························································ 8

1-4 本書での開発と実行環境 ························································································· 10

第2章 簡単なWebアプリケーション ······················································································· 11

2-1 Eclipseによるサーブレットの開発手順 ································································ 12

2-2 サーブレットの基本事項 ···························································································· 34

2-3 サーブレットでの文字コードとエンコード ····························································· 41

2-4 リクエストによる入力値の受け取り ······································································· 47

練習問題 ···································································································································· 63

第3章 JSP ······································································································································ 71

3-1 JSPとは ···························································································································· 72

3-2 はじめてのJSP ·············································································································· 73

3-3 JSPコンパイル ··············································································································· 79

3-4 JSPの基本的なタグ ···································································································· 82

3-5 ディレクティブ(Directive) ·························································································· 88

3-6 コメント ······························································································································ 91

練習問題 ···································································································································· 93

第4章 プログラム間のつながり ······························································································ 97

4-1 クッキー ···························································································································· 98

4-2 セッション ······················································································································· 110

4-3 フォワード ······················································································································· 128

4-4 リダイレクト ···················································································································· 135

4-5 スコープとJSP暗黙オブジェクト ············································································ 140

練習問題 ·································································································································· 150

v

第5章 JavaBeans ····················································································································· 151

5-1 JavaBeansとは ············································································································ 152

5-2 JSPのアクションタグ ································································································· 154

5-3 JSP,Beansを応用したMVCモデル ···································································· 160

5-4 「学生登録アプリケーション」の作成 ··································································· 172

練習問題 ·································································································································· 183

第6章 JDBCドライバによるDB操作 ··················································································· 187

6-1 JDBCドライバとは ······································································································ 188

6-2 DB準備 ··························································································································· 189

6-3 DB操作するサーブレット概要 ··············································································· 194

6-4 表の参照 ························································································································ 195

6-5 行の挿入 ························································································································ 200

6-6 行の更新 ························································································································ 204

6-7 行の削除 ························································································································ 208

練習問題 ·································································································································· 212

第7章 ユーザ認証 ··················································································································· 215

7-1 Tomcatのユーザ認証機能 ····················································································· 216

7-2 ユーザ認証のサンプルプログラム ······································································ 224

7-3 ユーザ認証機能のポイント ···················································································· 238

第8章 システムの統合化 ······································································································ 239

8-1 システムの統合化 ······································································································ 240

第9章 セキュリティ確保の実現 ··························································································· 261

9-1 SQLインジェクション ·································································································· 262

9-2 クロスサイトスクリプティング(XSS) ···································································· 270

9-3 ディレクトリトラバーサル ·························································································· 276

9-4 その他の脆弱性について ······················································································· 282

Webアプリ_00はじめに_13212.indd 4 13/02/12 14:14

Page 7: Webアプリケーション構築 Java 7版...Java入門 Java7版 B5変 371頁 定価(本体2,000円+税) 好評発売中! Javaバイブルシリーズ オブジェクト指向プログラミング

iv

目次

第1章 Webサーバの構成要素 ·································································································· 1

1-1 Webサーバの構成 ··········································································································· 2

1-2 HTTPリクエストとHTTPレスポンス ··········································································· 3

1-3 静的Webコンテンツと動的Webコンテンツ ······························································ 8

1-4 本書での開発と実行環境 ························································································· 10

第2章 簡単なWebアプリケーション ······················································································· 11

2-1 Eclipseによるサーブレットの開発手順 ································································ 12

2-2 サーブレットの基本事項 ···························································································· 34

2-3 サーブレットでの文字コードとエンコード ····························································· 41

2-4 リクエストによる入力値の受け取り ······································································· 47

練習問題 ···································································································································· 63

第3章 JSP ······································································································································ 71

3-1 JSPとは ···························································································································· 72

3-2 はじめてのJSP ·············································································································· 73

3-3 JSPコンパイル ··············································································································· 79

3-4 JSPの基本的なタグ ···································································································· 82

3-5 ディレクティブ(Directive) ·························································································· 88

3-6 コメント ······························································································································ 91

練習問題 ···································································································································· 93

第4章 プログラム間のつながり ······························································································ 97

4-1 クッキー ···························································································································· 98

4-2 セッション ······················································································································· 110

4-3 フォワード ······················································································································· 128

4-4 リダイレクト ···················································································································· 135

4-5 スコープとJSP暗黙オブジェクト ············································································ 140

練習問題 ·································································································································· 150

v

第5章 JavaBeans ····················································································································· 151

5-1 JavaBeansとは ············································································································ 152

5-2 JSPのアクションタグ ································································································· 154

5-3 JSP,Beansを応用したMVCモデル ···································································· 160

5-4 「学生登録アプリケーション」の作成 ··································································· 172

練習問題 ·································································································································· 183

第6章 JDBCドライバによるDB操作 ··················································································· 187

6-1 JDBCドライバとは ······································································································ 188

6-2 DB準備 ··························································································································· 189

6-3 DB操作するサーブレット概要 ··············································································· 194

6-4 表の参照 ························································································································ 195

6-5 行の挿入 ························································································································ 200

6-6 行の更新 ························································································································ 204

6-7 行の削除 ························································································································ 208

練習問題 ·································································································································· 212

第7章 ユーザ認証 ··················································································································· 215

7-1 Tomcatのユーザ認証機能 ····················································································· 216

7-2 ユーザ認証のサンプルプログラム ······································································ 224

7-3 ユーザ認証機能のポイント ···················································································· 238

第8章 システムの統合化 ······································································································ 239

8-1 システムの統合化 ······································································································ 240

第9章 セキュリティ確保の実現 ··························································································· 261

9-1 SQLインジェクション ·································································································· 262

9-2 クロスサイトスクリプティング(XSS) ···································································· 270

9-3 ディレクトリトラバーサル ·························································································· 276

9-4 その他の脆弱性について ······················································································· 282

Webアプリ_00はじめに_13212.indd 5 13/02/12 14:14

Page 8: Webアプリケーション構築 Java 7版...Java入門 Java7版 B5変 371頁 定価(本体2,000円+税) 好評発売中! Javaバイブルシリーズ オブジェクト指向プログラミング

vi

第10章 フールプルーフ ········································································································· 285

10-1 なぜフールプルーフが必要なのか ··································································· 286

10-2 注意が必要なユーザの操作 ··············································································· 288

10-3 想定外ナビゲーションの対策方法 ···································································· 289

10-4 サンプルプログラム「フールプルーフの実装例」 ········································· 294

第11章 総合演習「つぶやきアプリ」 ·················································································· 305

11-1 概要 ······························································································································· 306

11-2 機能概要 ····················································································································· 307

11-3 データベース仕様 ···································································································· 308

11-4 画面遷移 ····················································································································· 309

11-5 画面レイアウト例 ······································································································ 310

11-6 第1段階 つぶやき機能作成 ·············································································· 313

11-7 第2段階 削除とユーザ認証機能の作成 ······················································ 316

11-8 第3段階 ユーザ管理機能の作成 ···································································· 319

付録1 開発環境の準備 ·········································································································· 323

付録1-1 JDKの入手とインストール ············································································· 324

付録1-2 Apache Tomcatの入手とインストール ····················································· 329

付録1-3 MySQLの入手とインストール ······································································ 335

付録1-4 Eclipseの入手とインストール ······································································· 348

付録2 Tomcatディレクトリ構造 ···························································································· 357

索引 ·················································································································································· 360

別冊 練習問題解答

第2章練習問題の模範解答

第3章練習問題の模範解答

第4章練習問題の模範解答

第5章練習問題の模範解答

第6章練習問題の模範解答

第11章総合演習サンプルプログラム

Webアプリ_00はじめに_13212.indd 6 13/02/12 14:14

Page 9: Webアプリケーション構築 Java 7版...Java入門 Java7版 B5変 371頁 定価(本体2,000円+税) 好評発売中! Javaバイブルシリーズ オブジェクト指向プログラミング

第1章

Webサーバの構成要素

Webアプリ_01第1章_130212.indd 1 13/02/12 14:14

Page 10: Webアプリケーション構築 Java 7版...Java入門 Java7版 B5変 371頁 定価(本体2,000円+税) 好評発売中! Javaバイブルシリーズ オブジェクト指向プログラミング

2 第1章 Web サーバの構成要素

1-1 Webサーバの構成

今日インターネットの利用でWebを閲覧するとき、閲覧するユーザの手元にはWebブラウザと呼ばれる

クライアント用ソフトウェアを準備します。また閲覧される情報であるWebページを保管しているWebサーバも必要となります。WebブラウザからWebサーバにホームページ情報を要求し、Webサーバはこ

れに返信することでWebブラウザはホームページを閲覧することができます。ホームページまたはWeb

ページで表現される情報を「情報の内容物」という意味でWebコンテンツともいいます。

図 1.1 Web サーバの構成要素

クライアントPCとWebサーバ間では、インターネットの通信手順であるTCP/IPプロトコルでデータが送受

信されます。ホームページデータを要求・受信する手順はこのTCP/IPの上位レイヤープロトコルである

HTTP※1というプロトコルに従います。WebブラウザがWebサーバに要求する情報をHTTPリクエストとい

います。またWebサーバがこれに応答し返信する情報をHTTPレスポンスといいます。

Webコンテンツは文字、画像、音楽、映像などのひとまとまりの情報で、表現方法のルールはHTML※2に

従って「タグ」を利用して記述します。記述したホームページデータは主に「.html」または「.htm」という拡

張子をファイル名に付けて保存します。

図 1.2 HTML の例

※1 HTTP HyperText Transfer Protocolの略。

※2 HTML HyperText Markup Languageの略。

<HTML>

  <HEAD>

    <TITLE>My Web Page</TITLE>

  </HEAD>

  <BODY>

    <H2>Welcome to Hogehoge</H2>  </BODY> </HTML>

HTTP リクエスト

HTTP レスポンス

クライアント PC

Web ブラウザ

Web サーバ

Web コンテンツ

1-2 HTTP リクエストと HTTP レスポンス 3

1-2 HTTPリクエストとHTTPレスポンス

前述のHTTPのプロトコルで実際に送受信される例を紹介します。

図 1.3 HTTP リクエストと HTTP レスポンスの見本環境

上図のデータ送受信をパケット追跡のツール「WireShark※1」でとらえた例が次のページの図です。一般

にブラウザでページ閲覧した際は通信プロトコルの裏舞台に隠れて画面などには見えない送受信デー

タの交換の様子が見えてきます。

まずクライアントPCのブラウザは入力したアドレスから、①HTTPリクエストにおいてWebサーバへホー

ムページデータが存在するディレクトリ(パスといいます)およびファイル名(この場合は「sample.htm」で

これをリソースともいいます)を送信します。送信の最初にはリクエストメソッドをGETという種類にして送

信しています。

※1 WireShark入手先:http://www.wireshark.org/download.html

クライアント PC

Web サーバ

ページのアドレス

<HTML>   <HEAD>     <TITLE>My Web Page</TITLE>   </HEAD>   <BODY>     <H2>Welcome to Hogehoge</H2>     Myself Picture<br>     <img src="henomoheji.jpg">   </BODY> </HTML> 

sample.htm 

HTTP リクエスト

HTTP レスポンス

1

Webアプリ_01第1章_130212.indd 2 13/02/12 14:14

Page 11: Webアプリケーション構築 Java 7版...Java入門 Java7版 B5変 371頁 定価(本体2,000円+税) 好評発売中! Javaバイブルシリーズ オブジェクト指向プログラミング

2 第1章 Web サーバの構成要素

1-1 Webサーバの構成

今日インターネットの利用でWebを閲覧するとき、閲覧するユーザの手元にはWebブラウザと呼ばれる

クライアント用ソフトウェアを準備します。また閲覧される情報であるWebページを保管しているWebサーバも必要となります。WebブラウザからWebサーバにホームページ情報を要求し、Webサーバはこ

れに返信することでWebブラウザはホームページを閲覧することができます。ホームページまたはWeb

ページで表現される情報を「情報の内容物」という意味でWebコンテンツともいいます。

図 1.1 Web サーバの構成要素

クライアントPCとWebサーバ間では、インターネットの通信手順であるTCP/IPプロトコルでデータが送受

信されます。ホームページデータを要求・受信する手順はこのTCP/IPの上位レイヤープロトコルである

HTTP※1というプロトコルに従います。WebブラウザがWebサーバに要求する情報をHTTPリクエストとい

います。またWebサーバがこれに応答し返信する情報をHTTPレスポンスといいます。

Webコンテンツは文字、画像、音楽、映像などのひとまとまりの情報で、表現方法のルールはHTML※2に

従って「タグ」を利用して記述します。記述したホームページデータは主に「.html」または「.htm」という拡

張子をファイル名に付けて保存します。

図 1.2 HTML の例

※1 HTTP HyperText Transfer Protocolの略。

※2 HTML HyperText Markup Languageの略。

<HTML>

  <HEAD>

    <TITLE>My Web Page</TITLE>

  </HEAD>

  <BODY>

    <H2>Welcome to Hogehoge</H2>  </BODY> </HTML>

HTTP リクエスト

HTTP レスポンス

クライアント PC

Web ブラウザ

Web サーバ

Web コンテンツ

1-2 HTTP リクエストと HTTP レスポンス 3

1-2 HTTPリクエストとHTTPレスポンス

前述のHTTPのプロトコルで実際に送受信される例を紹介します。

図 1.3 HTTP リクエストと HTTP レスポンスの見本環境

上図のデータ送受信をパケット追跡のツール「WireShark※1」でとらえた例が次のページの図です。一般

にブラウザでページ閲覧した際は通信プロトコルの裏舞台に隠れて画面などには見えない送受信デー

タの交換の様子が見えてきます。

まずクライアントPCのブラウザは入力したアドレスから、①HTTPリクエストにおいてWebサーバへホー

ムページデータが存在するディレクトリ(パスといいます)およびファイル名(この場合は「sample.htm」で

これをリソースともいいます)を送信します。送信の最初にはリクエストメソッドをGETという種類にして送

信しています。

※1 WireShark入手先:http://www.wireshark.org/download.html

クライアント PC

Web サーバ

ページのアドレス

<HTML>   <HEAD>     <TITLE>My Web Page</TITLE>   </HEAD>   <BODY>     <H2>Welcome to Hogehoge</H2>     Myself Picture<br>     <img src="henomoheji.jpg">   </BODY> </HTML> 

sample.htm 

HTTP リクエスト

HTTP レスポンス

1

Webアプリ_01第1章_130212.indd 3 13/02/12 14:14

Page 12: Webアプリケーション構築 Java 7版...Java入門 Java7版 B5変 371頁 定価(本体2,000円+税) 好評発売中! Javaバイブルシリーズ オブジェクト指向プログラミング

4 第1章 Web サーバの構成要素

①に応答して②HTTPレスポンスがHTMLファイルの中身をブラウザへ返答します。

②HTTPレスポンスを受信したブラウザは内容を解析し、このページに画像ファイルが含まれることを判

定して、③HTTPリクエストでそのファイル「henomoheji.jpg」を要求します。

最後に④HTTPレスポンスではその画像ファイルをエンコードして返信しています。

図 1.4 HTTP リクエストと HTTP レスポンスの実際の例

そのホームページにほかにも画像などの内容(コンテンツ)が含まれれば、その都度③のようにリクエス

トし、受信します。

HTTPリクエストとHTTPレスポンスの内容をもう少し見ましょう。

①HTTP リクエスト

③HTTP リクエスト

②HTTP レスポンス

④HTTPレスポンス

この部分は sample.htm

の中身そのものを返信

している。

1-2 HTTP リクエストと HTTP レスポンス 5

1-2-1 HTTPリクエスト

HTTPリクエストは「メッセージヘッダー」と「メッセージボディ」から構成され、さらにヘッダーは「リクエストラ

イン」と複数の「ヘッダーフィールド」から構成されます。リクエストラインは、「メソッド」、「リクエストURI※1」、

「HTTPバージョン」によって成り立ちます。

図 1.5 HTTP リクエストの構成

メソッドはWebサーバへの命令の種類を表します。主なものを以下に示します。

表 1.1 HTTP リクエストメソッドの主な種類

メソッド 意味

GET リソースの取得要求

HEAD リソースの取得要求(ヘッダーのみ)

POST データの送信と処理の要求

PUT ファイルの転送

DELETE ファイルの消去

TRACE 経由サーバのトレース

※1 URI Uniform Resource Identifierの略。URL(Uniform Resource Locator)を拡張し、URLとURN(Uniform Resource Name)をまと

めた概念として考えられました。

HTTP リクエスト

メッセージヘッダー

メッセージボディ

ヘッダーフィールド

リクエストライン

ヘッダーフィールド

メソッド リクエスト URI HTTP バージョン

リクエストライン

ヘッダーフィールド

メソッド リクエスト URI HTTP バージョン

1

Webアプリ_01第1章_130212.indd 4 13/02/12 14:14

Page 13: Webアプリケーション構築 Java 7版...Java入門 Java7版 B5変 371頁 定価(本体2,000円+税) 好評発売中! Javaバイブルシリーズ オブジェクト指向プログラミング

4 第1章 Web サーバの構成要素

①に応答して②HTTPレスポンスがHTMLファイルの中身をブラウザへ返答します。

②HTTPレスポンスを受信したブラウザは内容を解析し、このページに画像ファイルが含まれることを判

定して、③HTTPリクエストでそのファイル「henomoheji.jpg」を要求します。

最後に④HTTPレスポンスではその画像ファイルをエンコードして返信しています。

図 1.4 HTTP リクエストと HTTP レスポンスの実際の例

そのホームページにほかにも画像などの内容(コンテンツ)が含まれれば、その都度③のようにリクエス

トし、受信します。

HTTPリクエストとHTTPレスポンスの内容をもう少し見ましょう。

①HTTP リクエスト

③HTTP リクエスト

②HTTP レスポンス

④HTTPレスポンス

この部分は sample.htm

の中身そのものを返信

している。

1-2 HTTP リクエストと HTTP レスポンス 5

1-2-1 HTTPリクエスト

HTTPリクエストは「メッセージヘッダー」と「メッセージボディ」から構成され、さらにヘッダーは「リクエストラ

イン」と複数の「ヘッダーフィールド」から構成されます。リクエストラインは、「メソッド」、「リクエストURI※1」、

「HTTPバージョン」によって成り立ちます。

図 1.5 HTTP リクエストの構成

メソッドはWebサーバへの命令の種類を表します。主なものを以下に示します。

表 1.1 HTTP リクエストメソッドの主な種類

メソッド 意味

GET リソースの取得要求

HEAD リソースの取得要求(ヘッダーのみ)

POST データの送信と処理の要求

PUT ファイルの転送

DELETE ファイルの消去

TRACE 経由サーバのトレース

※1 URI Uniform Resource Identifierの略。URL(Uniform Resource Locator)を拡張し、URLとURN(Uniform Resource Name)をまと

めた概念として考えられました。

HTTP リクエスト

メッセージヘッダー

メッセージボディ

ヘッダーフィールド

リクエストライン

ヘッダーフィールド

メソッド リクエスト URI HTTP バージョン

リクエストライン

ヘッダーフィールド

メソッド リクエスト URI HTTP バージョン

1

Webアプリ_01第1章_130212.indd 5 13/02/12 14:14

Page 14: Webアプリケーション構築 Java 7版...Java入門 Java7版 B5変 371頁 定価(本体2,000円+税) 好評発売中! Javaバイブルシリーズ オブジェクト指向プログラミング

6 第1章 Web サーバの構成要素

1-2-2 HTTPレスポンス

HTTPレスポンスは「ステータスライン」と「メッセージボディ」から構成されます。ステータスラインは、

「HTTPバージョン」、「ステータスコード」、それに関連した「テキストフレーズ」から成り立ちます。

図 1.6 HTTP レスポンスの構成

ステータスコードの概要と主なものを以下に示します。

表 1.2 ステータスコードの概要

コード 意味 説明

1xx 肯定先行 正しいコマンドを受け付けて処理中である。

2xx 肯定完了 正しいコマンドを受け付けて処理を完了した。

3xx 肯定中間 正しいコマンドを受け付けて、次に別のコマンドを要求する。

4xx 一時否定完了 誤ったコマンドを受け付けた。再送を望む。

5xx 否定完了 サーバの状態によりコマンドを受け付けることができない。

HTTP レスポンス

ステータスライン

ステータスコード テキストフレーズ HTTP バージョン

メッセージボディ

ステータスライン

メッセージボディ

HTTP バージョン ステータスコード テキストフレーズ

1-2 HTTP リクエストと HTTP レスポンス 7

表 1.3 主なステータスコード

ステータス 応答フレーズ 説明

200 OK 正常にリクエストを受け付けた。

202 Created 正常にリソースを作成した。

205 Not Content 正常にリクエストを受け付けたが、応答するリソース

なし。

301 Movement Permanently リソースは稼働している。

304 OK リソースは更新されていない。

400 Bad Request 開始行、メッセージヘッダーの構文にミスがあり受け

取れない。

401 Unauthorized リソースには認証が必要であり、認証されていない。

403 Forbidden コマンドは正常だが、サーバがその実行を拒否した。

404 Not Found リソースは存在しない。

405 Method Not Allowed そのメソッドの実行は許可されない。

500 Internal Server Error サーバ内部のエラー。

501 Not Implemented コマンドを実行する機能が存在しない。

たとえばホームページを閲覧するとき、アドレスを間違えている場合に表示されるコード「404」はこの表

にある「リソースは存在しない」という意味です。

1

Webアプリ_01第1章_130212.indd 6 13/02/12 14:14

Page 15: Webアプリケーション構築 Java 7版...Java入門 Java7版 B5変 371頁 定価(本体2,000円+税) 好評発売中! Javaバイブルシリーズ オブジェクト指向プログラミング

6 第1章 Web サーバの構成要素

1-2-2 HTTPレスポンス

HTTPレスポンスは「ステータスライン」と「メッセージボディ」から構成されます。ステータスラインは、

「HTTPバージョン」、「ステータスコード」、それに関連した「テキストフレーズ」から成り立ちます。

図 1.6 HTTP レスポンスの構成

ステータスコードの概要と主なものを以下に示します。

表 1.2 ステータスコードの概要

コード 意味 説明

1xx 肯定先行 正しいコマンドを受け付けて処理中である。

2xx 肯定完了 正しいコマンドを受け付けて処理を完了した。

3xx 肯定中間 正しいコマンドを受け付けて、次に別のコマンドを要求する。

4xx 一時否定完了 誤ったコマンドを受け付けた。再送を望む。

5xx 否定完了 サーバの状態によりコマンドを受け付けることができない。

HTTP レスポンス

ステータスライン

ステータスコード テキストフレーズ HTTP バージョン

メッセージボディ

ステータスライン

メッセージボディ

HTTP バージョン ステータスコード テキストフレーズ

1-2 HTTP リクエストと HTTP レスポンス 7

表 1.3 主なステータスコード

ステータス 応答フレーズ 説明

200 OK 正常にリクエストを受け付けた。

202 Created 正常にリソースを作成した。

205 Not Content 正常にリクエストを受け付けたが、応答するリソース

なし。

301 Movement Permanently リソースは稼働している。

304 OK リソースは更新されていない。

400 Bad Request 開始行、メッセージヘッダーの構文にミスがあり受け

取れない。

401 Unauthorized リソースには認証が必要であり、認証されていない。

403 Forbidden コマンドは正常だが、サーバがその実行を拒否した。

404 Not Found リソースは存在しない。

405 Method Not Allowed そのメソッドの実行は許可されない。

500 Internal Server Error サーバ内部のエラー。

501 Not Implemented コマンドを実行する機能が存在しない。

たとえばホームページを閲覧するとき、アドレスを間違えている場合に表示されるコード「404」はこの表

にある「リソースは存在しない」という意味です。

1

Webアプリ_01第1章_130212.indd 7 13/02/12 14:14

Page 16: Webアプリケーション構築 Java 7版...Java入門 Java7版 B5変 371頁 定価(本体2,000円+税) 好評発売中! Javaバイブルシリーズ オブジェクト指向プログラミング

8 第1章 Web サーバの構成要素

1-3 静的Webコンテンツと動的Webコンテンツ

1-3-1 Webアプリケーション

ここまでインターネットの主流のひとつとして普及したホームページの送受信の流れを紹介しましたが、

Webサーバは通信プロトコルHTTPの手順に沿って送受信を行うアプリケーションです。そして送受信の

データはHTMLの表現形式に従って記述される情報であり、基本的にHTMLファイルとしてWebサーバに

保管されています。このHTMLファイルは作成者が作り出し、内容を書き換えていかない限りそのページ

はいつも同じ内容であるということになります。こうしたHTMLデータファイルのコンテンツを「静的Webコ

ンテンツ」といいます。

これに対してページを見る人によって内容が変化するページがあります。たとえばページ訪問者の数が

表示されるような「アクセスカウンタ」というページのしくみは表示する人によってその数字が変わってき

ます。別の例では、検索結果を表示するページは検索の条件次第で違う結果が表示されます。これら

のページはいずれも処理を行うしくみがWebサーバに用意されていて、処理の実行結果をHTMLデータ

ファイルであるかのように表示しているのです。そのしくみのためにはWebサーバ側で実行するプログラ

ム処理が必要となります。こうした処理の結果がブラウザに表示されるコンテンツを「動的Webコンテン

ツ」といいます。

Webサーバ技術のなかで理解しやすい分野が静的コンテンツといえます。つまり、HTMLデータファイル

や表示される画像データファイルを用意し、HTMLやCSSなどで体裁を整える技術の習得ということで

す。

これに対して本書で勉強するWebアプリケーションとは、文字どおり「Webサーバのもとで実行されて動

的Webコンテンツを処理するアプリケーションプログラム」のことをいいます。

1-3 静的 Web コンテンツと動的 Web コンテンツ 9

図 1.7 動的 Web コンテンツと静的 Web コンテンツの比較

1-3-2 サーブレットとは

Webアプリケーションとして本書では「Servlet(サーブレット)」を学びます。サーブレットとはWebサーバ

で実行される、Javaで記述したアプリケーションプログラムのことです。

サーブレットのほかにも動的Webコンテンツを生成できるプログラムの種類として有名なものに「CGI※1」

があります。CGIはWebサーバとプログラム間でリクエストとレスポンスをやりとりする規約で、プログラ

ム言語としては主にPerlやC言語で記述されてきました。CGIはリクエストの都度に処理を起動しており、

これに対してサーブレットはWebサーバのメモリ上に常駐し効率よくマルチスレッド処理ができるなどの

長所があります。またJavaの特徴であるオブジェクト指向での開発に向いており、Java仮想マシンによ

りさまざまなプラットフォームで動作できるようになります。

※1 CGI Common Gateway Interfaceの略。

Web サーバ

Web アプリケーション

クライアント PC

あらかじめ用意された HTML ファイルなど

クライアント PC Web サーバ

動的 Web コンテンツ

静的 Webコンテンツ

1

Webアプリ_01第1章_130212.indd 8 13/02/12 14:14

Page 17: Webアプリケーション構築 Java 7版...Java入門 Java7版 B5変 371頁 定価(本体2,000円+税) 好評発売中! Javaバイブルシリーズ オブジェクト指向プログラミング

8 第1章 Web サーバの構成要素

1-3 静的Webコンテンツと動的Webコンテンツ

1-3-1 Webアプリケーション

ここまでインターネットの主流のひとつとして普及したホームページの送受信の流れを紹介しましたが、

Webサーバは通信プロトコルHTTPの手順に沿って送受信を行うアプリケーションです。そして送受信の

データはHTMLの表現形式に従って記述される情報であり、基本的にHTMLファイルとしてWebサーバに

保管されています。このHTMLファイルは作成者が作り出し、内容を書き換えていかない限りそのページ

はいつも同じ内容であるということになります。こうしたHTMLデータファイルのコンテンツを「静的Webコ

ンテンツ」といいます。

これに対してページを見る人によって内容が変化するページがあります。たとえばページ訪問者の数が

表示されるような「アクセスカウンタ」というページのしくみは表示する人によってその数字が変わってき

ます。別の例では、検索結果を表示するページは検索の条件次第で違う結果が表示されます。これら

のページはいずれも処理を行うしくみがWebサーバに用意されていて、処理の実行結果をHTMLデータ

ファイルであるかのように表示しているのです。そのしくみのためにはWebサーバ側で実行するプログラ

ム処理が必要となります。こうした処理の結果がブラウザに表示されるコンテンツを「動的Webコンテン

ツ」といいます。

Webサーバ技術のなかで理解しやすい分野が静的コンテンツといえます。つまり、HTMLデータファイル

や表示される画像データファイルを用意し、HTMLやCSSなどで体裁を整える技術の習得ということで

す。

これに対して本書で勉強するWebアプリケーションとは、文字どおり「Webサーバのもとで実行されて動

的Webコンテンツを処理するアプリケーションプログラム」のことをいいます。

1-3 静的 Web コンテンツと動的 Web コンテンツ 9

図 1.7 動的 Web コンテンツと静的 Web コンテンツの比較

1-3-2 サーブレットとは

Webアプリケーションとして本書では「Servlet(サーブレット)」を学びます。サーブレットとはWebサーバ

で実行される、Javaで記述したアプリケーションプログラムのことです。

サーブレットのほかにも動的Webコンテンツを生成できるプログラムの種類として有名なものに「CGI※1」

があります。CGIはWebサーバとプログラム間でリクエストとレスポンスをやりとりする規約で、プログラ

ム言語としては主にPerlやC言語で記述されてきました。CGIはリクエストの都度に処理を起動しており、

これに対してサーブレットはWebサーバのメモリ上に常駐し効率よくマルチスレッド処理ができるなどの

長所があります。またJavaの特徴であるオブジェクト指向での開発に向いており、Java仮想マシンによ

りさまざまなプラットフォームで動作できるようになります。

※1 CGI Common Gateway Interfaceの略。

Web サーバ

Web アプリケーション

クライアント PC

あらかじめ用意された HTML ファイルなど

クライアント PC Web サーバ

動的 Web コンテンツ

静的 Webコンテンツ

1

Webアプリ_01第1章_130212.indd 9 13/02/12 14:14

Page 18: Webアプリケーション構築 Java 7版...Java入門 Java7版 B5変 371頁 定価(本体2,000円+税) 好評発売中! Javaバイブルシリーズ オブジェクト指向プログラミング

10 第1章 Web サーバの構成要素

1-4 本書での開発と実行環境

1-4-1 Tomcat

サーブレットの実行にはサーブレットを受け入れて動作させるWebサーバが必要になります。サーブレッ

トというWebアプリケーションをコンテンツ(中身)として格納・動作させる役割がこのWebサーバであるこ

とから、「サーブレットコンテナ(サーブレットの入れ物)」とも呼ばれます。Javaサーブレットを動作させる

コンテナ環境のひとつとして「Tomcat※1」があります。

現在コンテナとしてはTomcat以外にJBoss、Glassfish、WebLogicなどがあります。本書で紹介する

Tomcatは、Apache Software Foundationのもとで開発されたオープンソースソフトウェアであり、無償で

利用できるものです。

※1 トムキャットと読む。正式名はApache Tomcat(アパッチ・トムキャット)と呼ばれます。

Web ファイル

サーブレット コンテンツ Web ファイル

Apache Tomcat コンテナ

Web サーバ

(Apache など) JVM

OS(Windows など) OS(Windows など)

図 1.8 Tomcat と Web サーバの構成比較

1-4-2 開発環境JDKとEclipseおよびデータベースMySQL

本書のアプリケーションを開発するためには「Java Developers Kit(JDK)」を準備する必要があります。

開発用ツールとしてプログラムコード作成のエディタは「Eclipse」を利用します。Eclipseはコード作成を支

援し、コードの実行を追跡できるなどさまざまな機能を持っています。

また、本書で紹介するデータベース操作のプログラム例題の環境には、データベースソフト「MySQL※2」

を使用します。

それぞれのソフトウェアの入手およびインストールの手順は本書巻末の付録を参照してください。第2章

からはインストールの準備が完了しているという前提で紹介します。

※2 オープンソースのデータベースであり、無償で利用できるものと有償の商用版があります。

1

Webアプリ_01第1章_130212.indd 10 13/02/12 14:14

Page 19: Webアプリケーション構築 Java 7版...Java入門 Java7版 B5変 371頁 定価(本体2,000円+税) 好評発売中! Javaバイブルシリーズ オブジェクト指向プログラミング

第2章

簡単なWebアプリケーション

Webア�リ_02第2章_130213.indd 11 13/02/13 14:48

Page 20: Webアプリケーション構築 Java 7版...Java入門 Java7版 B5変 371頁 定価(本体2,000円+税) 好評発売中! Javaバイブルシリーズ オブジェクト指向プログラミング

12 第2章 簡単な Web アプリケーション

2-1 Eclipseによるサーブレットの開発手順

2-1-1 Eclipseの初期設定

本章では付録に紹介している開発環境のインストールが完了していることを前提に話を進めます。

サーブレットの開発をはじめる前に開発ツール「Eclipse」の初期設定を行います。インストールした

Eclipseを起動します。

図 2.1 Eclipse 起動 「ワークスペース・ランチャー」

このまま[OK]をクリックして進めます。

図 2.2 Eclipse の起動 「ようこそ」画面

この画面でメニューの「ウィンドウ」から「設定」を選びます。

2-1 Eclipse によるサーブレットの開発手順 13

(1) 行番号の表示

下図の左側のメニューで「一般」→「エディター」→「テキスト・エディター」の順に展開・選択します。

次に右側で「行番号の表示」をチェックして、[適用]をクリックします。

図 2.3 Eclipse「設定」 「テキスト・エディター」

(2) テキスト・ファイルのエンコード設定

左側のメニューで「一般」→「ワークスペース」を選びます。

次に右側で「テキスト・ファイルのエンコード」を「UTF-8」に変更して、[適用]をクリックします。

図 2.4 Eclipse「設定」 「ワークスペース」

2

Webア�リ_02第2章_130213.indd 12 13/02/13 14:48

Page 21: Webアプリケーション構築 Java 7版...Java入門 Java7版 B5変 371頁 定価(本体2,000円+税) 好評発売中! Javaバイブルシリーズ オブジェクト指向プログラミング

12 第2章 簡単な Web アプリケーション

2-1 Eclipseによるサーブレットの開発手順

2-1-1 Eclipseの初期設定

本章では付録に紹介している開発環境のインストールが完了していることを前提に話を進めます。

サーブレットの開発をはじめる前に開発ツール「Eclipse」の初期設定を行います。インストールした

Eclipseを起動します。

図 2.1 Eclipse 起動 「ワークスペース・ランチャー」

このまま[OK]をクリックして進めます。

図 2.2 Eclipse の起動 「ようこそ」画面

この画面でメニューの「ウィンドウ」から「設定」を選びます。

2-1 Eclipse によるサーブレットの開発手順 13

(1) 行番号の表示

下図の左側のメニューで「一般」→「エディター」→「テキスト・エディター」の順に展開・選択します。

次に右側で「行番号の表示」をチェックして、[適用]をクリックします。

図 2.3 Eclipse「設定」 「テキスト・エディター」

(2) テキスト・ファイルのエンコード設定

左側のメニューで「一般」→「ワークスペース」を選びます。

次に右側で「テキスト・ファイルのエンコード」を「UTF-8」に変更して、[適用]をクリックします。

図 2.4 Eclipse「設定」 「ワークスペース」

2

Webア�リ_02第2章_130213.indd 13 13/02/13 14:48

Page 22: Webアプリケーション構築 Java 7版...Java入門 Java7版 B5変 371頁 定価(本体2,000円+税) 好評発売中! Javaバイブルシリーズ オブジェクト指向プログラミング

14 第2章 簡単な Web アプリケーション

(3) コンパイラーの警告設定

左側のメニューで「Java」→「コンパイラー」→「エラー/警告」を選びます。

次に右側で「潜在的なプログラミングの問題」を展開し、「serialVersionUIDなしのシリアライズ可能クラス」

を「無視」に変更して、[適用]をクリックします。

図 2.5 Eclipse「設定」 「エラー/警告」~「潜在的なプログラミングの問題」

同じく右側で「注釈」を展開し、「’@Override’注釈の欠落」を「警告」に変更して、[適用]をクリックします。

図 2.6 Eclipse「設定」 「エラー/警告」~「注釈」

2-1 Eclipse によるサーブレットの開発手順 15

また[適用]をクリックしたときに以下の「フル・ビルドを行いますか」のダイアログボックスが表示される

ので、[はい]をクリックします。

図 2.7 Eclipse「設定」 「適用」の確認

(4) JSPファイルのエンコード変更

左側のメニューで「Web」→「JSPファイル」を展開・選択し、右側で「エンコード」を「ISO 10646/ユニコード

(UTF-8)」に変更して、[適用]をクリックします。

図 2.8 Eclipse「設定」 「JSP ファイル」

2

Webア�リ_02第2章_130213.indd 14 13/02/13 14:48

Page 23: Webアプリケーション構築 Java 7版...Java入門 Java7版 B5変 371頁 定価(本体2,000円+税) 好評発売中! Javaバイブルシリーズ オブジェクト指向プログラミング

14 第2章 簡単な Web アプリケーション

(3) コンパイラーの警告設定

左側のメニューで「Java」→「コンパイラー」→「エラー/警告」を選びます。

次に右側で「潜在的なプログラミングの問題」を展開し、「serialVersionUIDなしのシリアライズ可能クラス」

を「無視」に変更して、[適用]をクリックします。

図 2.5 Eclipse「設定」 「エラー/警告」~「潜在的なプログラミングの問題」

同じく右側で「注釈」を展開し、「’@Override’注釈の欠落」を「警告」に変更して、[適用]をクリックします。

図 2.6 Eclipse「設定」 「エラー/警告」~「注釈」

2-1 Eclipse によるサーブレットの開発手順 15

また[適用]をクリックしたときに以下の「フル・ビルドを行いますか」のダイアログボックスが表示される

ので、[はい]をクリックします。

図 2.7 Eclipse「設定」 「適用」の確認

(4) JSPファイルのエンコード変更

左側のメニューで「Web」→「JSPファイル」を展開・選択し、右側で「エンコード」を「ISO 10646/ユニコード

(UTF-8)」に変更して、[適用]をクリックします。

図 2.8 Eclipse「設定」 「JSP ファイル」

2

Webア�リ_02第2章_130213.indd 15 13/02/13 14:48

Page 24: Webアプリケーション構築 Java 7版...Java入門 Java7版 B5変 371頁 定価(本体2,000円+税) 好評発売中! Javaバイブルシリーズ オブジェクト指向プログラミング

16 第2章 簡単な Web アプリケーション

(5) Tomcat7の設定

左側のメニューで「サーバー」→「ランタイム環境」を展開・選択し、右側で[追加]をクリックします。

図 2.9 Eclipse「設定」 「サーバー・ランタイム環境」

表示された「新規サーバー・ランタイム環境」のウィンドウの、「フィルター入力」から「Apache Tomcat

v7.0」を選択し、[次へ]をクリックします。

図 2.10 Eclipse「設定」 「サーバー・ランタイム環境」~「タイプを選択」

2-1 Eclipse によるサーブレットの開発手順 17

ウィンドウ内に「Tomcatサーバー」が表示されます。「Tomcatインストール・ディレクトリー」の[参照]をク

リックして、Tomcatがインストールされたフォルダを指定します(ここではC:\Program Files\Apache

Software Foundation\Tomcat 7.0のフォルダを指定しています)。

次に「JRE」の項目で[インストール済みのJRE]をクリックします。

図 2.11 Eclipse「設定」 「サーバー・ランタイム環境」~「Tomcat サーバー」

「jre7」が表示されているだけですが、ここにJDKフォルダのJREを追加するために[追加]をクリックしま

す。

図 2.12 Eclipse「設定」 「サーバー・ランタイム環境」~「インストール済みの JRE」

2

Webア�リ_02第2章_130213.indd 16 13/02/13 14:48

Page 25: Webアプリケーション構築 Java 7版...Java入門 Java7版 B5変 371頁 定価(本体2,000円+税) 好評発売中! Javaバイブルシリーズ オブジェクト指向プログラミング

16 第2章 簡単な Web アプリケーション

(5) Tomcat7の設定

左側のメニューで「サーバー」→「ランタイム環境」を展開・選択し、右側で[追加]をクリックします。

図 2.9 Eclipse「設定」 「サーバー・ランタイム環境」

表示された「新規サーバー・ランタイム環境」のウィンドウの、「フィルター入力」から「Apache Tomcat

v7.0」を選択し、[次へ]をクリックします。

図 2.10 Eclipse「設定」 「サーバー・ランタイム環境」~「タイプを選択」

2-1 Eclipse によるサーブレットの開発手順 17

ウィンドウ内に「Tomcatサーバー」が表示されます。「Tomcatインストール・ディレクトリー」の[参照]をク

リックして、Tomcatがインストールされたフォルダを指定します(ここではC:\Program Files\Apache

Software Foundation\Tomcat 7.0のフォルダを指定しています)。

次に「JRE」の項目で[インストール済みのJRE]をクリックします。

図 2.11 Eclipse「設定」 「サーバー・ランタイム環境」~「Tomcat サーバー」

「jre7」が表示されているだけですが、ここにJDKフォルダのJREを追加するために[追加]をクリックしま

す。

図 2.12 Eclipse「設定」 「サーバー・ランタイム環境」~「インストール済みの JRE」

2

Webア�リ_02第2章_130213.indd 17 13/02/13 14:48

Page 26: Webアプリケーション構築 Java 7版...Java入門 Java7版 B5変 371頁 定価(本体2,000円+税) 好評発売中! Javaバイブルシリーズ オブジェクト指向プログラミング

18 第2章 簡単な Web アプリケーション

続いて「JREの型」で「標準VM」を選択し、[次へ]をクリックします。

図 2.13 Eclipse「設定」 「サーバー・ランタイム環境」~「JRE の型」

表示された「JRE定義」では、「JREホーム」の[ディレクトリー]をクリックして、JDKがインストールされた

フォルダを指定します。

図 2.14 Eclipse「設定」 「サーバー・ランタイム環境」~「JRE 定義」

フォルダを選択すると上図のように「JREシステム・ライブラリー」が展開されて表示されます。

[完了]をクリックします。

2-1 Eclipse によるサーブレットの開発手順 19

「インストール済みのJRE」へ戻り、[OK]をクリックします。

図 2.15 Eclipse「設定」 「サーバー・ランタイム環境」~「インストール済みの JRE」

「Tomcatサーバー」へ戻るので、「JRE」のプルダウンメニューから上図で追加したJDKフォルダのJRE

(この例ではjdk1.7.0_04)を選び、[完了]をクリックします。

図 2.16 Eclipse「設定」 「サーバー・ランタイム環境」~「Tomcat サーバー」

以上でTomcatの設定が完了します。

2

Webア�リ_02第2章_130213.indd 18 13/02/13 14:48

Page 27: Webアプリケーション構築 Java 7版...Java入門 Java7版 B5変 371頁 定価(本体2,000円+税) 好評発売中! Javaバイブルシリーズ オブジェクト指向プログラミング

18 第2章 簡単な Web アプリケーション

続いて「JREの型」で「標準VM」を選択し、[次へ]をクリックします。

図 2.13 Eclipse「設定」 「サーバー・ランタイム環境」~「JRE の型」

表示された「JRE定義」では、「JREホーム」の[ディレクトリー]をクリックして、JDKがインストールされた

フォルダを指定します。

図 2.14 Eclipse「設定」 「サーバー・ランタイム環境」~「JRE 定義」

フォルダを選択すると上図のように「JREシステム・ライブラリー」が展開されて表示されます。

[完了]をクリックします。

2-1 Eclipse によるサーブレットの開発手順 19

「インストール済みのJRE」へ戻り、[OK]をクリックします。

図 2.15 Eclipse「設定」 「サーバー・ランタイム環境」~「インストール済みの JRE」

「Tomcatサーバー」へ戻るので、「JRE」のプルダウンメニューから上図で追加したJDKフォルダのJRE

(この例ではjdk1.7.0_04)を選び、[完了]をクリックします。

図 2.16 Eclipse「設定」 「サーバー・ランタイム環境」~「Tomcat サーバー」

以上でTomcatの設定が完了します。

2

Webア�リ_02第2章_130213.indd 19 13/02/13 14:48

Page 28: Webアプリケーション構築 Java 7版...Java入門 Java7版 B5変 371頁 定価(本体2,000円+税) 好評発売中! Javaバイブルシリーズ オブジェクト指向プログラミング

20 第2章 簡単な Web アプリケーション

・本書でのコード体裁について

本書で取り扱うプログラムコードは、限られたページ幅に書き表すためEclipseに以下の体裁を施してい

ます。

Eclipseの「設定」メニュー→「Java」→「コード・スタイル」→「フォーマッター」と展開します。

ここで[新規]をクリックして、フォーマットのプロファイルを作成して適用しています。

図 2.17 Eclipse「設定」 「フォーマッター」

2-1 Eclipse によるサーブレットの開発手順 21

プロファイルの「行折り返し」で「行の最大幅」を70文字、その下の「デフォルト・インデント」をそれぞ

れ2文字で設定し、適用します。

図 2.18 Eclipse「設定」 「フォーマッター」~「プロファイル」

プログラムソースを編集する際は、エディタ画面を開いているときに「ソース」メニューから「フォーマット」

を選び、フォーマットの体裁を適用します。

2

Webア�リ_02第2章_130213.indd 20 13/02/13 14:48

Page 29: Webアプリケーション構築 Java 7版...Java入門 Java7版 B5変 371頁 定価(本体2,000円+税) 好評発売中! Javaバイブルシリーズ オブジェクト指向プログラミング

20 第2章 簡単な Web アプリケーション

・本書でのコード体裁について

本書で取り扱うプログラムコードは、限られたページ幅に書き表すためEclipseに以下の体裁を施してい

ます。

Eclipseの「設定」メニュー→「Java」→「コード・スタイル」→「フォーマッター」と展開します。

ここで[新規]をクリックして、フォーマットのプロファイルを作成して適用しています。

図 2.17 Eclipse「設定」 「フォーマッター」

2-1 Eclipse によるサーブレットの開発手順 21

プロファイルの「行折り返し」で「行の最大幅」を70文字、その下の「デフォルト・インデント」をそれぞ

れ2文字で設定し、適用します。

図 2.18 Eclipse「設定」 「フォーマッター」~「プロファイル」

プログラムソースを編集する際は、エディタ画面を開いているときに「ソース」メニューから「フォーマット」

を選び、フォーマットの体裁を適用します。

2

Webア�リ_02第2章_130213.indd 21 13/02/13 14:48

Page 30: Webアプリケーション構築 Java 7版...Java入門 Java7版 B5変 371頁 定価(本体2,000円+税) 好評発売中! Javaバイブルシリーズ オブジェクト指向プログラミング

22 第2章 簡単な Web アプリケーション

2-1-2 簡単なサーブレットの作成

Eclipseの環境の準備が整ったところで、ワークスペースにもっとも簡単なサーブレットを作成してみます。

ここでは以下のようなホームページ結果が表示されるサーブレットの、作成から実行までの作業を確認

しましょう。

図 2.19 簡単なサーブレットを実行した結果

(1) Eclispeの「ファイル」メニューから[新規]→「動的Webプロジェクト」※1を選択します。

図 2.20 Eclipse「動的 Web プロジェクト」の作成メニュー

※1 Eclipseでは開発の作業に関するファイルや実行の環境などの情報を「プロジェクト」というフォルダで管理します。本書で紹介

している例題や練習問題は、その演習の区切りを単位にプロジェクトを作成します。また、これらプロジェクトと一連の開発作業環境

はまとめて「ワークスペース」というフォルダへ保存されています。

2-1 Eclipse によるサーブレットの開発手順 23

「プロジェクト名」に「HelloWorldPJ」と入力して、[完了]をクリックします。

図 2.21 Eclipse「動的 Web プロジェクト」

画面左側の「プロジェクト・エクスプローラー」にHelloWorldPJプロジェクトが作成されます。

(2) 三角形アイコンをクリックしてプロジェクトを展開し内容を確認します。

図 2.22 Eclipse 動的 Web プロジェクトを作成した直後

2

Webア�リ_02第2章_130213.indd 22 13/02/13 14:48

Page 31: Webアプリケーション構築 Java 7版...Java入門 Java7版 B5変 371頁 定価(本体2,000円+税) 好評発売中! Javaバイブルシリーズ オブジェクト指向プログラミング

22 第2章 簡単な Web アプリケーション

2-1-2 簡単なサーブレットの作成

Eclipseの環境の準備が整ったところで、ワークスペースにもっとも簡単なサーブレットを作成してみます。

ここでは以下のようなホームページ結果が表示されるサーブレットの、作成から実行までの作業を確認

しましょう。

図 2.19 簡単なサーブレットを実行した結果

(1) Eclispeの「ファイル」メニューから[新規]→「動的Webプロジェクト」※1を選択します。

図 2.20 Eclipse「動的 Web プロジェクト」の作成メニュー

※1 Eclipseでは開発の作業に関するファイルや実行の環境などの情報を「プロジェクト」というフォルダで管理します。本書で紹介

している例題や練習問題は、その演習の区切りを単位にプロジェクトを作成します。また、これらプロジェクトと一連の開発作業環境

はまとめて「ワークスペース」というフォルダへ保存されています。

2-1 Eclipse によるサーブレットの開発手順 23

「プロジェクト名」に「HelloWorldPJ」と入力して、[完了]をクリックします。

図 2.21 Eclipse「動的 Web プロジェクト」

画面左側の「プロジェクト・エクスプローラー」にHelloWorldPJプロジェクトが作成されます。

(2) 三角形アイコンをクリックしてプロジェクトを展開し内容を確認します。

図 2.22 Eclipse 動的 Web プロジェクトを作成した直後

2

Webア�リ_02第2章_130213.indd 23 13/02/13 14:48

Page 32: Webアプリケーション構築 Java 7版...Java入門 Java7版 B5変 371頁 定価(本体2,000円+税) 好評発売中! Javaバイブルシリーズ オブジェクト指向プログラミング

24 第2章 簡単な Web アプリケーション

(3) プロジェクトを選択した状態で、メニューの「ファイル」から「新規」→「サーブレット」を選択します。

図 2.23 Eclipse「サーブレット」作成メニュー

(4) 「Javaパッケージ」に「chapter2」、「クラス名」に「HelloWorldServlet」と入力して、[次へ]をクリックし

ます。

図 2.24 Eclipse「サーブレット作成」その1

2-1 Eclipse によるサーブレットの開発手順 25

表示される項目を確認します。

ここではそのまま[次へ]をクリックします。

図 2.25 Eclipse「サーブレット作成」その2

「スーパークラスからのコンストラクター」のチェックを外します。

「継承された抽象メソッド」の種類で「doPost」のチェックを外し「doGet」だけをチェックして、[完了]を

クリックします。

図 2.26 Eclipse「サーブレット作成」その3

サーブレットのJavaソースプログラムとして最小限のコードが作成されます。

2

Webア�リ_02第2章_130213.indd 24 13/02/13 14:48

Page 33: Webアプリケーション構築 Java 7版...Java入門 Java7版 B5変 371頁 定価(本体2,000円+税) 好評発売中! Javaバイブルシリーズ オブジェクト指向プログラミング

24 第2章 簡単な Web アプリケーション

(3) プロジェクトを選択した状態で、メニューの「ファイル」から「新規」→「サーブレット」を選択します。

図 2.23 Eclipse「サーブレット」作成メニュー

(4) 「Javaパッケージ」に「chapter2」、「クラス名」に「HelloWorldServlet」と入力して、[次へ]をクリックし

ます。

図 2.24 Eclipse「サーブレット作成」その1

2-1 Eclipse によるサーブレットの開発手順 25

表示される項目を確認します。

ここではそのまま[次へ]をクリックします。

図 2.25 Eclipse「サーブレット作成」その2

「スーパークラスからのコンストラクター」のチェックを外します。

「継承された抽象メソッド」の種類で「doPost」のチェックを外し「doGet」だけをチェックして、[完了]を

クリックします。

図 2.26 Eclipse「サーブレット作成」その3

サーブレットのJavaソースプログラムとして最小限のコードが作成されます。

2

Webア�リ_02第2章_130213.indd 25 13/02/13 14:48

Page 34: Webアプリケーション構築 Java 7版...Java入門 Java7版 B5変 371頁 定価(本体2,000円+税) 好評発売中! Javaバイブルシリーズ オブジェクト指向プログラミング

26 第2章 簡単な Web アプリケーション

(5) 画面左側の「プロジェクト・エクスプローラー」では「HelloWorldPJ」プロジェクト→「Java Resources」

→「src」に「chapter2」パッケージが作成されて「HelloWorldServlet.java」が格納されていることがわかり

ます。

図 2.27 Eclipse サーブレット作成の直後

・「@Override」警告への対処

プログラムの中央部分で警告のアイコンが表示されています。

マウスを近づけると次のように警告の原因が表示されます。

2-1 Eclipse によるサーブレットの開発手順 27

こうした場合には、警告の黄色のアイコンをクリックして「欠落している@Override注釈を追加します」を

選びます。

ソースには「@Override」アノテーションが追加されます。

続いて、メニューの「ファイル」→「保管」を実行すると警告が消えます。

・簡単な出力処理の記述

doGetメソッド部に簡単な出力処理を記述します。(下記の例で26~34行を追加)

2

Webア�リ_02第2章_130213.indd 26 13/02/13 14:48

Page 35: Webアプリケーション構築 Java 7版...Java入門 Java7版 B5変 371頁 定価(本体2,000円+税) 好評発売中! Javaバイブルシリーズ オブジェクト指向プログラミング

26 第2章 簡単な Web アプリケーション

(5) 画面左側の「プロジェクト・エクスプローラー」では「HelloWorldPJ」プロジェクト→「Java Resources」

→「src」に「chapter2」パッケージが作成されて「HelloWorldServlet.java」が格納されていることがわかり

ます。

図 2.27 Eclipse サーブレット作成の直後

・「@Override」警告への対処

プログラムの中央部分で警告のアイコンが表示されています。

マウスを近づけると次のように警告の原因が表示されます。

2-1 Eclipse によるサーブレットの開発手順 27

こうした場合には、警告の黄色のアイコンをクリックして「欠落している@Override注釈を追加します」を

選びます。

ソースには「@Override」アノテーションが追加されます。

続いて、メニューの「ファイル」→「保管」を実行すると警告が消えます。

・簡単な出力処理の記述

doGetメソッド部に簡単な出力処理を記述します。(下記の例で26~34行を追加)

2

Webア�リ_02第2章_130213.indd 27 13/02/13 14:48

Page 36: Webアプリケーション構築 Java 7版...Java入門 Java7版 B5変 371頁 定価(本体2,000円+税) 好評発売中! Javaバイブルシリーズ オブジェクト指向プログラミング

28 第2章 簡単な Web アプリケーション

ここでも警告表示されています。

警告の赤いアイコンをクリックして「’PrintWriter’をインポートします」を選びます。

java.io.PrintWriterのimport文が追加されて、警告が消えます。

2-1 Eclipse によるサーブレットの開発手順 29

これまでの作業で完成したサーブレットのコードは次のようになります。

ファイル: HelloWorldServlet.java ソースコード

01: 02: 03: 04: 05: 06: 07: 08: 09: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 

package chapter2;  import java.io.IOException; import java.io.PrintWriter;  import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet;  import javax.servlet.http.HttpServletRequest;  import javax.servlet.http.HttpServletResponse;  /**  * Servlet implementation class HelloWorldServlet  */ @WebServlet("/HelloWorldServlet") public class HelloWorldServlet extends HttpServlet {   private static final long serialVersionUID = 1L;    /**    * @see HttpServlet#doGet(HttpServletRequest request,    *      HttpServletResponse response)    */   @Override   protected void doGet(HttpServletRequest request,       HttpServletResponse response) throws ServletException,       IOException {     // TODO Auto‐generated method stub     PrintWriter out = response.getWriter();     out.println("<html>");     out.println("<head>");     out.println("<title>Hello World!</title>");     out.println("</head>");     out.println("<body>");     out.println("<h1>Hello World!</h1>");     out.println("<p>First Servlet</p>");     out.println("</body></html>");   }  } 

追加した行 

追加した行 

追加した行 

2

Webア�リ_02第2章_130213.indd 28 13/02/13 14:48

Page 37: Webアプリケーション構築 Java 7版...Java入門 Java7版 B5変 371頁 定価(本体2,000円+税) 好評発売中! Javaバイブルシリーズ オブジェクト指向プログラミング

28 第2章 簡単な Web アプリケーション

ここでも警告表示されています。

警告の赤いアイコンをクリックして「’PrintWriter’をインポートします」を選びます。

java.io.PrintWriterのimport文が追加されて、警告が消えます。

2-1 Eclipse によるサーブレットの開発手順 29

これまでの作業で完成したサーブレットのコードは次のようになります。

ファイル: HelloWorldServlet.java ソースコード

01: 02: 03: 04: 05: 06: 07: 08: 09: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 

package chapter2;  import java.io.IOException; import java.io.PrintWriter;  import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet;  import javax.servlet.http.HttpServletRequest;  import javax.servlet.http.HttpServletResponse;  /**  * Servlet implementation class HelloWorldServlet  */ @WebServlet("/HelloWorldServlet") public class HelloWorldServlet extends HttpServlet {   private static final long serialVersionUID = 1L;    /**    * @see HttpServlet#doGet(HttpServletRequest request,    *      HttpServletResponse response)    */   @Override   protected void doGet(HttpServletRequest request,       HttpServletResponse response) throws ServletException,       IOException {     // TODO Auto‐generated method stub     PrintWriter out = response.getWriter();     out.println("<html>");     out.println("<head>");     out.println("<title>Hello World!</title>");     out.println("</head>");     out.println("<body>");     out.println("<h1>Hello World!</h1>");     out.println("<p>First Servlet</p>");     out.println("</body></html>");   }  } 

追加した行 

追加した行 

追加した行 

2

Webア�リ_02第2章_130213.indd 29 13/02/13 14:48

Page 38: Webアプリケーション構築 Java 7版...Java入門 Java7版 B5変 371頁 定価(本体2,000円+税) 好評発売中! Javaバイブルシリーズ オブジェクト指向プログラミング

30 第2章 簡単な Web アプリケーション

ここまでの作業で完成したEclipseのワークスペースは以下のファイル・フォルダ構成になっています。

プロジェクト名: HelloWorldPJ

HelloWorldPJ └─src     └─chapter2             HelloWorldServlet.java  

完成したソースプログラムでのアノテーション

完成したソースプログラムではアノテーションが15行(@WebServlet)、23行

(@Override)に設定されています。アノテーション自体は注釈ですが、コンパイ

ルでのチェックや定型処理の点検支援が可能となり、開発作業が改善される

利点があります。

このうち、@Overrideアノテーションはスーパークラス(サーブレットでは

HttpServletクラス)のdoGetメソッドをオーバーライドすることを明示しています。

開発時によくありがちなミスの一つの例としてメソッド名は正しいが引数を間違

える、すなわちシグニチャの不一致があります。継承によりスーパークラスを

オーバーライドしているつもりでも、シグニチャが不一致ではコンパイルエラー

にはならず、実行して初めてその誤りを発見することになります。このようなミ

スを実行前に防止するには、「サブクラスはこのようなメソッドをオーバーライド

しますよ」と宣言させることで、スーパークラスのメソッドとのチェックが可能にな

ります。

@WebServletアノテーションは、「2-2-4 起動呼出しでのURLアドレスとアノテー

ション@WebServlet」を参照してください。

2-1 Eclipse によるサーブレットの開発手順 31

(6) 作成したサーブレットを実行します。

「プロジェクト・エクスプローラー」で「HelloWorldServlet.java」を右クリックし「実行」→「1 サーバーで実行」

を選択します。

図 2.28 Eclipse「サーバーで実行」メニュー

2

Webア�リ_02第2章_130213.indd 30 13/02/13 14:48

Page 39: Webアプリケーション構築 Java 7版...Java入門 Java7版 B5変 371頁 定価(本体2,000円+税) 好評発売中! Javaバイブルシリーズ オブジェクト指向プログラミング

30 第2章 簡単な Web アプリケーション

ここまでの作業で完成したEclipseのワークスペースは以下のファイル・フォルダ構成になっています。

プロジェクト名: HelloWorldPJ

HelloWorldPJ └─src     └─chapter2             HelloWorldServlet.java  

完成したソースプログラムでのアノテーション

完成したソースプログラムではアノテーションが15行(@WebServlet)、23行

(@Override)に設定されています。アノテーション自体は注釈ですが、コンパイ

ルでのチェックや定型処理の点検支援が可能となり、開発作業が改善される

利点があります。

このうち、@Overrideアノテーションはスーパークラス(サーブレットでは

HttpServletクラス)のdoGetメソッドをオーバーライドすることを明示しています。

開発時によくありがちなミスの一つの例としてメソッド名は正しいが引数を間違

える、すなわちシグニチャの不一致があります。継承によりスーパークラスを

オーバーライドしているつもりでも、シグニチャが不一致ではコンパイルエラー

にはならず、実行して初めてその誤りを発見することになります。このようなミ

スを実行前に防止するには、「サブクラスはこのようなメソッドをオーバーライド

しますよ」と宣言させることで、スーパークラスのメソッドとのチェックが可能にな

ります。

@WebServletアノテーションは、「2-2-4 起動呼出しでのURLアドレスとアノテー

ション@WebServlet」を参照してください。

2-1 Eclipse によるサーブレットの開発手順 31

(6) 作成したサーブレットを実行します。

「プロジェクト・エクスプローラー」で「HelloWorldServlet.java」を右クリックし「実行」→「1 サーバーで実行」

を選択します。

図 2.28 Eclipse「サーバーで実行」メニュー

2

Webア�リ_02第2章_130213.indd 31 13/02/13 14:48

Page 40: Webアプリケーション構築 Java 7版...Java入門 Java7版 B5変 371頁 定価(本体2,000円+税) 好評発売中! Javaバイブルシリーズ オブジェクト指向プログラミング

32 第2章 簡単な Web アプリケーション

「サーバーで実行」では「フィルター入力」は「Tomcat v7.0サーバー」、「サーバーのホスト名」は

「localhost」、「サーバー・ランタイム環境」は「Apache Tomcat v7.0」が既定で表示されます。これを確認

して[完了]をクリックします。

図 2.29 Eclipse「サーバーで実行」

2-1 Eclipse によるサーブレットの開発手順 33

数分経過してから以下のようにEclipseの内部ブラウザに「Hello World!」が表示されます。また、「プロ

ジェクト・エクスプローラー」には「Servers」フォルダ※1が新しく表示されます。

※1 EclipseはTomcatのWebサーバ機能を呼び出します。Tomcatサーバ定義はEclipseの「Servers」フォルダに作られたものを参照

します。TomcatのプログラムやライブラリはTomcatがインストールされたフォルダ内のものを使用します。

図 2.30 Eclipse の内部ブラウザでの表示結果

Eclipse以外のブラウザ(ここではインターネットエクスプローラ)を使う場合は、以下のアドレスを入力す

ると表示されます。

http://localhost:8080/HelloWorldPJ/HelloWorldServlet 

図 2.31 インターネットエクスプローラでの表示結果

2

Webア�リ_02第2章_130213.indd 32 13/02/13 14:48

Page 41: Webアプリケーション構築 Java 7版...Java入門 Java7版 B5変 371頁 定価(本体2,000円+税) 好評発売中! Javaバイブルシリーズ オブジェクト指向プログラミング

32 第2章 簡単な Web アプリケーション

「サーバーで実行」では「フィルター入力」は「Tomcat v7.0サーバー」、「サーバーのホスト名」は

「localhost」、「サーバー・ランタイム環境」は「Apache Tomcat v7.0」が既定で表示されます。これを確認

して[完了]をクリックします。

図 2.29 Eclipse「サーバーで実行」

2-1 Eclipse によるサーブレットの開発手順 33

数分経過してから以下のようにEclipseの内部ブラウザに「Hello World!」が表示されます。また、「プロ

ジェクト・エクスプローラー」には「Servers」フォルダ※1が新しく表示されます。

※1 EclipseはTomcatのWebサーバ機能を呼び出します。Tomcatサーバ定義はEclipseの「Servers」フォルダに作られたものを参照

します。TomcatのプログラムやライブラリはTomcatがインストールされたフォルダ内のものを使用します。

図 2.30 Eclipse の内部ブラウザでの表示結果

Eclipse以外のブラウザ(ここではインターネットエクスプローラ)を使う場合は、以下のアドレスを入力す

ると表示されます。

http://localhost:8080/HelloWorldPJ/HelloWorldServlet 

図 2.31 インターネットエクスプローラでの表示結果

2

Webア�リ_02第2章_130213.indd 33 13/02/13 14:48