Se questo:
codice:
<%@ page errorPage="/error.jsp" %>
gestisce gli errori nella pagina mentre questo nella webapp:
codice:
<error-page>
    <location>/WEB-INF/error.jsp</location>
</error-page>
è ragionevole usare solo il secondo e omettere il primo, giusto?
Come faccio a distinguere in error.jsp:
1) Gli errori http;
2) Gli altri errori.
Se uso la variabile code potrei scrivere una cosa di questo tipo:
codice:
<%
    // Si cattura la variabile 'code' dall'URL.
    String errore = null;
    boolean httpError = true;
    try{
        errore = request.getParameterValues("code")[0];
    }catch(Exception e){
        httpError = false;
        errore = "";
    }
%>
<% if(httpError) {%>
<h4>Errore <%= errore %></h4>
<div>
    <img src="/immagini/http-error.jpg" alt="Errore <%= errore %>" class="imgResponsive">
    <p>Si &egrave; verificato il seguente errore http: <b><%= errore %></b></p>
    <p>Puoi ricollegarti alla home del sito <a href="/index.jsp">premendo qui</a>.</p>
</div>
<% } else {%>
<h4>Errore</h4>
<div>
    <img src="/immagini/webapp-error.jpg" alt="Errore" class="imgResponsive">
    <p>Siamo spiacenti, si &egrave; verificato un errore durante l'esecuzione:</p>
    <p>
        <%@ page isErrorPage="true"%>
        <%@ page import="java.io.StringWriter" %>
        <%@ page import="java.io.PrintWriter" %>
        <i>Messaggio:</i>
    </p>
    <p><strong class="rosso-porpora"><%=exception.getMessage()%></strong></p>
    <p><i>StackTrace:</i></p>
    <p class="grigio-40">
        <%
            StackTraceElement[] elements = Thread.currentThread().getStackTrace();
            for (int i = 0; i < elements.length; i++) {
                StackTraceElement s = elements[i];
                out.println(s + ")<br>");
            }
        %>
    </p>
    <p>Puoi ricollegarti alla home del sito <a href="/index.jsp">premendo qui</a>.</p>
</div>
<% } %>
Ma il file web.xml diventerebbe troppo prolisso e non mi piace molto.
Mi daresti una mano a preparare questo file error.jsp?