Skip to main content

Web開発の基礎知識(HTTP・ブラウザ・サーバー)

この章では、Springを学ぶ前に必要な「Webの仕組み」を理解する。 ブラウザとサーバーはどのようにやりとりしているのか、HTTPとは何かを把握することが目的である。

学習のゴール

  • HTTPとは何かを説明できる
  • リクエストとレスポンスの流れを説明できる
  • GETとPOSTの違いを説明できる
  • ブラウザがどのようにページを表示するかを説明できる
  • Webアプリケーションとは何かを説明できる

1. Webの仕組み:ブラウザとサーバーの対話

Webアプリケーションは、 ブラウザサーバー が「HTTP」というルールに従って通信することで動いている。

  1. ユーザーがブラウザのURL欄にアドレスを入力してEnterキーを押す
  2. ブラウザが指定されたサーバーに「このページをください」という リクエスト を送る
  3. サーバーが受け取り、処理を行い、HTMLなどの レスポンス を返す
  4. ブラウザが受け取ったHTMLを解釈し、画面に表示する

この一連のやりとりを HTTPリクエスト / レスポンス と呼ぶ。


2. HTTPとは?

HTTP(HyperText Transfer Protocol) は、ブラウザとサーバーがデータをやりとりするためのルール(プロトコル)である。

「どのURLに」「何をしたいのか」「どんなデータを送るか」を定めた取り決めが HTTP である。

URLの構造

https://shop.example.com/items?category=books
└─┬─┘ └──────┬─────────┘└──┬┘ └─────┬─────┘
│ │ │ └ クエリパラメータ(条件や追加情報)
│ │ └ パス(どのコンテンツか)
│ └ ホスト名(どのサーバーか)
└ スキーム(通信方式。httpsは暗号化あり)
  • スキーム(https):通信方式を表す。 https は暗号化された通信を表す
  • ホスト名:どのサーバーにリクエストを送るかを表す
  • パス:サーバー上の「どのコンテンツか」を表す
  • クエリパラメータ:「?」以降。追加の条件や情報を渡すために使う

3. リクエストとレスポンス

リクエスト

ブラウザがサーバーに送る「要求」をリクエストと呼ぶ。 リクエストには主に以下の情報が含まれる。

  • HTTPメソッド:何をしたいか(GET:取得、POST:送信)
  • URL:どこにアクセスするか
  • ヘッダー:ブラウザの種類、受け入れ可能なデータ形式など
  • ボディ(POSTの場合):フォームに入力したデータなど

レスポンス

サーバーがブラウザに返す「応答」をレスポンスと呼ぶ。 レスポンスには主に以下の情報が含まれる。

  • ステータスコード:処理の結果(200:成功、404:見つからない、500:サーバーエラー)
  • ヘッダー:返すデータの種類(HTML、JSON など)
  • ボディ:実際のHTML・画像・JSONデータなど
代表的なHTTPステータスコード
コード意味
200 OK正常に処理されたページが正常に表示された
301/302リダイレクト別のURLに転送された
404 Not Foundリソースが見つからない存在しないページにアクセスした
500 Internal Server Errorサーバー側でエラーが発生したプログラムが例外をスローした

ブラウザの開発者ツール(F12)の「Network」タブでリクエスト/レスポンスの詳細を確認できる。


4. GETとPOST

HTTPには複数の「メソッド(動詞)」があるが、Webアプリの学習段階では主に GETPOST を使う。

GET

GETはデータを「取得する」ためのメソッド である。

  • ブラウザでURLを直接入力してアクセスする
  • リンクをクリックする
  • 検索フォームで検索する(一般的に)

GETリクエストでは、パラメータはURLのクエリパラメータ(?key=value)として送られる。 URLに情報が含まれるため、 ブックマークや共有が可能 なアクセスに適している。

POST

POSTはデータを「送信する」ためのメソッド である。

  • HTMLフォームの送信ボタンを押す
  • ファイルをアップロードする
  • 新しいデータを登録する

POSTリクエストでは、データはリクエストのボディ(URLには見えない部分)に入れて送られる。 パスワードや個人情報のような URLに見せたくないデータの送信 に向いている。

