HTTP
(Hyper Text Transfer Protocol)
J2EE I
第7回 / 2006-01-28
1
ここでの内容
HTTP
フォームからの入力とPOST・GETメソッド
JSPとHTTP
HTTPの応用
2
HTTP
3
ホスト名とポート番号
インターネットでの通信に必要なもの
ホスト名 (= IPアドレス)
ポート番号
HTTPだって例外ではない
4
URL
http://ホスト名:ポート番号/パス?クエリー
ホスト名(= IPアドレス)
ポート番号が 80 なら省略できる。
パスは「Webサーバ上のファイルのあり
か」
クエリーは、動的なページ作成に使う
5
URL の例
http://www.wakhok.ac.jp/
www.wakhok.ac.jp という「ホスト (=コンピュータ)」
に接続
ポートは 80番なので省略している
http://www.wakhok.ac.jp:80/ と書いてもよい。
http://localhost:8080/
localhost の 8080 番に接続
6
HTTP というプロトコル
インターネットでの通信方法 (= プロトコ
ル) は、RFC というもので規定されている。
HTTP は、WebブラウザとWebサーバの通
信方法について定めている。
HTTP は RFC2616 で規定されている。
HyperText Transfer Protocol (= HTTP)
7
HTTP
最初に、ホスト名とポート番号を使って接
続を確立
「要求」を出して「応答」がくる。
ブラウザが応答の中身を表示する。
8
http://localhost:8080/example
s/jsp/index.html を見る場合
URL を解釈する
localhost の 8080 番に接続
「/examples/jsp/index.html をくれ!」 (要求)
「はい、お渡しします」と index.html を渡す
(応答)
index.html を表示
9
Webブラウザからの要求(request)
概要
GET /examples/jsp/index.html HTTP/1.1
Host: localhost
User-Agent: ……
……
……
(リクエスト行)
(ヘッダ)
(ヘッダ)
(ヘッダ)
(ヘッダ)
(空行)
(本文)
10
Webブラウザからの要求(request)
リクエスト行
GET /examples/jsp/index.html HTTP/1.1
「GET」 がメソッド
メソッドとは、要求の種類の指定
「/examples/jsp/index.html」が対象となる
URI
「HTTP/1.1」が HTTP のバージョン
11
Webブラウザからの要求(request)
いろいろなメソッド
GET
POST
URI に情報を送信する
HEAD
URI の内容を取得する
URI に関するヘッダ部分のみを取得する
などなど
12
Webブラウザからの要求(request)
ヘッダ
要求 (request) に必要な関連する情報
Host
どの名前のホストにアクセスするか。
User-Agent
フィールド名: 値
どんなブラウザを使っているか
Referer
どのページからやってきたかわかる。(どこからリンク
が貼られているかわかる)
13
Webブラウザからの要求(request)
本文
GET では使わない
POST で使う
14
HTTP
15
Webサーバからの応答
概要
HTTP/1.1 200 OK
Etag: ….
Last-Modified: …
Content-Type: text/html
Content-Length: 7487
<html>
….
</html>
(response)
ステータス行
ヘッダ
ヘッダ
ヘッダ
ヘッダ
空行
本文
16
Webサーバからの応答
ステータス行
(response)
HTTP/1.1 200 OK
「HTTP/1.1」は、HTTPのバージョン
「200」はステータスコード
サーバからの応答がどのような種類のものか
「OK」は説明文
ステータスコードについての説明
17
Webサーバからの応答
ステータスコード
200 番台 -- 要求が正常に処理された
200
OK
成功
400 番台 – クライアント側に問題がある
(response)
403
404
Forbidden アクセスを拒否
Not Found 該当するものがない
500 番台 – サーバ側に問題がある
500
Internal Server Error
エラー発生
18
Webサーバからの応答
ヘッダ
応答 (response) に必要な関連する情報
本文に書かれているものがどういった種類の
ものか
Content-Length
フィールド名: 値
Content-Type
(response)
本文に書かれているもののサイズ
Last-Modified
このURIが最後に更新されたのはいつか
19
Webサーバからの応答
Content-Type
(response)
MIME 型で本文の種類を示す
代表的な MIME型
text/html
text/xml
text/plain
image/gif
image/jpeg
video/mpeg
HTML文書
XML文書
テキスト
GIF画像
JPEG画像
MPEG
20
Webサーバからの応答
本文
(response)
HTML を取得するのなら HTML
JPEG 画像を取得するのなら JPEG
21
HTTP
22
Webブラウザの働き
HTTP は要求と応答がペア
たいていのWebページは、複数のファイルを含む
1回の要求につき、1つのファイルを取得
画像がいっぱいのWebページ
フレームを使ったページ
ブラウザは、HTMLを解析する
途中で取得しなければならない画像などのファイルを
見つけたら、改めて要求を出す
23
フォームからの入力と
POST・GETメソッド
24
HTTP
25
HTMLのフォーム (1)
画面イメージ
Webブラウザから何かを入力してもらうた
めに使う。
26
HTMLのフォーム (2)
HTMLのソース
<p>姓名を入力してください:</p>
<form method=“get” action=“name.jsp”>
<p>姓: <input type=“text” name=“familyName”
/></p>
<p>名: <input type=“text” name=“givenName”
/></p> <input type=“submit” value=“実行” />
<input type=“reset” value=“キャンセル” />
</form>
27
フォームとプログラム
「実行」ボタンが押されると、HTTPの要求
を用いて、フォームに入力したデータがプ
ログラムに渡される。
プログラムに渡すときは、次のメソッドを使
う。
GET
POST
28
POSTメソッドによる処理 (1)
HTMLのソース
<p>姓名を入力してください:</p>
<form method=“post” action=“name.jsp”>
<p>姓: <input type=“text” name=“familyName” /></p>
<p>名: <input type=“text” name=“givenName” /></p>
<input type=“submit” value=“実行” />
<input type=“reset” value=“キャンセル” />
</form>
29
POSTメソッドによる処理 (2)
要求の内容
POST /test/name.jsp HTTP/1.1
……
……
Content-Length: 35
(←空行)
familyName=maruyama&givenName=fujio
(←本文の内容が「クエリー」)
30
POSTメソッドによる処理 (3)
クエリーの内容
familyName=maruyama&givenName=fuji
o
familyName の値が “maruyama”
givenName の値が “fujio”
パラメータと値の間を “=” でつなぐ
パラメータと値の組み合わせを “&” でつな
ぐ
31
POSTメソッドによる処理 (4)
プログラムの処理後の画面
name.jsp を呼び出している
32
GETメソッドによる処理 (1)
HTMLのソース
<p>姓名を入力してください:</p>
<form method=“get” action=“name.jsp”>
<p>姓: <input type=“text” name=“familyName”
/></p>
<p>名: <input type=“text” name=“givenName”
/></p> <input type=“submit” value=“実行” />
<input type=“reset” value=“キャンセル” />
</form>
33
GETメソッドによる処理 (2)
要求の内容
GET /test/name.jsp?familyName=maruyama&
givenName=fujio HTTP/1.1
……
……
If-Modified-Since: Sun, 19 Jan 2003 00:39:50
GMT
34
GETメソッドによる処理 (3)
リクエスト行とクエリーの内容
GET
/test/name.jsp?familyName=maruyama&
givenName=fujio HTTP/1.1
リクエスト行にクエリーが置かれている。
プログラム名 “name.jsp” の後に “?” があり、
その後にクエリーが続く。
35
GETメソッドによる処理 (4)
プログラムの処理後の画面
URL に クエリーが含まれる。
36
POSTとGETの使い分け (1)
POSTを使う場合
POST
通常はPOSTを使う。
GETメソッドでは、送るデータ量に制限がある。
GETメソッドでは、改行を渡せない (=掲示板
のようなサイトでは使えない)
GETメソッドでは、パスワードを送ろうとすれば、
パスワードがURL中に露出してしまう
37
POSTとGETの使い分け (2)
GETを使う場合
GET
クエリーがURLにでているので、ブックマーク
に保存したり、リンクをはったりできる。
例えば、Google の実行結果にリンクを貼った
りする。
POSTメソッドだとこうはいかない。
38
JSPとHTTP
39
JSPと要求・応答
要求の処理には、request という変数を使う。
request.getMethod()
request.getRequstURI()
request.getProtocol()
request.getRemoteAddr()
応答の処理には、response という変数を使う。
40
JSPを使ったパラメータの処理
<%=
request.getParameter("familyName") %>
getParameter というメソッドを使って、
familyName パラメータの値を取得する。
GET でも POST でも利用できる。
41
HTTPの応用
42
セッション管理
HTTPは要求・応答を組み合わせて処理が
完結する。
ある要求・応答のペアは、同一のブラウザ
からの別の要求・応答のペアとは基本的
には無関係。
要求・応答のペアを関連づけるには、「セッ
ション管理」をおこなう
43
AJAX
Webアプリケーションでは、サーバにデータを送
るには、HTTPの要求を使わなければならない。
ネットワーク越しのデータの受け渡しに時間がか
かるため、利用者がそのあいだ待たされる
HTTPの要求を使わずに、JavaScriptを用いて
サーバとの通信を行う。
これが 「AJAX」
44
SSL
HTTPでは、本文の内容は暗号化されない
「SSL」を使う
45
© Copyright 2026 ExpyDoc