Returnerer et JSON-svar fra en Servlet

1. Introduksjon

I denne raske opplæringen oppretter vi en liten webapplikasjon og utforsker hvordan du returnerer et JSON-svar fra en Servlet.

2. Maven

For vår webapplikasjon inkluderer vi javax.servlet-api og Gson avhengigheter i vår pom.xml:

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

De siste versjonene av avhengighetene finner du her: javax.servlet-api og gson.

Vi må også konfigurere en Servlet-container for å distribuere applikasjonen vår til. Denne artikkelen er et godt sted å begynne på hvordan du distribuerer en WAR på Tomcat.

3. Opprette en enhet

La oss lage en Ansatt enhet som senere vil bli returnert fra Servlet som JSON:

offentlig klasse ansatt {privat int id; privat strengnavn; privat strengavdeling; privat lang lønn; // konstruktører // standard getters og setters. }

4. Enhet til JSON

For å sende et JSON-svar fra Servlet vi trenger det først konvertere Ansatt motsetter seg JSON-representasjonen.

Det er mange java-biblioteker tilgjengelig for å konvertere et objekt til det JSON-representasjon og omvendt. Mest fremtredende av dem ville være Gson- og Jackson-bibliotekene. For å lære om forskjellene mellom GSON og Jackson, ta en titt på denne artikkelen.

Et raskt eksempel for å konvertere et objekt til JSON-representasjon med Gson vil være:

StrengmedarbeiderJsonString = ny Gson (). ToJson (ansatt);

5. Svar og innholdstype

For HTTP Servlets, den riktige prosedyren for å fylle ut svaret:

  1. Hent en utgangsstrøm fra svaret
  2. Fyll ut svaroverskriftene
  3. Skriv innhold til utgangsstrømmen
  4. Forplikt svaret

I et svar, a Innholdstype header forteller klienten hva innholdstypen til det returnerte innholdet faktisk er.

For å produsere et JSON-svar bør innholdstypen være applikasjon / json:

PrintWriter out = respons.getWriter (); respons.setContentType ("applikasjon / json"); respons.setCharacterEncoding ("UTF-8"); out.print (ansattJsonString); ut.flush ();

Svaroverskrifter må alltid være satt før svaret blir begått. Nettbeholderen ignorerer ethvert forsøk på å angi eller legge til overskrifter etter at svaret er begått.

Ringer flush ()PrintWriter forplikter svaret.

6. Eksempel på Servlet

La oss nå se et eksempel Servlet som returnerer et JSON-svar:

@WebServlet (name = "EmployeeServlet", urlPatterns = "/ employeeServlet") offentlig klasse EmployeeServlet utvider HttpServlet {private Gson gson = nye Gson (); @ Override beskyttet ugyldig doGet (HttpServletRequest forespørsel, HttpServletResponse svar) kaster IOException {ansatt ansatt = ny ansatt (1, "Karan", "IT", 5000); StrengmedarbeiderJsonString = this.gson.toJson (ansatt); PrintWriter out = respons.getWriter (); respons.setContentType ("applikasjon / json"); respons.setCharacterEncoding ("UTF-8"); out.print (ansattJsonString); ut.flush (); }}

7. Konklusjon

Denne artikkelen viste hvordan du returnerer et JSON-svar fra en Servlet. Dette er nyttig i webapplikasjoner som bruker Servlets til å implementere REST Services.

Alle kodeeksempler som vises her finner du på GitHub.


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