GETとPOSTの使い分け
目的使うべきメソッド
ページを表示するGET
データを検索するGET(URLに条件が含まれてよい場合)
フォームのデータを送信するPOST
ユーザー登録・ログインPOST
パスワードなど秘密情報を送るPOST

5. ブラウザがページを表示する仕組み

ブラウザはサーバーからHTMLを受け取り、以下の流れで画面を描画する。

  1. サーバーから HTML を受け取る → ページの「骨格」
  2. HTMLの中に書かれた CSS ファイルを別途取得 → 見た目(色・フォント・レイアウト)
  3. HTMLの中に書かれた JavaScript ファイルを別途取得 → 動的な操作(ボタンのイベント等)
  4. これらを組み合わせて画面に表示する
HTMLとCSS・JavaScriptの役割
技術役割
HTMLページの構造・内容見出し、段落、フォームなど
CSSページの見た目色、フォント、レイアウトなど
JavaScriptページの動作ボタンのイベント、非同期処理など

Springで作るWebアプリでは、サーバー側でHTMLを動的に生成して返す。 この「動的にHTMLを生成する」部分を担うのが Thymeleaf である。


6. Webアプリケーションとは

Webアプリケーション とは、ブラウザ上で動作するアプリケーションのことである。 単純な静的HTMLページと違い、 ユーザーの操作や入力に応じてHTMLを動的に生成・返す のが特徴。

  • ECサイト:商品一覧をDBから取得し、HTMLを生成して返す
  • SNS:ユーザーの投稿をDBに保存し、タイムラインを動的に表示する
  • 予約システム:フォームから予約データを受け取り、DBに登録する

これらはすべて「ブラウザ → サーバー → DB → サーバー → ブラウザ」という流れで動いている。 Springは、このようなWebアプリケーションをJavaで効率よく構築するためのフレームワークである。

Webアプリケーションのセキュリティ

ブラウザからサーバーへの通信は、インターネット上の誰でも見られる可能性がある。 そのため、パスワードなどの重要なデータを送信する際は、 HTTPS(暗号化通信) を使うことが必須である。

また、ユーザーからの入力値は 必ず検証(バリデーション)する 必要がある。 「送信されるデータは正常である」と信頼してはいけない。これはセキュリティの基本原則である。


まとめ

  • HTTP は、ブラウザとサーバーがデータをやりとりするためのルール(プロトコル)である
  • ブラウザはサーバーに リクエスト を送り、サーバーは レスポンス を返す
  • GET はデータの取得・ページ表示に使い、 POST はデータの送信・登録に使う
  • ブラウザは受け取ったHTML・CSS・JavaScriptを組み合わせて画面を描画する
  • Webアプリケーション は、ユーザーの操作に応じてHTMLを動的に生成するアプリケーション
  • Spring は、JavaでWebアプリケーションを効率よく構築するためのフレームワーク
  • 次章では、Webアプリの構造を理解するための MVCモデル を学ぶ

WebブラウザとWebサーバーがデータをやり取りする仕組みについての説明として、正しいものを選べ。

正解

C. WebブラウザとWebサーバーがデータをやり取りするための通信プロトコルのこと

解説

HTTPはHyperText Transfer Protocolの略で、WebブラウザとWebサーバー間の通信規約(プロトコル)である。

ブラウザがHTTPリクエストを送り、サーバーがHTTPレスポンスを返すことでWebページが表示される。

  • リクエスト: ブラウザがサーバーに「このページをください」と送るメッセージ
  • レスポンス: サーバーが「はい、これです」と返すメッセージ(HTMLやJSONなど)

HTTPのGETメソッドとPOSTメソッドの違いとして、正しいものを選べ。

正解

A. GETはURLにパラメータが付加されてデータを送信し、POSTはリクエストボディにデータを格納して送信する

解説

GETはURLのクエリ文字列(?name=value)としてデータを送信するため、ブラウザの履歴やURLバーに表示される。

POSTはリクエストボディにデータを格納して送信するため、パスワードなどの機密情報の送信に適している。

