Enterprise Средний

Замените многословный шаблонный код HttpServlet декларативными классами ресурсов JAX-RS.

✕ Java EE
@WebServlet("/users")
public class UserServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req,
                         HttpServletResponse res)
            throws ServletException, IOException {
        String id = req.getParameter("id");
        res.setContentType("application/json");
        res.getWriter().write("{\"id\":\"" + id + "\"}");
    }
}
✓ Jakarta EE 8+
@Path("/users")
public class UserResource {
    @GET
    @Produces(MediaType.APPLICATION_JSON)
    public Response getUser(
            @QueryParam("id") String id) {
        return Response.ok(new User(id)).build();
    }
}
Заметили проблему в этом коде? Сообщите нам.
📐

Декларативная маршрутизация

Аннотации определяют HTTP-метод, путь и Content-Type вместо императивного if/else-диспатчинга.

🔄

Автоматическая маршализация

Возвращайте POJO напрямую; среда выполнения сериализует их в JSON или XML на основе @Produces.

🧪

Упрощённое тестирование

Классы ресурсов — это простые Java-объекты, тестируемые без Servlet-контейнера.

Старый подход
HttpServlet
Современный подход
JAX-RS-ресурс
Начиная с JDK
11
Сложность
Средний
Servlet против JAX-RS
Доступно

Широко доступно начиная с Jakarta EE 8 / Java 11

JAX-RS (Jakarta RESTful Web Services) позволяет предоставлять REST-эндпоинты с помощью простых аннотаций, таких как @GET, @Path и @Produces. Никакого ручного разбора параметров запроса или установки Content-Type в ответе — среда выполнения берёт на себя маршализацию и маршрутизацию автоматически.