カテゴリ: Spring 更新日: 2026/01/28

JavaのSpringで@PostMappingアノテーションを学ぼう!初心者でもわかるHTTP POSTの処理方法

Springの@PostMappingアノテーション
Springの@PostMappingアノテーション

先生と生徒の会話形式で理解しよう

生徒

「JavaのSpringでフォームからデータを送信したいのですが、どうやってサーバー側で受け取るんですか?」

先生

「良い質問ですね!Springフレームワークでは、@PostMappingアノテーションを使ってHTTP POSTリクエストを処理できます。フォームからのデータ送信もこのアノテーションで受け取ることができますよ。」

生徒

「それは便利ですね!どうやって使うのか具体的に教えてください。」

先生

「それでは、実際の使い方を一緒に見ていきましょう。」

1. @PostMappingアノテーションとは?

1. @PostMappingアノテーションとは?
1. @PostMappingアノテーションとは?

@PostMappingアノテーションは、JavaのSpringフレームワークでHTTPのPOSTリクエストを受け取るための専用アノテーションです。ブラウザのフォーム送信や、フロントエンドからのデータ送信、REST APIからの登録処理など、「サーバー側にデータを送って何かをしてほしい」ときに使われます。

同じSpringでも、画面表示に使うGETリクエストには@GetMappingを使いますが、フォーム送信のように「サーバーに情報を渡して登録・更新したい」場合には@PostMappingが向いています。POSTはURLではなくリクエストボディにデータを乗せて送ることが多く、パスワードや個人情報なども扱いやすいため、Webアプリ開発やログイン処理、会員登録機能などでよく使われます。

イメージをつかむために、まずはとてもシンプルな例を見てみましょう。ここでは、固定メッセージを返すだけのPOST用エンドポイントを定義しています。


import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
public class SimplePostController {

    @PostMapping("/submit")
    @ResponseBody
    public String handleSubmit() {
        return "POSTリクエストを受け取りました";
    }
}

この例では、クライアントが/submitというURLに対してHTTP POSTリクエストを送ると、サーバー側のhandleSubmitメソッドが呼び出されます。そして「POSTリクエストを受け取りました」という文字列をレスポンスとして返します。実際のアプリケーションでは、ここにフォームの内容を保存したり、データベースに登録したりする処理を書いていきます。

まずは「@PostMappingはPOSTリクエストをどのメソッドで処理するかを紐づけるための印」と覚えておくと、後のフォーム送信やJSONデータの受け取りの理解がスムーズになります。

2. 簡単なフォームと@PostMappingの実装

2. 簡単なフォームと@PostMappingの実装
2. 簡単なフォームと@PostMappingの実装

まずは、HTMLフォームを使ってデータを送信し、それをSpringのコントローラで受け取る方法を見ていきましょう。

2.1 HTMLフォームの作成

フォームは、ユーザーが入力したデータをPOSTメソッドで送信します。


    <form action="/submit-form" method="post">
        <label for="name">名前:</label>
        <input type="text" id="name" name="name" required><br>
        <label for="email">メールアドレス:</label>
        <input type="email" id="email" name="email" required><br>
        <button type="submit">送信</button>
    </form>

2.2 Springコントローラの実装

次に、Springのコントローラで@PostMappingを使ってフォームから送信されたデータを受け取ります。


    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.PostMapping;
    import org.springframework.web.bind.annotation.RequestParam;
    import org.springframework.ui.Model;

    @Controller
    public class FormController {

        @PostMapping("/submit-form")
        public String handleFormSubmission(@RequestParam("name") String name,
                                           @RequestParam("email") String email,
                                           Model model) {
            model.addAttribute("name", name);
            model.addAttribute("email", email);
            return "formResult";
        }
    }

3. @RequestParamを使ったデータ取得

3. @RequestParamを使ったデータ取得
3. @RequestParamを使ったデータ取得

@RequestParamアノテーションは、HTTPリクエストからパラメータを取得するために使われます。上記の例では、フォームのnameおよびemailフィールドから入力データを受け取るために使用されています。

また、@RequestParamにはオプションでrequired属性を設定することができ、省略可能なパラメータも処理できます。

4. フォーム送信後の結果表示

4. フォーム送信後の結果表示
4. フォーム送信後の結果表示

送信されたデータは、formResult.htmlテンプレートで表示できます。以下はそのテンプレートの例です。


    <!DOCTYPE html>
    <html lang="ja">
    <head>
        <meta charset="UTF-8">
        <title>フォーム結果</title>
    </head>
    <body>
        <h2>送信されたデータ</h2>
        <p>名前: ${name}</p>
        <p>メールアドレス: ${email}</p>
    </body>
    </html>

5. @PostMappingでJSONデータを受け取る