一般的な使い分け:

  • GET: データ取得(ページ表示、検索)→ URLに情報が残る
  • POST: データ送信(フォーム送信、ログイン)→ URLに情報が残らない

主要なHTTPステータスコードの説明として、正しいものを選べ。

正解

D. 200はリクエスト成功、404はリソースが見つからない、500はサーバー内部エラーを表す

解説

HTTPステータスコードは3桁の数字で、先頭の数字によって意味が分類される。

  • 2xx: 成功(200 OK、201 Created)
  • 3xx: リダイレクト(301 Moved Permanently、302 Found)
  • 4xx: クライアントエラー(400 Bad Request、401 Unauthorized、404 Not Found)
  • 5xx: サーバーエラー(500 Internal Server Error、503 Service Unavailable)

よく見るコード:200(成功)・404(ページなし)・500(サーバーエラー)

https://example.com/users?id=1 というURLの各要素の説明として、正しいものを選べ。

正解

B. `https://example.com/users?id=1` において、`https` はスキーム、`example.com` はホスト名、`/users` はパス、`id=1` はクエリパラメータである

解説

URLは以下の要素で構成される。

https://example.com/users?id=1
↑       ↑           ↑     ↑
スキーム ホスト名    パス  クエリパラメータ
  • スキーム (https): 通信プロトコルの種類
  • ホスト名 (example.com): サーバーのアドレス
  • パス (/users): サーバー上のリソースの場所
  • クエリパラメータ (id=1): ?以降の追加情報(複数は&で区切る)

WebブラウザでURLにアクセスしたときの、リクエストとレスポンスの基本的な流れとして、正しいものを選べ。

正解

A. ブラウザがHTTPリクエストを送信 → サーバーが処理 → HTTPレスポンスをブラウザに返す → ブラウザが画面を表示する

解説

Webの基本的な通信はクライアント(ブラウザ)とサーバーの間で行われる。

  1. ブラウザがURLにアクセス(HTTPリクエストを送信)
  2. サーバーがリクエストを受け取り処理
  3. サーバーがHTTPレスポンス(HTMLなど)を返す
  4. ブラウザがレスポンスを解析して画面を表示

この「リクエスト → レスポンス」の繰り返しがWebの基本である。

ブラウザのデベロッパーツールで、あるリクエストのステータスコードが 404 と表示されていた。このとき何が起きているかを選べ。

正解

C. アクセスしようとしたページが見つからなかった

解説

ステータスコード 404 は "Not Found" を意味する。

クライアントがリクエストしたリソース(ページやファイルなど)がサーバー上に存在しないことを示す。

よく見るステータスコード:

  • 200 OK: 成功
  • 301/302: リダイレクト
  • 404 Not Found: ページが存在しない
  • 500 Internal Server Error: サーバー内部エラー

以下のURLにおいて、パス部分とクエリパラメータ部分の空欄を埋めよ。

https://example.com
?

解答例
https://example.com/products?category=shoes
解説

URLは スキーム://ホスト名/パス?クエリパラメータ の構造を持つ。

  • パス (/products): サーバー上のリソースの場所を示す
  • クエリパラメータ (category=shoes): ? 以降に キー=値 形式で付与する追加情報

複数のクエリパラメータは & で区切る(例:?category=shoes&sort=price)。

静的なHTMLサイトとSpringのようなフレームワークを使ったWebアプリの違いとして、正しいものを選べ。

正解

B. 静的サイトはあらかじめ用意されたファイルをそのまま返すが、Webアプリはサーバーでプログラムが実行されてHTMLを動的に生成する

解説

静的サイトとWebアプリの違いは、サーバー側での処理の有無にある。

静的サイト:

  • HTMLファイルをそのまま返すだけ
  • 内容は変わらない(誰が見ても同じ)

Webアプリ(動的サイト):

  • Springなどのサーバーサイドプログラムが実行される
  • データベースの内容やユーザー操作に応じてHTMLを動的に生成
  • ユーザーごとに異なる内容を表示できる(ログイン後のマイページなど)