Web 全体像をざっくりつかむ
まずは「ブラウザで URL を開くと、裏で何が起きているのか」をイメージでつかみましょう。
あなたがブラウザに https://example.com と入力して Enter を押すと、ブラウザは「サーバー」に対して「そのページをください」とお願いを送ります。
この「お願い」が HTTP リクエスト、サーバーから返ってくる「結果」が HTTP レスポンス です。
ブラウザは、受け取ったレスポンスの中の HTML・CSS・JavaScript を解釈して、画面にページを描画します。
つまり、
ブラウザ=お願いする側(クライアント)
サーバー=応える側(サーバー)
HTTP=その間でやり取りするルール(プロトコル)
という構図になっています。
Web アプリと「ただの Web ページ」の違い
静的サイトと Web アプリ
「ただの Web ページ」は、あらかじめ用意された HTML ファイルをそのまま返すだけの世界です。
会社の紹介ページや、ほとんど更新されない情報ページなどが典型です。
一方、Web アプリは「リクエストの内容に応じて、その場で結果を計算して返す」仕組みを持っています。
ログイン、検索、ショッピングカート、チャット、管理画面など、ユーザーごと・タイミングごとに結果が変わるものは、すべて Web アプリです。
Java で作るのは基本的にこの「Web アプリ」の側です。
サーバー側で Java プログラムが動き、リクエストの内容を見て、データベースを読んだり計算したりして、HTML や JSON を組み立てて返します。
HTTP リクエストとレスポンスのイメージ
リクエストは「手紙」、レスポンスは「返事」
HTTP リクエストには、ざっくり次のような情報が入っています。
どの URL に対するものか(パス)
どんな操作をしたいか(GET、POST などのメソッド)
追加情報(ヘッダ、ボディ)
例えば、ブラウザでユーザー一覧ページを開くとき、サーバーにはこんなイメージのリクエストが飛びます。
GET /users HTTP/1.1
Host: example.com
User-Agent: ...
Accept: text/html
サーバーはそれを受け取って、こんなレスポンスを返します。
HTTP/1.1 200 OK
Content-Type: text/html; charset=UTF-8
<html>...</html>
Java の Web アプリは、この「リクエストを受け取ってレスポンスを返す」処理を、プログラムとして書いていくことになります。
Java Web アプリのざっくりした流れ
1. ブラウザからリクエストが飛んでくる
ユーザーがブラウザでボタンを押したり、フォームを送信したりすると、HTTP リクエストがサーバーに届きます。
URL と HTTP メソッド(GET/POST など)によって、「どの処理に振り分けるか」が決まります。
Java の世界では、Spring MVC などを使うと、次のようなコードで「どの URL に来たらどのメソッドを呼ぶか」を書けます。
@GetMapping("/users")
public String listUsers(Model model) {
var users = userService.findAll();
model.addAttribute("users", users);
return "users/list"; // テンプレート名
}
Java/users に GET でアクセスが来たら、このメソッドが呼ばれる、というイメージです。
2. サーバー側で処理・データ取得を行う
コントローラ(上のメソッド)は、サービスやリポジトリを呼び出して、データベースからデータを取得したり、ビジネスロジックを実行したりします。
public List<User> findAll() {
return userRepository.findAll();
}
Javaここで、
「どのデータを取るか」
「どんな条件で絞るか」
「どんな計算をするか」
といったアプリ固有のロジックが動きます。
3. 結果を HTML や JSON にして返す
取得したデータを、テンプレートエンジン(Thymeleaf など)で HTML に埋め込んだり、
API なら JSON に変換して返したりします。
HTML を返す場合は、ブラウザがそれを画面に描画します。
JSON を返す場合は、フロントエンド(JavaScript)がそれを受け取って画面を更新します。
REST と Web アプリの関係
REST は「Web API の設計スタイル」
REST(レスト)は、
「URL と HTTP メソッドを使って、リソース(ユーザー、商品、注文など)を操作する設計スタイル」です。
例えば、ユーザーを扱う REST API なら、こんな感じになります。
GET /users でユーザー一覧を取得GET /users/1 で ID=1 のユーザーを取得POST /users でユーザーを新規作成PUT /users/1 でユーザーを更新DELETE /users/1 でユーザーを削除
Java では、Spring Boot などを使うと、次のように書けます。
@RestController
@RequestMapping("/users")
class UserController {
@GetMapping
List<User> list() { ... }
@GetMapping("/{id}")
User get(@PathVariable Long id) { ... }
@PostMapping
User create(@RequestBody UserRequest request) { ... }
}
JavaREST は「Web アプリの中で、サーバー側の機能を外部に公開するための API の設計ルール」として使われます。
Web アプリの「役割分担」をイメージする
クライアントとサーバーの責務
クライアント(ブラウザやスマホアプリ)は、
画面表示、ユーザー入力、簡単なバリデーションなどを担当します。
サーバー(Java Web アプリ)は、
ビジネスロジック、データベースとのやり取り、認証・認可、トランザクション管理などを担当します。
この「どっちが何をやるか」の線引きが、設計の重要ポイントになります。
最近は、画面はフロントエンド(React/Vue など)、サーバーは REST API という分担もよくありますが、
根っこにあるのは「HTTP でリクエストとレスポンスをやり取りする」という同じ仕組みです。
初心者がまず押さえるべき Web アプリのイメージ
ここまでを、あなたの言葉でまとめるとこうなります。
ブラウザが HTTP リクエストを送り、サーバーが HTTP レスポンスを返す。
Java Web アプリは、そのサーバー側の中身で、
「どの URL に来たらどの処理をするか」を決め、
データベースからデータを取り、
HTML や JSON を組み立てて返している。
REST は、そのサーバー側の機能を「URL+HTTP メソッド」で整理して公開する設計スタイル。
Web アプリの仕組みは、
クライアントとサーバーが HTTP という共通ルールで会話している、というシンプルな構図の上に成り立っている。

