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


05 September 2009

Loop (Perulangan) Dalam Java

Hai pembaca, jumpa lagi dalam tulisan saya kali ini. Untuk pembahasan kali ini kita akan mencoba teknik-teknik dasar konsep programming. Semoga pembahasan konsep-konsep dasar ini dapat menambah wawasan dan pengertian kita semua terhadap aspek-aspek konsep pemograman. Untuk pembahasan kali ini kita akan memabahas Perulangan atau Loop.

Loop atau perulangan adalah suatu bentuk kegiatan mengulang suatu statement sampai batas yang diinginkan. Dalam pemograman Loop atau perulangan sangat berguna sekali. Kegunaan sederhana dalam perulangan terlukis seperti ini: Jika kita ingin menuliskan kata “saya ganteng” sebanyak seribu kali maka kita harus membuat seribu baris kata “saya ganteng” dalam kode pemrogaman kita. Tapi dengan adanya perulangan maka kita hanya cukup menuliskan 5 sampai 7 baris kode saja. Dalam praktek sebenarnya, tentu saja perulangan sangat membantu sekali. Misal untuk memuat seluruh isi table dari sebuah database dimana datanya ingin kita tampilkan.

Loop atau perulangan dalam Java dapat dilakukan dengan 3 teknik:

  • Perulangan dengan for

    for (inisialisasi ekspresi; kondisi loop; ekspresi penambahan){
    // pernyataan
    }
    Perulangan dengan teknik ini dikontrol oleh tiga bagian yang ada dalam tanda kurung dan masing-masing bagian ini dipisahkan oleh titik-koma. Pada bagian pertama(inisialisasi ekspresi), sebuah variabel akan di deklarasikan sebagai sebuah titik awal dari perulangan, biasanya variable ini mempunyai tipe data integer atau float. Sementara pada bagian kedua disinilah perulangan akan diperiksa apakah masih memenuhi syarat atau tidak, jika masih memenuhi syarat maka statement dibawahnya akan di eksekusi. Sedangkan bagian ketiga adalah bagian dimana jika bagian kedua masih memenuhi syarat maka nilai variabel akan ditambahkan sesuai dengan syarat yang dituliskan. Bagian ketiga ini secara otomatis akan tidak dibaca oleh program jika kondisi pada bagian ke-dua sudah tidak lagi memenuhi syarat, dan perulangan pun menjadi terhenti. Untuk lebih jelasnya perhatikan potongan contoh berikut ini:
  • for (int i=0; i <=1000; i++){
    System.out.println(“Saya Ganteng”);
    }
    Jika digambarkan jalannya program akan seperti ini: variable i akan di inisialisasi pertama kali dan langsung diberi nilai 0, kemudian variable i tersebut akan diperiksa pada bagian kedua, apakah i lebih kecil atau sama dengan 1000, jika nilai I pertama kali adalah 0 maka pernyataan tersebut bernilai benar (true), sehingga bagian ketiga pun di eksekusi dan kali ini nilai i menjadi sama dengan 1. setelah nilai i bertambah menjadi 1 maka langkah selanjutnya program akan mengeksekusi baris pernyataan yang ada didalam tanda kurung, program akan menuliskan ke layar “Saya Ganteng”. Setelah itu kursor baris akan kembali lagi keatas ke posisi for lagi, namun inisialisasi variabel dilewatkan dan langsung ke bagian kedua yaitu memeriksa apakah i <=1000, dan jika masih memenuhi syarat maka bagian ketiga dan baris statement pun di eksekusi kembali, demikian seterusnya hinga nilai variabel i sudah menjadi sama dengan 1001. Jika nilai variabel i sudah tidak lagi memenuhi syarat bagian kedua maka program akan tidak mengeksekusi bagian ketiga dan baris statement, dan pada saat ini pula loop atau perulangan akan berhenti. Jika digambarkan dalam diagram maka seperti inilah perulangan dengan for itu tergambar :
  • Perulangan dengan while.

    while(ekspresi){
    //statement
    }
  • Perulangan dengan menggunakan teknik while ini sebenarnya adalah suatu bentuk perulangan yang memodifikasi teknik pencabangan (branching) secara kasar. Pernyataan yang ada didalam blok perulangan akan dieksekusi dengan cara memeriksa ekspresi yang ada, sepanjang ekspresi bernilai true maka statement akan terus di eksekusi. Variabel sebagai kontrol perulangan bentuk ini diinisialisai di luar blok perulangan ini. Dan penambahan atau increment nilai variabel berada didalam blok perulangan ini. Kelebihan perulangan dengan bentuk ini adalah variabel yang dideklarasikan tidak hanya bertipe integer atau float saja namun bisa juga bertipe boolean atau string. Perhatikan contoh program perulangan dengan menggunakan bentuk ini yang memakai variabel bertipe integer sebagai kontrol perulangannya:

    int i=0;

    while(i<=10000){
    System.out.println(“Saya Ganteng”);
    i++;
    }

    Sepanjang variable i bernilai lebih kecil sama dengan 1000 maka pernyataan mencetak ke layar “Saya Ganteng” akan tetap terus di eksekusi. Yang harus kita perhatikan jika kita menggunakan perulangan dengan teknik ini adalah bahwa incremental variabel i harus ada, sebab jika tidak yang terjadi adalah perulangan yang tidak pernah akan berhenti atau Invinitive Loop.
    Kemudian mari kita lihat potongan kode yang variabel kontrolnya tidak menggunakan integer atau float, berikut ini:
    boolean ctrl =false;
    int i = 0;

    while(ctrl==false){
    System.out.println(“Saya Ganteng”);
    i++;
    if(i == 1000){
    ctrl = true;
    }
    }

    Perhatikan pada potongan kode program tersebut. Pernyataan mencetak kelayar “Saya Ganteng” akan terus dieksekusi selama variabel kontrol perulangan tersebut masih bernilai false, sementara trigger untuk membuat variable bernilai true adalah nilai variable i yang harus sampai dengan 1000.
    Jika digambarkan dalam diagram maka sketsa perulangan dengan bentuk ini seperti gambar berikut:

  • Perulangan dengan do while

    do{
    //statement
    }while(ekspresi);

    Perulangan dengan bentuk seperti ini adalah perulangan dengan membalikkan logika perulangan dengan teknik while. Dalam perulangan dengan bentuk ini, pernyataan dieksekusi dulu, baru kemudian kondisi variabel kontrol perulangannya diperiksa apakah memenuhi syarat atau tidak. Biar lebih mudah memahaminya mari kita lihat potongan code program berikut ini:

    int i=0;

    do{
    System.out.println(“Saya Ganteng”);
    i++;
    }while(i<=10000);

    Variabel kontrol perulangan tetap diinisialisasi diluar blok perulangan dan harus tetap bersifat incremental / bertambah dan letak incrementalnya ada dalam blok perulangan. Secara logika maka diagram yang bisa menggambarkan proses perulangan tersebut adalah:

