Apa itu JavaBeans

Posted: October 15, 2011 in Java Servlet
Tags: , , , , , ,

Di Java ada suatu istilah yang dinamakan JavaBeans, sebenarnya apakah yang dimaksud dengan JavaBeans itu sendiri ? Di dalam dunia Java desktop / GUI, JavaBeans diartikan sebagai salah satu komponen visual untuk membuat aplikasi visual. Namun belakangan JavaBeans tidak hanya digunakan di lingkungan pemrograman desktop saja tetapi juga di pemrograman web.

Sebenarnya di artikel2 saya yang sebelumnya, saya sudah banyak menggunakan JavaBeans. Hanya saja saya tidak pernah memberitahukannya secara langsung😀. JavaBeans itu sendiri merupakan sebuah class Java biasa saja, hanya saja suatu class layak disebut JavaBeans apabila memenuhi 2 syarat berikut :

  1. Suatu class harus memiliki sebuah constructor tanpa argumen.
  2. Untuk setiap instance variable harus memiliki sebuah method getter dan setter-nya. (Kalau ada yang belum mengetahui apa itu instance variable, silahkan baca artikel saya tentang beberapa istilah dasar di Java).

Nah sekarang saya akan memberikan contoh menggunakan action <jsp:useBean> di jsp. Langsung saja buat new web project kalian menggunakan IDE kesukaan kalian (saya menggunakan netbeans). Sekarang buatlah sebuah class Member yang akan bertindak sebagai JavaBean

package com.maniakjava.model;

public class Member
{
    private String nama;
    private int umur;

    public Member() {
    }

    public String getNama() {
        return nama;
    }

    public void setNama(String nama) {
        this.nama = nama;
    }

    public int getUmur() {
        return umur;
    }

    public void setUmur(int umur) {
        this.umur = umur;
    }
}
 

Ubah file index.jsp yang sudah dibuatkan secara otomatis oleh netbeans menjadi seperti ini

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>
        <form action="doLogin.do" method="post">
            nama : <input type="text" name="nama" id="nama"> <br>
            umur : <input type="text" name="umur" id="umur"> <br>
            <input type="submit" value="Next" >
        </form>

        <br/><br/> <font color="red">
        <%
            String err = (String) request.getAttribute("err");
            if(err!=null) out.print(err);
        %>
        </font>

    </body>
</html>
 

Kemudian buat sebuah class LoginAction yang akan bertindak sebagai controller

package com.maniakjava.controller;

import java.io.IOException;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class LoginAction extends HttpServlet
{
    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException
    {
        String nama = request.getParameter("nama");
        String umur = request.getParameter("umur");
        RequestDispatcher rd = null;
        String err="";
        if(nama.equals("") || nama==null)
            err +="<br/>Nama harus diisi";
        if(umur.equals("") || umur==null)
            err += "<br/>Umur harus diisi";
        if(! umur.equals("") || umur !=null)
        {
            try
            {
                int temp = Integer.parseInt(umur);
            }
            catch(NumberFormatException e)
            {
                err += "<br/>Umur harus berupa angka";
            }
        }

        if (err.equals("")) rd = request.getRequestDispatcher("home.jsp");
        else rd = request.getRequestDispatcher("index.jsp");

        request.setAttribute("err", err);
        System.out.println(err);
        rd.forward(request, response);
    }
}

Jangan lupa daftarkan class LoginController sebagai servlet di web.xml seperti ini

 <servlet>
        <servlet-name>LoginServlet</servlet-name>
        <servlet-class>com.maniakjava.controller.LoginAction</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>LoginServlet</servlet-name>
        <url-pattern>/doLogin.do</url-pattern>
    </servlet-mapping>

Kemudian buat sebuah file home.jsp berikut

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <jsp:useBean id="memberBean" scope="session" class="com.maniakjava.model.Member" />
    <jsp:setProperty name="memberBean" property="*" />
    <body>
        Hallo <jsp:getProperty name="memberBean" property="nama" /> <br/>
        Umur anda : <%=memberBean.getUmur()%> tahun
    </body>
</html>
 

Perhatikan source di home.jsp di atas, disitu saya menggunakan <jsp:useBean> dengan scope bernilai session. Artinya bean dapat dikenali di semua halaman JSP dalam session yang sama dengan halaman jsp yang mendeklarasikan bean. Kemudian saya menggunakan <jsp:setProperty>  dengan attribut property bernilai *, artinya semua properti dari memberBean akan diisi nilainya dengan nilai yang didapat dari file index.jsp. Kalau kita tidak mau semua properti diset nilainya, maka kita bisa menggunakan setProperty untuk property yang kita inginkan saja, contohnya

<jsp:setProperty name="memberBean" property="nama" /> 

. Atau kalau kita ingin langsung mengeset nilainya dengan nilai yang kita kehendaki, kita bisa menggunakan

<jsp:setProperty name="memberBean" property="nama" value="maniak java" /> 

Kemudian saya juga menggunakan <jsp:getProperty> untuk property nama. Syntaks tersebut sama saja artinya dengan memanggil getter method dari instance variable nama. Oleh karena itu kita juga bisa langsung menggunakan getterMethod dari bean yang sudah dideklarasikan seperti contoh di atas untuk menampilkan umur.

Comments
  1. Fandy says:

    Salam🙂 terima kasih tutorialnya, Cuma saya ada pertanyaan, kegunaan dari konstruktor tanpa argument nya buat apa ya?
    Mkasih

    • ManiakJava says:

      Sorry baru bales..
      Salam kenal jg bro…
      thx..hehe..
      wahh pertanyaanny sulit dijawab neh, kykna uda nguasain Java juga ya ? hehehe…

      kalau constructor tanpa argument itu namanya default constructor bro.
      jd pada saat bikin object baru dari suatu class, default constructor yang dipanggil..
      sebenernya kalau kita bikin class, terus kita ga bikin constructor tanpa argumentnya, secara implisit constructor tsb juga bakal dibuat.. CMIIW

      Ref :
      If a class contains no constructor declarations, then a default constructor with no formal parameters and no throws clause is implicitly declared.
      http://docs.oracle.com/javase/specs/jls/se7/html/jls-8.html#jls-8.8.9

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s