【Sprint Boot2】POSTリクエストでクライアント側からサーバサイドへデータ送信

Sprint Bootの入門ページです。HTTPのPOSTリクエスト時に、クライアント側からサーバサイドへデータの受け渡しする簡単なウェブアプリをSpring Bootで作ります。Spring Bootの初心者・入門者の方は、参考にしてください。

※ 本ページはプロモーションが含まれています。

環境と今回の目的

最終更新日:2022/11/22

Spring BootのWebアプリで、HTTPのGETリクエストのクエリストリングを使って、クライアント側からサーバサイドへのデータの受け渡しについて別ページで説明しました。
【Sprint Boot2入門】GETリクエストでクライアントからサーバサイドへデータ送信【クエリストリング】

本記事では、HTTPのPOSTリクエストで、クライアント側からサーバサイドへのデータの受け渡しをやってみます。

・開発環境やバージョンは以下の通りです。
OS:macOS Catalina(バージョン10.15.5)
->Webアプリ内の話なのでWindowsでも同じかと思います。
開発環境:Eclipse(Pleiades All in One、4.16(2020-06)、Java Full Edition版)
Spring Boot:バージョン2.7.5
Java:11

◾️Eclipse(Pleiades All in One、Java Full Edition版)
Eclipse(Pleiades All in One、Java Full Edition版)は、最初からEclipseの日本語化がされていますし、STS(Spring Tool Suite)やLombokなどの複数の有用なプラグインも入っていて設定済みなので、開発環境構築の手間が省けます。
Eclipseの導入については別ページに書いていますので、参考にしてください。

【Java初心者】Eclipse(Pleiades All in One)をインスールしてJava開発ができるようにする【macOS版】

フロントエンド(HTML)の作成

別ページで、EclipseでのSpring Bootプロジェクトのひな形の作成をして簡単なWebアプリ(Webサイト)の作成から実行までを説明していますので、そちらを参考にしてください。
Spring Boot3 + MySQL(MariaDB)のウェブ開発入門
Sprint Boot2で初めてのJavaのウェブアプリ開発(DB無しのWebサイト)

まずはフロントエンドのHTMLファイルから作成します。POSTリクエストするためのフォームを持ったHTMLを作ります。
プロジェクトの「src/main/resources/templates」ディレクトリ内に、新規でhtmlファイルを作成します。
ファイル名は適当で良いですが(あとで作るコントローラクラスのメソッドの戻り値に合わせる必要がありますが)、ここではtestpostform.htmlとします。

testpostform.htmlのHTMLです。

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h3>Spring Boot2のPOSTリクエストのテスト</h3>
<form th:action="@{/testpostrequest}" method="post">
<input type="text" name="postdata">
<button type="submit">送信する</button>
</form>
</body>
</html>

testpostform.htmlのformタグには、1つだけデータ送信のためのテキストボックスがあります。
「th:action="@{/testpostrequest}"」は、thymeleafの書式で、「http://localhost:8080/testpostrequest」にPOSTリクエストするようにします。

サーバサイドのControllerクラスの作成、@PostMappingアノテーション

次に、サーバサイドのコントローラクラスを作成します。プロジェクト内の「src/main/java」ディレクトリの「com.example.demo.controllers」パッケージ内にFormPostControllerクラスを作成します。

Eclipseでのコントローラ(Javaクラス)の作成手順については、こちらのページを参考にしてください。

そして、FormPostController.javaクラスのコードを編集します。

package com.example.demo.controllers;

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

@Controller
public class FormPostController {

	//フォーム表示
	@RequestMapping("/testpostform")
	public String testPostForm() {
		return "testpostform";
	}

	//POSTリクエスト時
	//@RequestMapping("/testpostrequest")
	@PostMapping("/testpostrequest")
	@ResponseBody
	public String testPostRequest(@RequestParam String postdata) {
		String str = "";
		str = str.concat("postdata is " + postdata + "<br>");
		return str;
	}
}

FormPostControllerのメソッドは2つです。1つ目のtestPostFormメソッドは、POSTリクエストをするためのWebページを表示します。「http://localhost:8080/testpostform」にリクエストした時に、呼び出されます。

2つ目のtestPostRequestメソッドは、POSTリクエスト時に呼び出されます。@RequestParamの変数名のpostdataは、HTMLフォームのテキストボックスの名前(name)と一致させる必要があります。これで、POSTリクエストでクライアント側からサーバサイドへデータ送信(データの受け渡し)ができます。

@RequestParamの扱い方、メソッドの定義の仕方は、GETリクエスト時のクエリストリングと同じです。GETリクエスト時の@RequestParamについては別ページで説明していますので、そちらを参考にしてください。
【Sprint Boot2】GETリクエストでクライアント側からサーバサイドへデータ送信。サーバサイドのControllerクラスの作成、@RequestParam、@GetMapping

@PostMappingアノテーション
そして、testPostRequestメソッドのURLのマッピングは@PostMappingアノテーションを使っています。@PostMappingはPOSTリクエストのみ受ける事ができ、GETリクエストはエラーになります。

@RequestMappingアノテーションは、GET・POST関係なくリクエストを受ける事ができますが、HTMLフォームからのリクエストを想定している時のように、使われ方が明確になっている場合は@PostMappingを使ったほうが良いでしょう。

アプリの実行と動作確認

それでは、実際にSpring Bootウェブアプリを起動して、ブラウザで動作確認をします。EclipseでのSpring Bootアプリの起動方法については、こちらのページを参考にしてください。

アプリを起動したら、ブラウザで表示確認をしてみましょう。
まず、HTMLフォームのページを開きます。アクセスするurlは「http://localhost:8080/testpostform」です。

そして、テキストボックスに適当なデータを入力し、"送信する"ボタンを押し、POSTリクエストをします。
ここでは適当に"こんばんは"と入力してPOSTリクエストをします。"postdata is ○○"と表示されれば正常に動作しています。
Spring BootでPOSTリクエストの動作確認

(広告)AmazonでSpring Boot3(バージョン3系)の初心者向け入門書を探す!本でSpring Bootプログラミング開発を体系的に勉強する!

その他のSpring Bootの記事

Spring Boot2で日記投稿ウェブアプリ開発入門トップページ
Javaで人気のあるWebフレームワークのSpring Bootでシンプルな日記投稿ウェブアプリの開発しながら、入門者・初心者にもわかりやすいように説明しています。DBと連携した新規投稿、編集、削除、一覧表示という基本的なCRUD機能を備えたアプリです。