5. @PostMappingでJSONデータを受け取る
5. @PostMappingでJSONデータを受け取る

フォームだけでなく、JavaのSpringでは@PostMappingを使うことで、JSON形式のデータも簡単に受け取ることができます。特にREST APIを設計する際、フロントエンドや外部サービスからJSONリクエストを送信するケースが増えているため、POSTメソッドでJSONを受け取るパターンは非常に重要です。

その際に活用するのが@RequestBodyアノテーションです。これは、HTTPリクエストのボディに含まれるJSONをJavaオブジェクトに自動変換してくれる便利な仕組みです。データ形式を手動で解析する必要がなくなり、コードがシンプルで保守しやすくなります。

例えば、ユーザー登録APIを作成する場合、ユーザー名やメールアドレスなど複数の値をまとめてJSONで送信し、サーバー側で処理を行うことが可能です。この方法は、モダンなWebアプリケーションやSPA(Single Page Application)との連携でも頻繁に使われます。

6. @PostMappingとバリデーションの組み合わせ

6. @PostMappingとバリデーションの組み合わせ
6. @PostMappingとバリデーションの組み合わせ

フォーム入力やJSONデータを受け取る際は、ただ受け取るだけでなく内容が正しいかをチェックすることも重要です。Springでは@PostMappingと合わせて@Valid@Validatedを使うことで、自動的に入力チェックを行えます。

例えば、名前の入力が必須であることを保証したり、メールアドレスの形式が正しいか検証したりすることで、不正なデータがシステム内部に入るのを防ぎます。また、検証に失敗した場合はエラー内容をメッセージとして返すことで、ユーザーに正しい入力を促すことができます。

これにより、セキュリティ面だけでなくユーザビリティも向上し、安定したWebアプリケーションの構築につながります。

7. @PostMappingでファイルアップロードを処理する

7. @PostMappingでファイルアップロードを処理する
7. @PostMappingでファイルアップロードを処理する

@PostMappingはテキストデータだけでなく、画像・PDF・CSVなどのファイルをアップロードする用途でも利用できます。特にプロフィール画像のアップロードやレポートの送信など、業務システムで多く使われる機能です。

SpringではMultipartFileクラスを利用することで、アップロードされたファイルを簡単に取得できます。その後、保存処理や検証処理を行い、サーバー内のディレクトリやクラウドストレージに格納することで、ユーザーがアップロードしたデータを活用できます。

ただし、ファイルサイズ上限の設定や拡張子チェック、ウイルス対策など、セキュリティ上の注意も必要となります。特に公共向けサービスを作る場合は、安全なファイル処理を意識することが重要です。

まとめ

まとめ
まとめ

この記事では、JavaのSpringフレームワークを用いてHTTP POSTリクエストを処理する方法を学びました。特に、@PostMappingアノテーションを使用し、フォームから送信されたデータをサーバー側で受け取る方法に焦点を当てています。

@PostMappingアノテーションは、ユーザーからのデータ送信を処理するための簡潔かつ強力な方法です。このアノテーションを使用することで、新しいデータの追加やユーザーの入力処理が簡単になります。また、@RequestParamを組み合わせることで、フォームフィールドからの値を簡単に取得できることも理解しました。

以下は、@PostMapping@RequestParamを使用したSpringコントローラのサンプルコードです。


    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.PostMapping;
    import org.springframework.web.bind.annotation.RequestParam;
    import org.springframework.ui.Model;

    @Controller
    public class FormController {

        @PostMapping("/submit-form")
        public String handleFormSubmission(@RequestParam("name") String name,
                                           @RequestParam("email") String email,
                                           Model model) {
            model.addAttribute("name", name);
            model.addAttribute("email", email);
            return "formResult";
        }
    }

さらに、HTMLフォームと@PostMappingを連携させることで、ユーザー入力の受け渡しと結果の表示も可能です。以下は、HTMLフォームの例です。


    <form action="/submit-form" method="post">
        <label for="name">名前:</label>
        <input type="text" id="name" name="name" required><br>
        <label for="email">メールアドレス:</label>
        <input type="email" id="email" name="email" required><br>
        <button type="submit">送信</button>
    </form>

Spring MVCの@PostMapping@RequestParamを活用することで、ユーザー入力を受け取る処理がスムーズになります。エラー処理や必須フィールドの管理も簡単に設定でき、アプリケーションの柔軟性が向上します。

先生と生徒の振り返り会話

生徒

「今回の学習で、@PostMappingを使うとフォームデータを簡単に受け取れることがわかりました!」

先生

「その通りです。@PostMappingはデータの追加や変更など、サーバーでの処理に非常に役立ちます。また、@RequestParamで特定のデータだけを取り出すことも覚えておくと便利ですね。」

生徒

「今後、他のHTTPメソッドも学んでいきたいです!」

