• 検索結果がありません。

第 7 回の内容 動的な Web サイト フォーム Web システムの構成

N/A
N/A
Protected

Academic year: 2021

シェア "第 7 回の内容 動的な Web サイト フォーム Web システムの構成"

Copied!
70
0
0

読み込み中.... (全文を見る)

全文

(1)

第7回の内容

• 動的なWebサイト

• フォーム

(2)
(3)

静的なリソース

ファイルシステムのパス

URIのパス

/

d

e

b

c

/

a

e

d

b

c

公開ディレクトリ

GET /b HTTP/1.1

/a/bを送り返す

(4)

静的なリソース

ファイルシステムのパス

URIのパス

/

f

e

d

b

c

/

g

e

d

b

c

GET /g/e HTTP/1.1

/f/eを送り返す

(5)

動的なリソース

• 商品を紹介するページに、データベースに格納され

ている在庫情報も表示する。

• ユーザーから送られてきた検索キーワードにマッチ

する情報の一覧を表示する。

(6)

動的なリソースの生成

① 随時変化するWebサーバ上の情報

② メッセージヘッダで渡される情報

(7)

動的なリソースの生成

• データベースに記録されているデータ

• サーバの負荷

• 処理を行った日時

① 随時変化するWebサーバ上の情報

② メッセージヘッダで渡される情報

③ クエリやメッセージボディで渡される情報

(8)

動的なリソースの生成

• コンテントネゴシエーション用のヘッダ

User-Agentヘッダ

Refererヘッダ

① 随時変化するWebサーバ上の情報

② メッセージヘッダで渡される情報

③ クエリやメッセージボディで渡される情報

(9)

動的なリソースの生成

① 随時変化するWebサーバ上の情報

② メッセージヘッダで渡される情報

③ クエリやメッセージボディで渡される情報

(10)

動的なリソースの生成

① 随時変化するWebサーバ上の情報

② メッセージヘッダで渡される情報

③ クエリやメッセージボディで渡される情報

http://www.example.ac.jp:8080

/path/to/resource

?

qt=%E3%81%82&page=1

#r5

(11)

動的なリソースの生成

• ③クエリとして渡された情報を元に①デー

タベースを検索した結果を、②コンテント

ネゴシエーションにより希望されたPNG画

像として提供する

① 随時変化するWebサーバ上の情報

② メッセージヘッダで渡される情報

③ クエリやメッセージボディで渡される情報

(12)
(13)
(14)
(15)

フォーム

• ユーザーが情報を入力して送信

コントロール

⋯ 情報を入力する部品

• フォームが指定するURIに遷移

(16)

コントロール

コントロール

ボタン

チェックボックス

ラジオボタン

メニュー

テキスト入力

ファイル選択

隠しコントロール

(17)

コントロール

コントロール

ボタン

チェックボックス

ラジオボタン

メニュー

テキスト入力

ファイル選択

隠しコントロール

(18)

コントロール

コントロール

ボタン

チェックボックス

ラジオボタン

メニュー

テキスト入力

ファイル選択

隠しコントロール

(19)

コントロール

コントロール

ボタン

チェックボックス

ラジオボタン

メニュー

テキスト入力

ファイル選択

隠しコントロール

ラベル

コントロール

(20)

コントロール

コントロール

ボタン

チェックボックス

ラジオボタン

メニュー

テキスト入力

ファイル選択

隠しコントロール

(21)

コントロール

コントロール

ボタン

チェックボックス

ラジオボタン

メニュー

テキスト入力

ファイル選択

隠しコントロール

(22)

コントロール

コントロール

ボタン

チェックボックス

ラジオボタン

メニュー

テキスト入力

ファイル選択

隠しコントロール

(23)

コントロール

コントロール

ボタン

チェックボックス

ラジオボタン

メニュー

テキスト入力

ファイル選択

隠しコントロール

(24)

コントロール

コントロール

ボタン

チェックボックス

ラジオボタン

メニュー

テキスト入力

ファイル選択

隠しコントロール

(25)

コントロール

コントロール

ボタン

チェックボックス

ラジオボタン

メニュー

テキスト入力

ファイル選択

隠しコントロール

(26)

コントロール

コントロール

ボタン

チェックボックス

ラジオボタン

メニュー

テキスト入力

ファイル選択

隠しコントロール

(27)

コントロール

コントロール

ボタン

チェックボックス

ラジオボタン

メニュー

テキスト入力

ファイル選択

隠しコントロール

(28)

コントロール

コントロール

ボタン

チェックボックス

ラジオボタン

メニュー

テキスト入力

ファイル選択

隠しコントロール

(29)

コントロール

コントロール

ボタン

チェックボックス

ラジオボタン

メニュー

テキスト入力

ファイル選択

隠しコントロール

(30)

コントロール

コントロール

ボタン

チェックボックス

ラジオボタン

メニュー

テキスト入力

ファイル選択

隠しコントロール

(31)

form要素

<

form

action="./buy" method="post">

<!-- ここにコントロールや、その他のHTML要素を配置 -->

</

form

>

(32)

form要素

属性名

属性値

action

フォームデータの送信先URI

