Vraćanje JSON odgovora iz servleta

1. Uvod

U ovom brzom uputstvu stvorit ćemo malu web aplikaciju i istražiti kako vratiti JSON odgovor iz a Servlet.

2. Maven

Za našu web aplikaciju uključit ćemo javax.servlet-api i Gson ovisnosti u našoj pom.xml:

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

Najnovije verzije ovisnosti možete pronaći ovdje: javax.servlet-api i gson.

Također moramo konfigurirati spremnik Servlet za postavljanje naše aplikacije. Ovaj je članak dobro mjesto za početak o tome kako postaviti WAR na Tomcat.

3. Stvaranje entiteta

Stvorimo Zaposlenik entitet koji će kasnije biti vraćen iz Servlet kao JSON:

zaposlenik u javnoj klasi {private int id; privatni naziv niza; privatni gudački odjel; privatna duga plaća; // konstruktori // standardni getteri i postavljači. }

4. Subjekt u JSON-u

Da biste poslali JSON odgovor s Servlet prvo trebamo pretvoriti Zaposlenik objekt u njegov JSON prikaz.

Dostupne su mnoge Java knjižnice za pretvaranje objekta u JSON predstavljanje i obrnuto. Najistaknutije od njih bile bi knjižnice Gson i Jackson. Da biste saznali o razlikama između GSON-a i Jacksona, pogledajte ovaj članak.

Brzi uzorak za pretvaranje objekta u JSON predstavljanje s Gsonom bio bi:

Niz zaposlenikJsonString = novi Gson (). ToJson (zaposlenik);

5. Vrsta odgovora i sadržaj

Za HTTP servlete, ispravan postupak za popunjavanje odgovora:

  1. Dohvatite izlazni tok iz odgovora
  2. Ispunite zaglavlja odgovora
  3. Napišite sadržaj u izlazni tok
  4. Predajte odgovor

Kao odgovor, a Vrsta sadržaja zaglavlje govori klijentu kakva je zapravo vrsta sadržaja vraćenog sadržaja.

Za stvaranje JSON odgovora vrsta sadržaja treba biti application / json:

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

Zaglavlja odgovora moraju se uvijek postaviti prije nego što se odgovor preda. Web spremnik zanemarit će svaki pokušaj postavljanja ili dodavanja zaglavlja nakon što je odgovor uvršćen.

Pozivanje isprati () na PrintWriter počinio odgovor.

6. Primjer servleta

Pogledajmo sada primjer Servlet koji vraća JSON odgovor:

@WebServlet (name = "EmployeeServlet", urlPatterns = "/ workerServlet") javna klasa EmployeeServlet proširuje HttpServlet {private Gson gson = new Gson (); @Override zaštićen void doGet (zahtjev HttpServletRequest, odgovor HttpServletResponse) baca IOException {zaposlenik zaposlenik = novi zaposlenik (1, "Karan", "IT", 5000); Niz zaposlenikJsonString = this.gson.toJson (zaposlenik); PrintWriter out = response.getWriter (); response.setContentType ("application / json"); response.setCharacterEncoding ("UTF-8"); out.print (zaposlenikJsonString); out.flush (); }}

7. Zaključak

Ovaj je članak pokazao kako vratiti JSON odgovor iz Servleta. Ovo je korisno u web aplikacijama koje koriste Servlete za implementaciju REST usluga.

Svi ovdje prikazani uzorci koda mogu se naći na GitHubu.