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.
Diagramm zu Jakarta Servlet

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?