Servlet kontra JAX-RS
Zastąp rozwlekły boilerplate HttpServlet deklaratywnymi klasami zasobów JAX-RS.
Porównanie kodu
✕ 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();
}
}
Widzisz problem z tym kodem? Daj nam znać.
Dlaczego nowoczesne podejście wygrywa
Deklaratywny routing
Adnotacje definiują metodę HTTP, ścieżkę i typ zawartości zamiast imperatywnego dispatch if/else.
Automatyczny marshalling
Zwracaj POJO bezpośrednio; środowisko uruchomieniowe serializuje je do JSON lub XML na podstawie @Produces.
Łatwiejsze testowanie
Klasy zasobów to zwykłe obiekty Java, testowalne bez kontenera servlet.
Stare podejście
HttpServlet
Nowoczesne podejście
Zasób JAX-RS
Od JDK
11
Poziom trudności
Średniozaawansowany
Wsparcie JDK
Servlet kontra JAX-RS
Dostępne
Szeroko dostępne od Jakarta EE 8 / Java 11
Jak to działa
JAX-RS (Jakarta RESTful Web Services) pozwala na udostępnianie endpointów REST za pomocą prostych adnotacji jak @GET, @Path i @Produces. Koniec z ręcznym parsowaniem parametrów żądania i ustawianiem typów zawartości odpowiedzi — środowisko uruchomieniowe automatycznie obsługuje marshalling i routing.
Powiązana dokumentacja
Dowód