Vrátenie odpovede JSON z servletu

1. Úvod

V tomto rýchlom výučbe vytvoríme malú webovú aplikáciu a preskúmame, ako vrátiť odpoveď JSON z a Servlet.

2. Maven

Pre našu webovú aplikáciu uvedieme javax.servlet-api a závislosti Gson v našom pom.xml:

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

Najnovšie verzie závislostí nájdete tu: javax.servlet-api a gson.

Potrebujeme tiež nakonfigurovať kontajner Servlet, aby sme mohli nasadiť našu aplikáciu. Tento článok je dobrým miestom na úvod, ako nasadiť WAR na Tomcat.

3. Vytvorenie entity

Vytvorme Zamestnanec subjekt, ktorý bude neskôr vrátený z Servlet ako JSON:

public class Employee {private int id; súkromné ​​meno reťazca; súkromné ​​strunové oddelenie; súkromný dlhý plat; // konštruktory // štandardné getre a setre. }

4. Entita pre JSON

Na odoslanie odpovede JSON z Servlet najskôr potrebujeme previesť Zamestnanec objekt do svojej reprezentácie JSON.

Existuje veľa java knižníc, ktoré umožňujú prevádzať objekt na reprezentáciu JSON a naopak. Najvýznamnejšie z nich by boli knižnice Gson a Jackson. Ak sa chcete dozvedieť viac o rozdieloch medzi GSON a Jacksonom, pozrite si tento článok.

Rýchla vzorka na prevod objektu na reprezentáciu JSON s Gson by bola:

Reťazec employeeJsonString = nový Gson (). ToJson (zamestnanec);

5. Odozva a typ obsahu

V prípade servletov HTTP je správny postup na vyplnenie odpovede:

  1. Načítajte výstupný prúd z odpovede
  2. Vyplňte hlavičky odpovedí
  3. Zapisujte obsah do výstupného toku
  4. Zaviažte odpoveď

V odpovedi, a Druh obsahu Hlavička informuje klienta o tom, aký je typ obsahu vráteného obsahu.

Na vytvorenie odpovede JSON by mal byť typ obsahu application / json:

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

Hlavičky odpovedí musia byť vždy nastavené pred potvrdením odpovede. Po potvrdení odpovede bude webový kontajner ignorovať všetky pokusy o nastavenie alebo pridanie hlavičiek.

Telefonovanie spláchnuť() na PrintWriter zaviaže odpoveď.

6. Príklad servletu

Teraz sa pozrime na príklad Servlet ktorý vráti odpoveď JSON:

@WebServlet (name = "EmployeeServlet", urlPatterns = "/ employeeServlet") verejná trieda EmployeeServlet rozširuje HttpServlet {private Gson gson = new Gson (); @Override protected void doGet (požiadavka HttpServletRequest, odpoveď HttpServletResponse) hodí IOException {zamestnanec zamestnanec = nový zamestnanec (1, "Karan", "IT", 5000); Reťazec employeeJsonString = this.gson.toJson (zamestnanec); PrintWriter out = response.getWriter (); response.setContentType ("application / json"); response.setCharacterEncoding ("UTF-8"); out.print (employeeJsonString); out.flush (); }}

7. Záver

Tento článok predstavil, ako vrátiť odpoveď JSON zo servletu. To je užitočné vo webových aplikáciách, ktoré používajú servlety na implementáciu služieb REST.

Všetky tu zobrazené ukážky kódu nájdete na GitHub.


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