<form

action

="

./buy

" method="post">

<!-- ここにコントロールや、その他のHTML要素を配置 -->

</form>

(33)

form要素

属性名

属性値

action

フォームデータの送信先URI

method

フォームデータの送信に用いられるメソッド

<form action="./buy"

method

="

post

">

<!-- ここにコントロールや、その他のHTML要素を配置 -->

</form>

(34)

form要素

属性名

属性値

action

フォームデータの送信先URI

method

フォームデータの送信に用いられるメソッド

enctype 送信されるフォームデータのメディアタイプ

既定値は

application/x-www-form-urlencoded

<form action="./buy" method="post">

<!-- ここにコントロールや、その他のHTML要素を配置 -->

</form>

(35)

フォームの送信

① 送信するデータの特定

② フォームデータの加工

③ フォームデータの送信

(36)

送信するデータの特定

送信するデータに含める

(37)

フォームの送信

① 送信するデータの特定

② フォームデータの加工

③ フォームデータの送信

(38)

フォームの例

<form action="/e" method="post"> <p>

名前:<input type="text" name="name" value=""> <br>

会員種別:

<select name="member">

<option value="g">一般会員</option> <option value="s">学生会員</option>

<option value="n" selected>非会員</option> </select>

<br>

<label><input type="checkbox" name="forum" value="yes">フォーラム参加</label> <label><input type="checkbox" name="party" value="yes">懇親会参加</label> <br>

<button type="submit">送信</button> <button type="reset">リセット</button> </p>

(39)

フォームの例

<form action="/e" method="post">

<p>

名前:<input type="text" name="name" value=""> <br>

会員種別:

<select name="member">

<option value="g">一般会員</option> <option value="s">学生会員</option>

<option value="n" selected>非会員</option> </select>

<br>

<label><input type="checkbox" name="forum" value="yes">フォーラム参加</label> <label><input type="checkbox" name="party" value="yes">懇親会参加</label> <br>

<button type="submit">送信</button> <button type="reset">リセット</button> </p>

(40)

フォームの例

<form action="/e" method="post"> <p>

名前:<input type="text" name="name" value="">

<br> 会員種別:

<select name="member">

<option value="g">一般会員</option> <option value="s">学生会員</option>

<option value="n" selected>非会員</option> </select>

<br>

<label><input type="checkbox" name="forum" value="yes">フォーラム参加</label> <label><input type="checkbox" name="party" value="yes">懇親会参加</label> <br> <button type="submit">送信</button> <button type="reset">リセット</button> </p> </form>

テキスト入力

(41)

フォームの例

<form action="/e" method="post"> <p>

名前:<input type="text" name="name" value=""> <br>

会員種別:

<select name="member">

<option value="g">一般会員</option>

<option value="s">学生会員</option>

<option value="n" selected>非会員</option>

</select>

<br>

<label><input type="checkbox" name="forum" value="yes">フォーラム参加</label> <label><input type="checkbox" name="party" value="yes">懇親会参加</label> <br> <button type="submit">送信</button> <button type="reset">リセット</button> </p> </form>

メニュー

テキスト入力

(42)

フォームの例

<form action="/e" method="post"> <p>

名前:<input type="text" name="name" value=""> <br>

会員種別:

<select name="member">

<option value="g">一般会員</option> <option value="s">学生会員</option>

<option value="n" selected>非会員</option> </select>

<br>

<label><input type="checkbox" name="forum" value="yes">フォーラム参加</label> <label><input type="checkbox" name="party" value="yes">懇親会参加</label> <br> <button type="submit">送信</button> <button type="reset">リセット</button> </p> </form>

テキスト入力

メニュー

チェックボックス

(43)

フォームの例

<form action="/e" method="post"> <p>

名前:<input type="text" name="name" value=""> <br>

会員種別:

<select name="member">

<option value="g">一般会員</option> <option value="s">学生会員</option>

<option value="n" selected>非会員</option> </select>

<br>

<label><input type="checkbox" name="forum" value="yes">フォーラム参加</label> <label><input type="checkbox" name="party" value="yes">懇親会参加</label> <br>

<button type="submit">送信</button>

<button type="reset">リセット</button>

</p> </form>

テキスト入力

メニュー

チェックボックス

ボタン

(44)
(45)
(46)
(47)
(48)

フォームデータの加工

<input type="text" name="

name

" value="">

名前

(49)

フォームデータの加工

<select name="

member

">

<option value="g">一般会員</option>

<option value="

s

">学生会員</option>

<option value="n" selected>非会員</option>

</select>

名前

name

放送

太郎

名前

(50)

フォームデータの加工

<input type="checkbox" name="

forum

" value="

yes

">

名前

name

放送

太郎

名前

member s

名前

forum

yes

(51)

フォームデータの加工

名前

name

放送

太郎

名前

member s

名前

forum

yes

(52)

フォームデータの加工

名前

name

放送

太郎

名前

member s

名前

forum

yes

1. スペースを「

+」に変換

英数字と一部の記号を除いた文字を

%XX」の形式に変換

2. エスケープした名前と値を「

=」で

つなぐ

