Връщане на JSON отговор от сървлет

1. Въведение

В този бърз урок ще създадем малко уеб приложение и ще проучим как да върнем JSON отговор от Servlet .

2. Мейвън

За нашето уеб приложение ще включим зависимости javax.servlet-api и Gson в нашия pom.xml :

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

Най-новите версии на зависимостите можете да намерите тук: javax.servlet-api и gson.

Също така трябва да конфигурираме контейнер на Servlet, за да разгърнем приложението ни. Тази статия е добро място да започнете как да разположите WAR на Tomcat.

3. Създаване на обект

Нека създадем обект на служител , който по-късно ще бъде върнат от сървлета като JSON:

public class Employee { private int id; private String name; private String department; private long salary; // constructors // standard getters and setters. }

4. Право на JSON

За да изпратим JSON отговор от Servlet , първо трябва да преобразуваме обекта Employee в неговото JSON представяне .

Има много налични библиотеки на Java за конвертиране на обект в там JSON представяне и обратно. Най-видни от тях биха били библиотеките Gson и Jackson. За да научите за разликите между GSON и Jackson, разгледайте тази статия.

Бърза проба за конвертиране на обект в JSON представяне с Gson би била:

String employeeJsonString = new Gson().toJson(employee);

5. Тип отговор и съдържание

За HTTP сървлети, правилната процедура за попълване на отговора:

  1. Извличане на изходен поток от отговора
  2. Попълнете отговорите
  3. Напишете съдържание в изходния поток
  4. Задайте отговора

В отговор заглавка Content-Type казва на клиента какъв всъщност е типът на върнатото съдържание.

За създаване на JSON отговор типът съдържание трябва да бъде application / json:

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

Заглавията на отговорите трябва винаги да се задават преди ангажирането на отговора. Уеб контейнерът ще игнорира всеки опит за задаване или добавяне на заглавки след ангажиране на отговора.

Извикването на flush () на PrintWriter ангажира отговора.

6. Примерен сървлет

Сега нека видим пример на Servlet, който връща JSON отговор:

@WebServlet(name = "EmployeeServlet", urlPatterns = "/employeeServlet") public class EmployeeServlet extends HttpServlet { private Gson gson = new Gson(); @Override protected void doGet( HttpServletRequest request, HttpServletResponse response) throws IOException { Employee employee = new Employee(1, "Karan", "IT", 5000); String employeeJsonString = this.gson.toJson(employee); PrintWriter out = response.getWriter(); response.setContentType("application/json"); response.setCharacterEncoding("UTF-8"); out.print(employeeJsonString); out.flush(); } }

7. Заключение

Тази статия демонстрира как да се върне JSON отговор от Servlet. Това е полезно в уеб приложения, които използват сървлети за внедряване на REST услуги.

Всички примерни кодове, показани тук, могат да бъдат намерени в GitHub.