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 è 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 è 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?