先生

「いいですね!@GetMapping@PutMappingも使い方が似ていて、...

この記事を読んだ人からの質問

この記事を読んだ人からの質問
この記事を読んだ人からの質問

プログラミング初心者からのよくある疑問/質問を解決します

@PostMappingアノテーションとは何ですか?

@PostMappingは、SpringフレームワークでHTTP POSTリクエストを処理するためのアノテーションです。フォームやAPIから送信されたデータをサーバーサイドで受け取る際に使われます。

HTMLフォームからのデータをSpringで受け取る方法は?

HTMLフォームでPOSTメソッドを使い、Springのコントローラで@PostMappingアノテーションを設定してデータを受け取ります。@RequestParamを使うことで、フォームの入力フィールドの値を取得できます。

@RequestParamアノテーションの役割は何ですか?

@RequestParamは、HTTPリクエストのパラメータを取得するためのアノテーションです。例えば、フォームのname属性に対応する値を簡単に取得できます。

@RequestParamで必須パラメータを設定できますか?

はい、@RequestParamにはrequired属性があり、デフォルトではtrueになっています。これをfalseに設定すると、省略可能なパラメータとして扱えます。

フォームの送信結果をユーザーに表示する方法は?

送信結果を表示するには、SpringのModelオブジェクトを使い、データをテンプレート(Thymeleafなど)に渡します。テンプレート内で変数を表示する構文を使用します。

@PostMappingと@GetMappingの違いは何ですか?

@PostMappingはHTTP POSTリクエストを処理するために使用され、データの作成や変更に適しています。一方、@GetMappingはHTTP GETリクエストを処理し、データの取得や表示に使われます。

@PostMappingを使用する場合、セキュリティの注意点は?

フォームデータを受け取る際は、不正なリクエストを防ぐためにCSRFトークンを有効にすることが重要です。また、入力データのバリデーションを行い、サニタイズ処理を実施してください。

フォームデータをオブジェクトとして受け取ることは可能ですか?

可能です。@ModelAttributeを使用すると、フォームの入力データをJavaオブジェクトにマッピングできます。これにより、複数のフィールドを一括で受け取れます。

SpringでJSONデータをPOSTリクエストとして送信する方法は?

クライアント側でJSON形式のデータを作成し、Content-Typeヘッダーをapplication/jsonに設定してPOSTリクエストを送信します。サーバー側では、@RequestBodyアノテーションを使用してデータを受け取ります。

Spring Bootで簡単にフォーム処理を始めるにはどうすればよいですか?

Spring Bootプロジェクトを作成し、依存関係にSpring WebとThymeleafを追加します。その後、コントローラを作成し、@PostMappingでリクエスト処理を実装します。テンプレートエンジンで結果を表示するページを作成すれば完了です。

Springの学習を効率化したい方へ

この記事の内容をもっと深く知るには、以下の入門書が最適です。

Spring Framework超入門をAmazonで見る
カテゴリの一覧へ
新着記事
New1
Spring
SpringDataJPAのJPAクエリメソッド「EndingWith」の使い方を完全ガイド!初心者向け解説
更新記事
New2
Spring
SpringDataJPAのJPAクエリメソッド「StartingWith」の使い方を完全ガイド!初心者向け解説
更新記事
New3
Spring
SpringDataJPAのJPAクエリメソッド「NotLike」の使い方を完全ガイド!初心者向け解説
更新記事
New4
Spring
SpringDataJPAのJPAクエリメソッド「Like」の使い方を完全ガイド!初心者向け解説
更新記事
人気記事
No.1
Java&Spring記事人気No1
Spring
Spring BootとJavaの互換性一覧!3.5/3.4/3.3はJava 21・17に対応してる?
No.2
Java&Spring記事人気No2
Java
JavaのBooleanクラスの使い方を完全ガイド!初心者でもわかる真偽値の操作
No.3
Java&Spring記事人気No3
Java
JavaのIOExceptionクラス徹底解説!初心者向けファイル入出力エラー対策ガイド
No.4
Java&Spring記事人気No4
JSP
JSPの基本タグ一覧と使い方まとめ!実務で使えるタグを紹介
No.5
Java&Spring記事人気No5
JSP
JSPでif文・for文を使う方法!初心者でもわかるJavaとの違いと使い方
No.6
Java&Spring記事人気No6
Spring
SpringのBindingResultを完全ガイド!初心者でもわかる入力チェックとエラー処理
No.7
Java&Spring記事人気No7
Spring
SpringのModelクラスとaddAttributeメソッドの使い方を完全ガイド!初心者でも安心
No.8
Java&Spring記事人気No8
Spring
SpringDataJPAのJPAクエリメソッド「EndingWith」の使い方を完全ガイド!初心者向け解説