カテゴリ: Jakarta EE 更新日: 2025/12/08

Jakarta サーブレットでJSONを返す方法を徹底解説!初心者でもわかるレスポンス処理

サーブレットでJSONを返す方法
サーブレットでJSONを返す方法

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

生徒

「先生、サーブレットからHTMLだけじゃなくてJSONを返すこともできますか?」

先生

「もちろんできるよ。最近のWebアプリ開発やAjax通信、API開発ではJSONを返すことがとても多いんだ。」

生徒

「どうやってレスポンスをJSONにするんですか?特別な設定が必要ですか?」

先生

「サーブレットのレスポンスにコンテンツタイプとしてapplication/jsonを設定するんだよ。実際のコードを見て理解していこう。」

1. サーブレットでJSONを返す基本

1. サーブレットでJSONを返す基本
1. サーブレットでJSONを返す基本

Jakarta サーブレットでJSONを返すには、HttpServletResponsesetContentTypeメソッドを使ってapplication/json; charset=UTF-8を指定します。その後、PrintWriterServletOutputStreamを使ってJSON文字列を出力します。

特に日本語を含むデータを返す場合は文字コードUTF-8を必ず指定して、文字化けを防ぐのがポイントです。

2. 基本的なJSONレスポンスの例

2. 基本的なJSONレスポンスの例
2. 基本的なJSONレスポンスの例

まずは、サーブレットから単純なJSONを返すコード例を見てみましょう。


@WebServlet("/json")
public class JsonServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) 
            throws IOException {
        response.setContentType("application/json; charset=UTF-8");
        PrintWriter out = response.getWriter();
        out.print("{\"message\":\"こんにちは、Jakarta Servlet!\"}");
        out.flush();
    }
}

このコードでは、ブラウザやクライアントが受け取ったレスポンスをJSONとして解釈できるようになります。

3. 複数データを含むJSONの返し方

3. 複数データを含むJSONの返し方
3. 複数データを含むJSONの返し方

実際の開発では、メッセージだけでなく複数の情報を返すことが一般的です。その場合も文字列としてJSONを組み立てれば簡単に返せます。


@WebServlet("/user")
public class UserServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) 
            throws IOException {
        response.setContentType("application/json; charset=UTF-8");
        PrintWriter out = response.getWriter();
        String json = "{"
                    + "\"id\":1,"
                    + "\"name\":\"山田太郎\","
                    + "\"email\":\"taro@example.com\""
                    + "}";
        out.print(json);
        out.flush();
    }
}

このように、オブジェクト形式のJSONを返すことで、クライアント側でデータを扱いやすくなります。

4. 配列データを返す方法

4. 配列データを返す方法
4. 配列データを返す方法

ユーザー一覧や商品リストなどの複数データを返す場合は、JSON配列を使います。クライアント側のJavaScriptからも扱いやすい形式になります。


@WebServlet("/users")
public class UsersServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) 
            throws IOException {
        response.setContentType("application/json; charset=UTF-8");
        PrintWriter out = response.getWriter();
        String json = "["
                    + "{\"id\":1,\"name\":\"山田太郎\"},"
                    + "{\"id\":2,\"name\":\"佐藤花子\"},"
                    + "{\"id\":3,\"name\":\"鈴木一郎\"}"
                    + "]";
        out.print(json);
        out.flush();
    }
}

このようにサーブレットでJSON配列を返すと、JavaScriptのfetchXMLHttpRequestで簡単にパースできます。

5. JSONを返すときの注意点

5. JSONを返すときの注意点
5. JSONを返すときの注意点

サーブレットでJSONを返す際には、次のポイントに注意してください。

  • 必ずapplication/json; charset=UTF-8を指定すること
  • 文字化け防止のためUTF-8を利用すること
  • レスポンスの出力はout.flush()で確実に送信すること
  • 複雑なJSONを扱う場合は、ライブラリ(JacksonやGson)を使うと便利

特にAPI開発やAjax通信では、クライアントが正しくJSONを受け取れるようにコンテンツタイプの設定が重要です。

6. 実際の活用シーン

6. 実際の活用シーン
6. 実際の活用シーン

Jakarta サーブレットでJSONを返す方法は、さまざまな場面で活用されます。

  • ユーザー認証結果をJSONで返すログイン処理
  • 商品一覧をJSON形式で返すECサイトのAPI
  • リアルタイムで情報を取得するチャットアプリ
  • 管理画面のデータをAjaxで非同期に更新する機能

これらの場面では、JSONレスポンスを適切に返すことがスムーズなユーザー体験につながります。

まとめ

まとめ
まとめ

Jakarta サーブレットでJSONレスポンスを扱う重要ポイント

