Mengembalikan Tanggapan JSON dari Servlet

1. Perkenalan

Dalam tutorial singkat ini, kita akan membuat aplikasi web kecil dan menjelajahi cara mengembalikan respons JSON dari Servlet .

2. Maven

Untuk aplikasi web kami, kami akan menyertakan dependensi javax.servlet-api dan Gson di pom.xml kami :

 javax.servlet javax.servlet-api ${javax.servlet.version}   com.google.code.gson gson ${gson.version}  

Versi terbaru dari dependensi tersebut dapat ditemukan di sini: javax.servlet-api dan gson.

Kita juga perlu mengkonfigurasi wadah Servlet untuk menyebarkan aplikasi kita. Artikel ini adalah tempat yang baik untuk memulai tentang cara menyebarkan WAR di Tomcat.

3. Membuat Entitas

Mari buat entitas Karyawan yang nantinya akan dikembalikan dari Servlet sebagai JSON:

public class Employee { private int id; private String name; private String department; private long salary; // constructors // standard getters and setters. }

4. Entitas ke JSON

Untuk mengirim respons JSON dari Servlet, pertama-tama kita perlu mengubah objek Employee menjadi representasi JSON-nya .

Ada banyak pustaka java yang tersedia untuk mengonversi objek menjadi representasi JSON dan sebaliknya. Yang paling menonjol dari mereka adalah perpustakaan Gson dan Jackson. Untuk mempelajari tentang perbedaan antara GSON dan Jackson, lihat artikel ini.

Contoh cepat untuk mengonversi objek ke representasi JSON dengan Gson adalah:

String employeeJsonString = new Gson().toJson(employee);

5. Respon dan Jenis Isi

Untuk HTTP Servlet, prosedur yang benar untuk mengisi respons:

  1. Ambil aliran keluaran dari respons
  2. Isi header tanggapan
  3. Tulis konten ke aliran keluaran
  4. Lakukan respons

Sebagai tanggapan, header Tipe Konten memberi tahu klien apa tipe konten dari konten yang dikembalikan sebenarnya.

Untuk menghasilkan respons JSON, tipe kontennya harus application / json:

PrintWriter out = response.getWriter(); response.setContentType("application/json"); response.setCharacterEncoding("UTF-8"); out.print(employeeJsonString); out.flush();

Header respons harus selalu disetel sebelum respons dilakukan. Penampung web akan mengabaikan segala upaya untuk menyetel atau menambahkan header setelah respons dilakukan.

Memanggil flush () pada PrintWriter melakukan respons.

6. Contoh Servlet

Sekarang mari kita lihat contoh Servlet yang mengembalikan respons JSON:

@WebServlet(name = "EmployeeServlet", urlPatterns = "/employeeServlet") public class EmployeeServlet extends HttpServlet { private Gson gson = new Gson(); @Override protected void doGet( HttpServletRequest request, HttpServletResponse response) throws IOException { Employee employee = new Employee(1, "Karan", "IT", 5000); String employeeJsonString = this.gson.toJson(employee); PrintWriter out = response.getWriter(); response.setContentType("application/json"); response.setCharacterEncoding("UTF-8"); out.print(employeeJsonString); out.flush(); } }

7. Kesimpulan

Artikel ini menunjukkan cara mengembalikan respons JSON dari Servlet. Ini berguna dalam aplikasi web yang menggunakan Servlet untuk mengimplementasikan Layanan REST.

Semua contoh kode yang ditampilkan di sini dapat ditemukan di GitHub.