Java のサーブレットで、JSON を返す方法を書いてみます。JSON 文字列の生成には Gson を使いました。
前提
記事内のコードを実行する場合、サーブレットの動作環境(コンテナ)が必要になります。環境がない場合は、下の記事などを参照して頂けると嬉しいです。
Servlet:動作環境構築(Jetty Maven Plugin)
手順1. サーブレットの作成
プロジェクトのルートディレクトリ ssjp
の下にサーブレット作成します。
ssjp/src/main/java/ssjp/servlet/JsonServlet.java
package ssjp.servlet; import java.io.IOException; import java.util.Collections; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.google.gson.Gson; @WebServlet("/res/json") @SuppressWarnings("serial") public class JsonServlet extends HttpServlet { private static final Gson gson = new Gson(); public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { res.setContentType("application/json"); res.setCharacterEncoding("utf-8"); res.getWriter().println(gson.toJson( Collections.singletonMap("msg", "Hello!") )); } }
@WebServlet
を付けて、/res/json
のリクエストを処理するサーブレットにしています。
手順2. 確認
コンテナ(Jetty Plugin など)を起動して、ブラウザで http://localhost:8080/res/json
を開きます。
サーブレットが実行されて、JSON文字列 {"msg":"Hello!"}
が表示されれば成功です。
コード
今回のコードは GitHub にも置いています。
GitHub - ssjp(※ Servlet Sample Jetty Plugin)