Quote Originariamente inviata da giannino1995 Visualizza il messaggio
Su internet trovo scritto che si può anche usare questo codice per tutti gli errori 4xx e 5xx:
codice:
<error-page>
    <location>/error45.jsp</location>
</error-page>
ma sembra funzionare da Servlet 3.0 in poi.
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.

Quote Originariamente inviata da giannino1995 Visualizza il messaggio
E' sufficiente modificare il doctipe del mio web.xml per poter usare il codice sopra?
Al momento io ho questo:
codice:
<!DOCTYPE web-app PUBLIC
        "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
        "http://java.sun.com/dtd/web-app_2_3.dtd" >
<web-app>
    <display-name>Esercitazione 1</display-name>
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/

Quote Originariamente inviata da giannino1995 Visualizza il messaggio
La mia idea è di usare javax.servlet.error.status_code, che se ho capito bene fornirebbe un intero del tipo 4xx e 5xx, in error45.jsp.
Sì, quello è un attributo in request scope. Ce ne sono altri "speciali" che vengono forniti ad una risorsa che fa da "error" page handler.

Quote Originariamente inviata da giannino1995 Visualizza il messaggio
Gli hosting free e non per java forniscono già il supporto per servlet 3.0 oppure no?
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.

Quote Originariamente inviata da giannino1995 Visualizza il messaggio
Nel caso fosse rischioso avrebbe senso e funzionerebbe una cosa di questo tipo?
codice:
<error-page>
    <!-- Risorsa non trovata. -->
<error-code>404</error-code>
    <location>/404.jsp</location>
</error-page>
<error-page>
    <location>/error45.jsp</location>
</error-page>
<error-page>
    <exception-type>java.lang.Throwable</exception-type>
    <location>/error.jsp</location>
</error-page>
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 ....

Quote Originariamente inviata da giannino1995 Visualizza il messaggio
In prativa sui server in cui non c'è il supporto per servlet 3.0 gestirei solo il 404.
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.

Quote Originariamente inviata da giannino1995 Visualizza il messaggio
Sempre online trovo anche questo errore:
codice:
<error-page>
    <exception-type>java.lang.Exception</exception-type>
    <location>/error.jsp</location>
</error-page>
ma sarebbe superfluo perché sarebbe la stessa cosa di questo, giusto?
codice:
<error-page>
    <exception-type>java.lang.Throwable</exception-type>
    <location>/error.jsp</location>
</error-page>
No, Throwable è più in "alto" (nella gerarchia) di Exception. E' solo questione di scegliere quale/i eccezioni gestire.

Quote Originariamente inviata da giannino1995 Visualizza il messaggio
Scrivere:
codice:
<%@ page errorPage="/error.jsp" %>
o scrivere:
codice:
<error-page>
    <exception-type>java.lang.Throwable</exception-type>
    <location>/error.jsp</location>
</error-page>
è la stessa cosa e quindi posso omettere java.lang.Throwable nel file web.xml?
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).