29 November 2009

Meng-Customize Error Page pada Web Aplikasi Java

Pernahkah kita melihat halaman web seperti ini:

Atau yang seperti ini:

Halaman seperti ini adalah halaman eror standar yang di produksi oleh Apache Tomcat ketika aplikasi web kita mengalami error. Baik itu eror yang terjadi karena kesalahan aplikasi ataupun kesalahan user ketika melakukan sebuah request dari browser.
Kita bisa merubah halaman ini menjadi halaman yang kita buat sendiri namun berfungsi sama dengan halaman diatas. Kelebihannya adalah kita bisa mendesign halaman sesuai dengan keinginan kita. Fungsi lain juga kita bisa menyembunyikan point-point error yang terjadi di program kita sehingga user tidak mengetahui apa yang sebenarnya terjadi dibelakang program kita.
Sebelumnya, kita akan membagi dulu jenis error yang mungkin dapat terjadi pada web aplikasi kita. Pertama error karena kesalahan user seperti mengakses file yang tidak ada (404 – File Not Found), dan kedua kesalahan akibat dari error logika dalam web aplikasi kita.
Pada percobaan kali ini kita akan mencoba meng-customize halaman error seperti yang terjadi diatas.
1.      Membuat halaman error karena kesalahan user:
Dalam membuat halaman eror untuk jenis yang ini kita bisa membuatnya dengan cara mendefinisikannya langsung ke dalam deployment descriptor (web.xml) dengan syntax seperti berikut ini:
    <error-page>
        <error-code>404</error-code>
        <location>/404.jsp</location>
    </error-page>
Pada tag di atas kita bisa melihat jelas bahwa jika terjadi error File Not Found akibat HTTP request yang di lakukan oleh user maka aplikasi web akan langsung me-redirect halaman error ke file 404.jsp, yang tentunya halaman ini kita buat sendiri dan sudah kita custom seperti berikut ini:

2.      Membuat Halaman eror karena kesalahan programming
Sementara untuk mengkonfigurasi halaman error karena kesalahan programming yang kita lakukan, kita menambahkan baris-baris pada deployment descriptor seperti contoh berikut ini:
    <error-page>
        <exception-type>java.lang.NullPointerException</exception-type>
        <location>/errorpage.jsp</location>
    </error-page>

    <error-page>
        <exception-type>java.lang.NumberFormatException</exception-type>
        <location>/errorpage.jsp</location>
    </error-page>

Pada contoh diatas kita melihat bahwa error yang terjadi bisa kita definisikan satu-satu, yang pertama error Null Pointer Exception, dan yang kedua adalah Number Format Exception.
Pada contoh diatas juga, kita hanya perlu membuat sebuah file jsp saja untuk menginformasikan stacktrace yang terjadi karena kesalahan programming yang kita lakukan.
Isi dari file jsp itu adalah berikut ini:
<%@ page import="java.io.ByteArrayOutputStream" %>
<%@ page import="java.io.PrintStream" %>
<%--
  User: Muhammad Yusuf
  Date: Aug 30, 2005
  Time: 5:56:29 PM
--%>
<%@ page isErrorPage="true" %>
<html>
<head>
    <title>JSP Error Page</title>
    <meta http-equiv="Pragma" content="no-cache">
    <style type="text/css">
        body {
            background-color: #cccccc;
            font-family: verdana, sans-serif, monospace;
            font-size: medium;
        }
    </style>
</head>

<body bgcolor=#ffffff>
<font face="Verdana">
    <center>
        <h2><font color=#DB1260>Error Page</font></h2>
    </center>
    <p> An exception was thrown: <b> <%=exception %>
        <p> With the following stack trace:
<pre>

<%
    ByteArrayOutputStream ostr = new ByteArrayOutputStream();
    exception.printStackTrace(new PrintStream(ostr));
    out.print(ostr);
%>
</pre>
        <br><a class="Verdana" href="#">Back To Main</a>

        <p>
</body>
</html>
Pada halaman jsp ini, exception yang terjadi bisa kita nyatakan dengan tag ini
<%=exception%>
kemudian stack-trace yang mungkin terjadi bisa kita print-out ke atas halaman web seperti berikut ini:

<%
    ByteArrayOutputStream ostr = new ByteArrayOutputStream();
    exception.printStackTrace(new PrintStream(ostr));
    out.print(ostr);
%>
Dan inilah hasil akhir dari tampilan halaman error yang kedua jika error terjadi karena kesalahan programming yang kita lakukan.

Atau seperti berikut ini:

Semoga Bermanfaat

Menteng, 29 November 2009.


josescalia


No comments: