Sì, è vero, è una nuova caratteristica introdotta nelle Servlet Specification 3.0. I tag <error-code> e <exception-type> sono diventati opzionali, puoi avere solo <location>.
Se però hai solo il location quel <error-page> diventa in sostanza un "cattura tutto", quindi error-code E eccezioni. E a quel punto dovresti distinguere tu nella pagina se si arriva lì per un error code o una eccezione.
Stai dichiarando le specifiche 2.3 che sono parecchio vecchie. Fino al 2.3 la struttura del web.xml era descritta con un DTD. Dalla versione 2.4 invece si usano gli schemi XML.
Vedi ad esempio qui dove sono riportate le varie versioni:
https://www.mkyong.com/web-developme...ptor-examples/
Sì, quello è un attributo in request scope. Ce ne sono altri "speciali" che vengono forniti ad una risorsa che fa da "error" page handler.
Dipende dal servlet-container/application-server. Tomcat 7.0.x supporta Servlet 3.0. Vedi:
https://tomcat.apache.org/whichversion.html
Per altri basta documentarsi.
In questo momento non sono sicuro (dovrei rileggere le specifiche) se è lecito mettere un <error-page> "cattura tutto" insieme ad uno più specifico. Cioè, il mio dubbio ora è se quello più specifico (il 404) ha precedenza su quello generico.
Credo di sì .... al limite basta provare ....
Beh, scegli prima su cosa vuoi deployare. Tieni presente che le specifiche Servlet 3.0 sono del 2009. Quindi a meno di usare servizi/server moooooolto vecchi, le Servlet 3.x o superiori le hai di certo.
No, Throwable è più in "alto" (nella gerarchia) di Exception. E' solo questione di scegliere quale/i eccezioni gestire.
No
<%@ page errorPage="/error.jsp" %>
vuol dire che quella /error.jsp vale per quella JSP in cui hai la dichiarazione. Mentre il <error-page> con <exception-type> vale per le eccezioni in generale nella web application.
P.S. le pagine di errore si mettono solitamente sotto WEB-INF, perché altrimenti sarebbero, tecnicamente, accessibili direttamente dal client. Che non sarebbe molto bello (a patto che un utente sappia quali siano, chiaramente).