Demikianlah pembahasan kita kali ini mengenai Perulangan atau Loop dalam pemrograman Java. Ada beberapa hal yang bisa kita simpulkan dan kita catat dalam pembahasan kali ini:
  1. Dalam perulangan harus ada variable kontrol, dimana variabel tersebut yang bertugas mengontrol perulangan hingga batas apa atau berapa perulangan bisa dilakukan.
  2. Variable kontrol harus bersifat incremental atau juga bersifat dapat dimodifikasi sehingga perulangan dapat berjalan dengan semestinya.
  3. Incremental atau modifikasi variabel kontrol berada dalam lingkup perulangan.

Point-point diatas menjadi konsep dasar pengertian kita akan makna Loop atau perulangan dalam bahasa pemrograman.


Semoga Bermanfaat


Salam

Josescalia

24 August 2009

Mohon Maaf

Pembaca setia blog ini, saya ingin sekali menyampaikan permohonan maaf, mungkin anda yang sudah berkali-kali membuka blog ini, namun tidak menemukan artikel-artikel baru yang mungkin bermanfaat.
Bukan saya sudah malas menulis, melainkan karena ada beberapa hal masalah pekerjaan yang sangat harus diselesaikan, dan ini sangat memakan waktu saya, sehingga saya belum mempunyai kesempatan untuk kembali mengisi blog ini dengan catatan-catatan yang saya ketahui.
Sebelumnya saya ingin mengucapkan terima kasih yang seluas-luasnya untuk para pembaca blog ini, karena kunjungan andalah saya merasa ada tanggung jawab untuk kembali menulis apa-apa yang saya ketahui. Saya tahu karena saya memakai hit counter pada blog ini. setiap minggu saya amati ternyata banyak juga yang datang untuk mengunjungi blog ini. dalam satu minggu paling tidak ada sekitar 250 pengunjung pada blog ini. Bila sedang ada artikel baru bisa mencapai 500 pengunjung dalam satu minggu.
Saya cukup senang dengan statistik tersebut, paling tidak saya merasa bahwa tulisan saya pantas dibaca dan mungkin diterapkan pada kegiatan komputer anda sehari-hari.
Masalah pekerjaan yang menghantam saya 3 bulan belakangan sungguh sangat menyita waktu saya, saya mencoba mencari apa yang sebenarnya saya inginkan dari pekerjaan yang saat ini saya jalani. Dan akhirnya saya menemukan sebuah kesimpulan yang melahirkan sebuah keputusan yang sungguh berat, dan itu harus saya ambil.
Saya memutuskan untuk resign dari kantor saya sekarang, kantor yang telah memberi banyak ilmu dan pengetahuan buat saya, kantor yang telah banyak memberikan limpahan materi yang bahkan tidak pernah saya bayangkan ketika saya sekolah dulu. Tapi keputusan sudah saya ambil, dan Insya Allah saya tidak pernah akan menyesalinya. Karena sebelumnya sudah melalui pertimbangan yang matang, dan pemikiran yang matang pula.
Insya Allah pula, selesai masa transisi pengetahuan ke staff-staff yang masih bekerja di perusahaan saya ini, saya akan kembali mencoba untuk menuliskan apa-apa yang saya ketahui nantinya pada blog ini. 5 Tahun bukan waktu yang sebentar buat saya untuk langsung menghilangkan begitu saja kenangan-kenangan yang saya telah dapatkan di perusahaan ini.
Mohon doa dari seluruh pembaca setia blog ini semoga saya selalu diberikan kesehatan yang prima dan diberikan waktu luang untuk bisa menuliskan yang saya ketahui pada blog ini.
Sekali lagi saya mengucapkan terima kasih yang seluas-luasnya telah tetap setia mengunjungi blog ini, semoga semua yang telah pembaca dapatkan dari blog ini bisa bermanfaat. Dan Insya Allah habis lebaran tahun ini, saya akan mencoba untuk kembali menulis....


Salam hangat

josescalia