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:
- Kimeneti adatfolyam beolvasása a válaszból
- Töltse ki a válasz fejléceket
- Írjon tartalmat a kimeneti adatfolyamba
- 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.