カテゴリ: 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()のテストが可能です。

関連記事:
カテゴリの一覧へ
新着記事
Javaのラムダ式で戻り値とvoidの使い方を解説!returnの書き方も完全理解
Javaのメソッド参照とコンストラクタ参照の使い方を完全ガイド!初心者向けに::とClass::newを解説
Javaのラムダ式の書き方を徹底解説!アロー演算子->の基本と使い方
Thymeleafのth:eachの使い方!ループ回数やindexなどの繰り返し処理を学ぼう
人気記事
No.1
Java&Spring記事人気No1
Spring BootとJavaの互換性一覧!3.5/3.4/3.3はJava 21・17に対応してる?
No.2
Java&Spring記事人気No2
Spring Boot JPA入門:エンティティ/リポジトリの基本と作り方
No.3
Java&Spring記事人気No3
Javaの@Validアノテーションを徹底解説!初心者でもわかる入力値検証の基本
No.4
Java&Spring記事人気No4
Springの@Repositoryアノテーションの使い方を徹底解説!初心者でもわかるSpringフレームワークのデータアクセス