JSON válasz küldése egy szervletről

1. Bemutatkozás

Ebben a gyors bemutatóban létrehozunk egy kis webalkalmazást, és feltárjuk, hogyan adhatjuk vissza a JSON-választ a Servlet.

2. Maven

Webes alkalmazásunkhoz a következőket is beletesszük javax.servlet-api és Gson-függőségek pom.xml:

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

A függőségek legújabb verziói itt találhatók: javax.servlet-api és gson.

Be kell állítanunk egy Servlet-tárolót is az alkalmazás telepítéséhez. Ez a cikk jó kiindulópont a WAR telepítéséhez a Tomcat-on.

3. Entitás létrehozása

Hozzunk létre egy Munkavállaló entitás, amelyet később visszajuttatnak a Servlet mint JSON:

public class Alkalmazott {private int id; privát karakterlánc neve; saját vonós osztály; hosszú magánbér; // kivitelezők // szabványos szerelők és beállítók. }

4. Entitás a JSON-hoz

JSON válasz küldése a Servlet először nekünk kell konvertálja a Munkavállaló objektumot a JSON reprezentációjába.

Sok java könyvtár áll rendelkezésre egy objektum konvertálásához JSON reprezentációvá és fordítva. Közülük a legszembetűnőbbek a Gson és a Jackson könyvtárak. A GSON és Jackson közötti különbségek megismeréséhez olvassa el ezt a cikket.

Az objektum JSON-ábrázolássá alakításának gyors példája a Gson segítségével a következő lenne:

Karakterlánc alkalmazottJsonString = új Gson (). ToJson (alkalmazott);

5. Válasz és tartalom típusa

A HTTP kiszolgálók esetében a válasz feltöltésének helyes eljárása:

  1. Kimeneti adatfolyam beolvasása a válaszból
  2. Töltse ki a válasz fejléceket
  3. Írjon tartalmat a kimeneti adatfolyamba
  4. Végezze el a választ

Válaszként a Tartalom típus fejléc megmondja az ügyfélnek, hogy valójában mi a visszaadott tartalom típusa.

A JSON válasz előállításához a tartalom típusának kell lennie alkalmazás / JSON:

PrintWriter out = response.getWriter (); response.setContentType ("alkalmazás / json"); response.setCharacterEncoding ("UTF-8"); out.print (alkalmazottJsonString); ki.öblítés ();

A válaszfejléceket mindig a válasz elkötelezettsége előtt kell beállítani. A webes tároló figyelmen kívül hagyja a fejlécek beállításának vagy hozzáadásának kísérletét a válasz végrehajtása után.

Hívás öblítés () a PrintWriter elköveti a választ.

6. Példa Servletre

Most nézzünk meg egy példát Servlet amely egy JSON-választ ad vissza:

@WebServlet (név = "EmployeeServlet", urlPatterns = "/ workerServlet") nyilvános osztály EmployeeServlet kiterjeszti a HttpServlet {private Gson gson = new Gson (); @Orride protected void doGet (HttpServletRequest kérés, HttpServletResponse válasz) dobja az IOException {Employee alkalmazott = új alkalmazott (1, "Karan", "IT", 5000); Karakterlánc alkalmazottJsonString = this.gson.toJson (alkalmazott); PrintWriter out = response.getWriter (); response.setContentType ("alkalmazás / json"); response.setCharacterEncoding ("UTF-8"); out.print (alkalmazottJsonString); ki.öblítés (); }}

7. Következtetés

Ez a cikk bemutatja, hogyan lehet visszaadni egy JSON-választ egy Servletből. Ez hasznos azoknál az internetes alkalmazásoknál, amelyek a REST Services megvalósításához Servleteket használnak.

Az itt látható összes kódminta megtalálható a GitHubon.