Servlet 4.0/5.0 nach 3.1

  • Beitrags-Autor:
  • Beitrags-Kategorie:JavaEE

Unterschied 4.0 zu 5.0 ist neuer Paketname; aus javax wurde jakarta

Methoden von ServletContextListener haben Standardimplementierung (leere Methoden entfallen damit)

GenericFilter bringt Standardimplementierung für Filter-Methoden und ist von HttpFilter abgeleitet (Cast auf Http-Klassen entfällt)

Zeichencodierung in web.xml mit <request-character-encoding> und <response-character-encoding> einstellbar

Zeichenkodierung in ServletContextListener mit setRequestCharacterEncoding() und setResponseCharacterEncoding() von ServletContext einstellbar

Unterstützung für HTTP/2 gekommen (vor Einsatz den Anwendungsfall/Stand genau hinterfragen)

neue Schnittstelle HttpServletMapping mit getMatchValue() vereinfacht Auswertung vom Aufruf (siehe unten)

ServletContext hat Methoden getSessionTimeout() und setSessionTimeout() bekommen (damit kann Timeout in ServletContextListener gesetzt werden; siehe unten)

ServletContext hat mit addJspFile(String servletName, String jspFilePath) eine Methode zum registrieren von JSPs bekommen

isTrailerFieldsReady() und getTrailerFields() von HttpServletRequest vereinfachen Zugriff auf Trailer; ein Servlet kann mit setTrailerFields() von HttpServletResponse einfach Trailer setzen (Unterstützung Browser und JavaScript/fetch nicht gegeben)

hier gelesen

@WebServlet({"/servlet/*", "*.ext"})
public class Servlet2 extends HttpServlet {protected void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
        res.setContentType("text/plain");
        try ( PrintWriter out = res.getWriter()) {
            HttpServletMapping match = req.getHttpServletMapping();
            out.println("getMatchValue():\t" + match.getMatchValue());
            out.println("getPattern():\t\t" + match.getPattern());
            out.println("getServletName():\t" + match.getServletName());
            out.println("getMappingMatch():\t" + match.getMappingMatch());
        }
    }
}
@WebListener
public class ServletContextListener2 implements ServletContextListener {public void contextInitialized(ServletContextEvent sce) {
        sce.getServletContext().setSessionTimeout(30));
    }
}