Returnering af et JSON-svar fra en Servlet

1. Introduktion

I denne hurtige vejledning opretter vi en lille webapplikation og undersøger, hvordan du returnerer et JSON-svar fra en Servlet.

2. Maven

For vores webapplikation inkluderer vi javax.servlet-api og Gson afhængigheder i vores pom.xml:

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

De seneste versioner af afhængighederne kan findes her: javax.servlet-api og gson.

Vi er også nødt til at konfigurere en Servlet-container til at implementere vores applikation til. Denne artikel er et godt sted at starte med, hvordan man implementerer en WAR på Tomcat.

3. Oprettelse af en enhed

Lad os oprette en Medarbejder enhed, som senere vil blive returneret fra Servlet som JSON:

offentlig klassemedarbejder {privat int id; privat strengnavn; privat streng afdeling; privat lang løn; // konstruktører // standard getters og settere. }

4. Enhed til JSON

At sende et JSON-svar fra Servlet vi skal først konvertere Medarbejder modsætter sig dets JSON-repræsentation.

Der er mange java-biblioteker til rådighed til at konvertere et objekt til dets JSON-repræsentation og omvendt. Mest fremtrædende af dem ville være bibliotekerne Gson og Jackson. For at lære om forskellene mellem GSON og Jackson, se på denne artikel.

En hurtig prøve til konvertering af et objekt til JSON-repræsentation med Gson ville være:

StrengmedarbejderJsonString = ny Gson (). ToJson (medarbejder);

5. Svar og indholdstype

For HTTP-servlets er den korrekte procedure til udfyldning af svaret:

  1. Hent en outputstrøm fra svaret
  2. Udfyld svaroverskrifterne
  3. Skriv indhold til outputstrømmen
  4. Forpligt svaret

I et svar, a Indholdstype header fortæller klienten, hvad indholdet af det returnerede indhold faktisk er.

For at producere et JSON-svar skal indholdstypen være ansøgning / json:

PrintWriter out = respons.getWriter (); respons.setContentType ("applikation / json"); respons.setCharacterEncoding ("UTF-8"); out.print (medarbejderJsonString); out.flush ();

Svaroverskrifter skal altid indstilles, inden svaret begås. Webcontaineren ignorerer ethvert forsøg på at indstille eller tilføje overskrifter, når svaret er begået.

Ringer Flush() på den PrintWriter forpligter svaret.

6. Eksempel på Servlet

Lad os nu se et eksempel Servlet der returnerer et JSON-svar:

@WebServlet (name = "EmployeeServlet", urlPatterns = "/ employeeServlet") offentlig klasse EmployeeServlet udvider HttpServlet {privat Gson gson = ny Gson (); @ Override beskyttet ugyldigt doGet (HttpServletRequest anmodning, HttpServletResponse svar) kaster IOException {Medarbejder medarbejder = ny medarbejder (1, "Karan", "IT", 5000); String medarbejderJsonString = this.gson.toJson (medarbejder); PrintWriter out = respons.getWriter (); respons.setContentType ("applikation / json"); respons.setCharacterEncoding ("UTF-8"); out.print (medarbejderJsonString); out.flush (); }}

7. Konklusion

Denne artikel viste, hvordan man returnerer et JSON-svar fra en Servlet. Dette er nyttigt i webapplikationer, der bruger Servlets til at implementere REST Services.

Alle kodeeksempler vist her kan findes på GitHub.


$config[zx-auto] not found$config[zx-overlay] not found