Servlet versus JAX-RS
Ersetze ausführlichen HttpServlet-Boilerplate durch deklarative JAX-RS-Ressourcenklassen.
Code-Vergleich
✕ 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();
}
}
Problem mit diesem Code entdeckt? Sag uns Bescheid.
Warum der moderne Weg gewinnt
Deklaratives Routing
Annotationen definieren HTTP-Methode, Pfad und Content-Type statt imperativem if/else-Dispatch.
Automatisches Marshalling
POJOs direkt zurückgeben; die Laufzeit serialisiert sie basierend auf @Produces nach JSON oder XML.
Einfacheres Testen
Ressourcenklassen sind einfache Java-Objekte, testbar ohne Servlet-Container.
Alter Ansatz
HttpServlet
Moderner Ansatz
JAX-RS-Ressource
Seit JDK
11
Schwierigkeitsgrad
Fortgeschritten
JDK-Unterstützung
Servlet versus JAX-RS
Verfügbar
Weitgehend verfügbar seit Jakarta EE 8 / Java 11
Wie es funktioniert
JAX-RS (Jakarta RESTful Web Services) ermöglicht das Bereitstellen von REST-Endpunkten mit einfachen Annotationen wie @GET, @Path und @Produces. Kein manuelles Parsen von Request-Parametern oder Setzen von Content-Types in der Response mehr — die Laufzeitumgebung übernimmt Marshalling und Routing automatisch.
Zugehörige Dokumentation