カテゴリ: Servlet 更新日: 2025/10/10

Java ServletのHttpServletのdoPutメソッド完全ガイド!初心者でもわかるPUTリクエストの使い方と実装方法

HttpServletのdoPutメソッド
HttpServletのdoPutメソッド

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

生徒

「Servletでデータを送信して新しいリソースを作ったり更新したりするには、どうすればいいんですか?」

先生

「それにはPUTリクエストを使います。JavaのHttpServletではdoPut()メソッドで処理できますよ。」

生徒

「POSTとの違いって何ですか?」

先生

「それでは、doPut()メソッドの役割やPUTリクエストの使いどころを具体的に見ていきましょう。」

1. doPutメソッドとは

1. doPutメソッドとは
1. doPutメソッドとは

doPut()メソッドは、Java ServletのHttpServletクラスに用意されている保護されたメソッドで、HTTPのPUTリクエストを処理するために使います。

PUTは主に、リソースの「更新」や「作成」を目的としたリクエストで、RESTful APIにおいては非常によく使われるHTTPメソッドのひとつです。

doPut()をオーバーライドすることで、クライアントから送られてくるデータを受け取り、それをサーバー側で処理することができます。

2. PUTリクエストとPOSTの違い

2. PUTリクエストとPOSTの違い
2. PUTリクエストとPOSTの違い

初心者にとって混乱しがちなのがPOSTPUTの違いです。

  • POST:既存のリソースに「追加」や「送信」する(部分更新、データ登録など)
  • PUT:指定したリソースを「上書き」する(全体更新や新規作成など)

たとえば、特定のIDを持つユーザー情報を更新したい場合には、PUTが適しています。

3. doPutメソッドの基本的な実装方法

3. doPutメソッドの基本的な実装方法
3. doPutメソッドの基本的な実装方法

ServletでPUTリクエストを処理するには、HttpServletを継承したクラスでdoPut()メソッドをオーバーライドします。


import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.BufferedReader;
import java.io.IOException;

public class UpdateServlet extends HttpServlet {
    @Override
    protected void doPut(HttpServletRequest request, HttpServletResponse response)
            throws IOException {
        StringBuilder body = new StringBuilder();
        try (BufferedReader reader = request.getReader()) {
            String line;
            while ((line = reader.readLine()) != null) {
                body.append(line);
            }
        }
        // ここで受け取ったデータを処理する
        response.setStatus(HttpServletResponse.SC_OK);
        response.getWriter().write("PUTデータを受信しました: " + body.toString());
    }
}

このコードでは、BufferedReaderを使ってクライアントから送られたデータを読み取り、それをレスポンスとして返しています。

4. JSONデータの受け取りと解析

4. JSONデータの受け取りと解析
4. JSONデータの受け取りと解析

doPut()ではJSON形式のデータを受け取ることも多いため、JSONパーサー(例:JacksonやGson)を使ってデータを解析するのが一般的です。

下記はJacksonライブラリを使用してJSONデータを解析する一例です。


ObjectMapper mapper = new ObjectMapper();
User user = mapper.readValue(body.toString(), User.class);

こうすることで、送られてきたJSON文字列をJavaのオブジェクトに変換し、データの操作がしやすくなります。

5. doPutでのレスポンス制御

5. doPutでのレスポンス制御
5. doPutでのレスポンス制御

クライアントに対して、処理結果をHTTPステータスコードで伝えることも大切です。response.setStatus()を使うことで、成功やエラーの状態を明示できます。

  • SC_OK(200):更新成功
  • SC_CREATED(201):新規作成成功
  • SC_BAD_REQUEST(400):リクエスト不正

ステータスコードの適切な設定は、APIの信頼性と使いやすさにつながります。

6. doPutメソッドの活用シーン

6. doPutメソッドの活用シーン
6. doPutメソッドの活用シーン

doPut()メソッドは、以下のような場面で非常に役立ちます。

  • ユーザー情報の更新(IDを指定して上書き)
  • 設定ファイルやJSONデータの保存
  • RESTful APIでのリソース管理

特にREST APIでは、PUTPATCHを使い分けて、更新操作をきれいに分離するのが一般的です。

7. セキュリティとバリデーション

7. セキュリティとバリデーション
7. セキュリティとバリデーション

doPut()で受け取ったデータは、必ずバリデーション(検証)を行う必要があります。形式チェックや必須項目の確認を行わないと、意図しないデータで上書きされる危険があります。

また、認証・認可処理と組み合わせることで、信頼できるユーザーだけがリソースを更新できるようにすることも重要です。

8. クライアントからのテスト方法

8. クライアントからのテスト方法
8. クライアントからのテスト方法

doPut()の動作確認は、curlやPostmanを使って行うのが一般的です。以下はcurlコマンドでJSONデータをPUTする例です。


curl -X PUT -H "Content-Type: application/json" -d '{"name":"Taro"}' http://localhost:8080/api/user/1

このようにして簡単にdoPut()のテストが可能です。

カテゴリの一覧へ
新着記事
Springの@Transactional徹底解説!トランザクションの伝播・分離レベル・タイムアウトの基本
JavaのHashMapクラスgetメソッドの使い方を完全ガイド!初心者でもわかるjava.util入門
Thymeleafのth:fragmentを使ったテンプレートの再利用方法を完全ガイド!初心者でもわかる使い方
Javaの@PathVariableアノテーションの使い方を徹底解説!初心者でもわかるパスパラメータの基本と応用
人気記事
No.1
Java&Spring記事人気No1
Javaのラムダ式で配列を扱う!Arrays.streamの基本と注意点を初心者向けに解説
No.2
Java&Spring記事人気No2
JavaのRuntimeExceptionを完全解説!初心者でもわかるjava.langパッケージの基礎
No.3
Java&Spring記事人気No3
Spring BootとJavaの互換性一覧!3.5/3.4/3.3はJava 21・17に対応してる?
No.4
Java&Spring記事人気No4
JavaのIntegerクラスの使い方を完全ガイド!初心者でもわかる整数操作
No.5
Java&Spring記事人気No5
JavaのBigDecimalクラスcompareToメソッド完全ガイド!初心者でもわかる大小比較の基本
No.6
Java&Spring記事人気No6
Springの@Serviceアノテーションの使い方を徹底解説!初心者でもわかるSpring フレームワーク入門
No.7
Java&Spring記事人気No7
Javaの@SuppressWarningsアノテーションの使い方を完全ガイド!初心者でもわかる警告の抑制方法
No.8
Java&Spring記事人気No8
JavaのHttpSessionを徹底解説!初心者でもわかるセッション管理の基本