3. 名前と値のペアを「&」でつなぐ

(53)

フォームデータの加工

名前

name

放送

太郎

名前

member s

名前

forum

yes

放送

太郎

%E6%94%BE%E9%80%81+%E5%A4%AA%E9%83%8E

1. スペースを「

+」に変換

英数字と一部の記号を除いた文字を

%XX」の形式に変換

2. エスケープした名前と値を「

=」で

つなぐ

3. 名前と値のペアを「&」でつなぐ

スペース

(54)

フォームデータの加工

名前

name

放送

太郎

名前

member s

名前

forum

yes

name

=

%E6%94%BE%E9%80%81+%E5%A4%AA%E9%83%8E

member

=

s

forum

=

yes

1. スペースを「

+」に変換

英数字と一部の記号を除いた文字を

%XX」の形式に変換

2. エスケープした名前と値を「

=」で

つなぐ

3. 名前と値のペアを「&」でつなぐ

(55)

フォームデータの加工

名前

name

放送

太郎

名前

member s

名前

forum

yes

name=%E6%94%BE%E9%80%81+%E5%A4%AA%E9%83%8E

&

member=s

&

forum=yes

1. スペースを「

+」に変換

英数字と一部の記号を除いた文字を

%XX」の形式に変換

2. エスケープした名前と値を「

=」で

つなぐ

3. 名前と値のペアを「&」でつなぐ

(56)

フォームの送信

① 送信するデータの特定

② フォームデータの加工

③ フォームデータの送信

(57)

フォームデータの送信

form要素のaction属性値で指定されたURIに、

method属性値で指定されたメソッドを使って

リクエストを発行

• GETメソッド ⋯ URIのクエリにする

• POSTメソッド ⋯ メッセージボディに入れて送信

(58)

GETメソッドによる送信

<form action="/e" method="

get

">

<button type="submit">送信</button>

</form>

リクエスト

GET /e?name=%E6%94%BE%E9%80%81+%E5%A4%AA%E9%83%8E&member=s&fo

rum=yes HTTP/1.1

(59)

POSTメソッドによる送信

<form action="/e" method="

post

">

<button type="submit">送信</button>

</form>

リクエスト

POST /e HTTP/1.1

Content-Type: application/x-www-form-urlencoded

Content-Length: 61

name=%E6%94%BE%E9%80%81+%E5%A4%AA%E9%83%8E&member=s&forum=yes

(60)

GETとPOSTの使い分け

• GETメソッドはリソースの取得

• 検索を行い、その結果を得る ⋯ ○

• 掲示板への投稿 ⋯ ×

(61)
(62)

GETとPOSTの使い分け

• GETメソッドはリソースの取得

• 検索を行い、その結果を得る ⋯ ○

• 掲示板への投稿 ⋯ ×

• データサイズが大きい場合はPOSTメソッド

• データを知られにくくするにはPOSTメソッド

(63)

ブックマーク

http://www.example.ac.jp/e?name=%E6%94%BE%E9%80%81+

%E5%A4%AA%E9%83%8E&member=s&forum=yes

<form action="http://www.example.ac.jp/e" method="get">

(64)
(65)

Webサーバソフトウェア

• リクエストを待ち受け

• URIで要求されるリソースを返却

• コンテントネゴシエーション

(66)

Common Gateway Interface (CGI)

Web

ブラウザ

Webサー

バソフト

ウェア

CGIスクリ

プト

② CGIリクエスト

③ CGIレスポンス

① HTTPリクエスト

④ HTTPレスポンス

Webサーバ

HTTPの取り決め範囲

CGIの取り決め範囲

プロセス

(67)

同一プロセス内でのリソース生成

Web

ブラウザ

Webサー

バソフト

ウェア

リソース生成プログラム

(68)

アプリケーションサーバの利用

Web

ブラウザ

Webサー

バソフト

ウェア

アプリ

ケーション

サーバ

リソース生成プログラム

(69)

ハードウェアの構成

Web

CL

AP

DB

Web

CL

AP

DB

Web

CL

AP

DB

Web

CL

DB

AP

AP

CL

クライアント

(Webブラウザ)

Web

Webサーバ

ソフトウェア

AP

アプリケーション

サーバ

DB

データベース

管理システム

(70)

第7回の内容

• 動的なWebサイト

• フォーム

参照

関連したドキュメント

(4) 現地参加者からの質問は、従来通り講演会場内設置のマイクを使用した音声による質問となり ます。WEB 参加者からの質問は、Zoom

ユーザ情報を 入力してくだ さい。必要に 応じて複数(2 つ目)のメー ルアドレスが 登録できます。.

※ログイン後最初に表示 される申込メニュー画面 の「ユーザ情報変更」ボタ ンより事前にメールアド レスをご登録いただきま

Webカメラ とスピーカー 、若しくはイヤホン

ユーザ情報を 入力してくだ さい。必要に 応じて複数(2 つ目)のメー ルアドレスが 登録できます。.

[r]

情報 システム Web サービス https://webmail.kwansei.ac.jp/ (https → s が 必要 ).. メール

教職員用 平均点 保護者用 平均点 生徒用 平均点.