Lezione 6: JSP

Gestione degli errori

Quando si verifica un errore nell'esecuzione di una jsp (oovero nell'esecuzione della servlet equivalente), il container inoltra il controllo ad una specifica pagina JSP alla quale viene fornito l'accesso all'oggetto implicito exception.

Ogni pagina jsp definisce qual è la pagina di errore a cui inoltrare il controllo in caso di errore la direttiva page:

<%@ page errorPage="/jsp/error.jsp" isErrorPage="false" %>

Mentre un file JSP che DEVE gestire errori (error.jsp), conterrè la seguente direttiva:

<%@ page isErrorPage="true" %>

Esempio

Supponiamo di voler scrivere una pagina JSP che produce il risultato della divisione di due interi dati come parametri d'input.

Se non si vuole gestire direttamente il caso di divisione per 0, ma si vuole sfruttare il meccanismo dell'eccezione, allora è necessario creare anche una pagina JSP per la gestione dell'eccezioni:

File div.jsp:
<%--div.jsp Esegue una divisione tra due numeri dati in input --%>
<%@ page errorPage="error.jsp" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
	  "http://www.w3.org/TR/REC-html40/loose.dtd">
<html>
  <head>
    <title>Esempio di jsp con gestione errori</title>
  </head>
  <body>
  <% String s;
     int x = ((s=request.getParameter("x"))==null) ? 10 : Integer.parseInt(s);
     int y = ((s=request.getParameter("y"))==null) ? 10 : Integer.parseInt(s);
   %>
    <h1>Divisione intera</h1>
    <pre><%= x %>/<%= y %> = <%= x/y %></pre>
  </body>
</html>

File err.jsp:
<%@ page isErrorPage="true" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"
                      "http://www.w3.org/TR/REC-html40/loose.dtd">
<html>
  <head>
    <title>Errore!</title>
  </head>
  <body>
    <h2>Pagina per il trattamento dell'errore:</h2>
    <h3>È stata generata la seguente eccezione:</h3>
    <pre> <%= exception %> </pre>
    <hr>
    L'oggetto <code>exception</code> ha i seguenti metodi:
    <h4>getMessage()</h4>
    <%= exception.getMessage() %>
    <h4>printStackTrace(out)</h4>
    <pre>
    <% exception.printStackTrace(new java.io.PrintWriter(out)); %>
    </pre>
  </body>
</html>

Valida il documento
Copyright © 2002 by Roberto Posenato