Jakarta サーブレットでJSONを返す方法を総合的に振り返ると、Webアプリケーション開発においてサーブレットが非常に柔軟にデータを返せることが理解できます。特に、Ajax通信やAPIの実装では、application/jsonを正しく設定し、UTF-8で文字化けなく返すことが重要です。また、単純なメッセージだけでなく、複数項目のデータや配列を含むJSONを返すことで、クライアント側のJavaScriptが扱いやすい形でデータを提供できます。

さらに、複雑なデータ構造を扱う場合は、GsonやJacksonといったライブラリの利用が開発効率を高め、可読性の高いJSONレスポンスを生成する助けとなります。サーブレットから返すレスポンスは、Javaの標準機能だけでも十分に実現できますが、プロジェクト規模やデータ量が増えるほど、ライブラリを活用したコード管理が効果的になります。

実際の開発現場では、ユーザー一覧、商品リスト、ログイン結果、非同期通信の更新など多くのケースでJSONが役立ちます。特にECサイトや管理画面、チャットアプリなど、動的に情報をやりとりする仕組みでは、正しいJSONレスポンスの返し方が必須の技術です。今回学んだサーブレットの基本設定、配列や複数データの返却方法を組み合わせることで、より実践的なAPI設計に応用できます。

サンプルコードで学ぶJSONレスポンスの総まとめ

以下は、学んだ内容を統合したサンプルコードです。複数のユーザー情報をJSON配列で返しつつ、レスポンス設定も明確に行っています。


@WebServlet("/summary-users")
public class SummaryUsersServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws IOException {
        response.setContentType("application/json; charset=UTF-8");

        String json = "["
                    + "{\"id\":101,\"name\":\"高橋健太\",\"role\":\"admin\"},"
                    + "{\"id\":102,\"name\":\"中村美咲\",\"role\":\"user\"},"
                    + "{\"id\":103,\"name\":\"田中優子\",\"role\":\"guest\"}"
                    + "]";

        PrintWriter out = response.getWriter();
        out.print(json);
        out.flush();
    }
}

このように、サーブレットでJSON形式のレスポンスを返す処理は基本を押さえれば非常に応用が効き、Web開発の幅を大きく広げてくれます。特に、レスポンスヘッダーの設定・UTF-8指定・JSON形式の構築は必ず押さえておきたい重要ポイントです。

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

生徒

「今日学んだサーブレットでのJSONレスポンス処理って、Web開発のどんな場面で使えますか?」

先生

「例えば、ユーザー情報を一覧で返したり、ログイン処理の結果をJSONで返す時に使うね。ECサイトの在庫情報やチャットのメッセージ更新にもよく使われているよ。」

生徒

「なるほど!JSON配列を返すことでJavaScript側でも扱いやすくなるんですね。」

先生

「その通り。今回のサンプルみたいにUTF-8で文字化けしないように設定して、整ったJSONを返せば、クライアント側の処理がグッと楽になるよ。」

生徒

「これでAjax通信やAPI開発にも応用できますね!次はライブラリを使った方法も学んでみたいです。」

先生

「いいね。GsonやJacksonを使うと、もっと複雑なJSONでも簡単に扱えるようになるから、ぜひ挑戦してみよう。」

カテゴリの一覧へ
新着記事
New1
Play Framework
Play Frameworkでフォームデータをコントローラで扱う方法を完全解説|Java初心者向けコントローラ入門
New2
Jakarta EE
Jakarta EE JSPにおけるJSTLとスクリプトレットの違いと使い分けを初心者向けに徹底解説
New3
Play Framework
Play Frameworkでクエリパラメータをコントローラで処理する方法を完全解説|Java初心者向け入門
New4
Play Framework
Play FrameworkとSpring Bootの違いを徹底比較!初心者でもわかるJavaフレームワーク入門
人気記事
No.1
Java&Spring記事人気No1
Jakarta EE
Jakarta EEのリリースサイクルとバージョンの進化をやさしく解説!
No.2
Java&Spring記事人気No2
Jakarta EE
Jakarta サーブレットのHttpServletRequestを徹底解説!初心者でもわかる基本操作と使い方
No.3
Java&Spring記事人気No3
Jakarta EE
Jakarta EEとSpringの比較|どちらを選ぶべきか?初心者向けに徹底解説!
No.4
Java&Spring記事人気No4
Jakarta EE
Jakarta EEとJava EEアプリの互換性を完全解説!移行で困らないための基礎知識
No.5
Java&Spring記事人気No5
Jakarta EE
Jakarta EE JSPでJSTL SQLタグを使った簡易データベースアクセスをやさしく解説
No.6
Java&Spring記事人気No6
Jakarta EE
Jakarta EE JSPにおけるJSTL国際化タグ(fmt:message)の使い方を初心者向けに完全解説
No.7
Java&Spring記事人気No7
Jakarta EE
Jakarta EE JSPでJSTLを使ったJSONやREST APIレスポンス処理を初心者向けにやさしく解説
No.8
Java&Spring記事人気No8
Play Framework
Play Frameworkでリクエストデータの受け取り方を完全解説|Java初心者向けコントローラ入門