Spezifikation / Framework-APIWeb6.1
Jakarta Servlet
Serverseitige HTTP-Verarbeitung mit Request, Response, Filter, Listener und Session.
Einordnung
Spezifikation / Framework-API
Enterprise-Rolle
Servlet ist die Basis vieler Java-Webframeworks. Auch wenn du REST oder Faces nutzt, läuft darunter oft Servlet-Infrastruktur.
Fachliches Verständnis
Servlet ist die Basis vieler Java-Webframeworks. Auch wenn du REST oder Faces nutzt, läuft darunter oft Servlet-Infrastruktur. In der Praxis ist wichtig, die Spezifikation nicht mit der konkreten Runtime zu verwechseln. Der Standard beschreibt die portablen APIs, die Implementierung entscheidet über Konfiguration, Performance, Betrieb und Support.
Kernkonzepte
- HttpServletRequest/Response als Low-Level-Zugriff.
- Filter Chain für Security, Logging, Encoding und Cross-Cutting Concerns.
- Listener für Lifecycle-Ereignisse.
- Session Management für zustandsbehaftete Webflows.
Typische Einsatzfälle
- Legacy Servlets verstehen und schrittweise durch REST/Faces/MVC ersetzen.
- Filter für Korrelation, Audit oder Security Header bauen.
Technisches Beispiel
java
@WebFilter("/api/*")
public class CorrelationIdFilter implements Filter {
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
HttpServletRequest http = (HttpServletRequest) request;
String correlationId = Optional.ofNullable(http.getHeader("X-Correlation-Id"))
.orElse(UUID.randomUUID().toString());
try {
MDC.put("correlationId", correlationId);
chain.doFilter(request, response);
} finally {
MDC.remove("correlationId");
}
}
}
Architekturregel: Jakarta APIs gehören an Systemgrenzen und Infrastrukturpunkte. Fachentscheidungen bleiben in Application Services und Domain-Modellen testbar und möglichst unabhängig vom Container.
Enterprise-Fallen
- Fachlogik direkt im Servlet.
- Thread-unsichere Instanzvariablen im Servlet.
- Session als versteckte Datenbank nutzen.
Legacy-Modernisierung
Servlets aus alten Anwendungen werden zu dünnen Adapterklassen oder REST-Ressourcen; Filter bleiben oft als technische Querschnittsschicht erhalten.
Vertiefung: Review-Fragen für Senior-Entwickler
- Welche Spezifikation ist hier wirklich nötig?
- Welche Runtime-Funktion wird genutzt und ist sie portabel?
- Wo liegt die Transaktionsgrenze?
- Sind API-Verträge, DTOs und Domain-Modelle getrennt?
- Ist der Code ohne Application Server testbar?