Sunday, 21 July 2013

Membuat Client Server Menggunakan Java Netbeans

Tutorial Membuat Clienst Server menggunakan Netbeans

Pada tutorial kali ini saya akan membahas bagaimana membuat client server menggunakan java,jika pada umumnya yang terjadi dan sering digunakan client server menggunakan website kali ini java juga bisa membuat client server,pada pembuatan client server ini membutuhkan beberapa project baru yang harus dibuat untuk mengetahui cara pembuatannya ikuti langkah berikut:
Pertama kita jalankan Netbeans kemudian buat Project terlebih dahulu New Project->Java Class Library seperti pada gambar di bawah:  
    Pilih Next kemudian brinama Java library pada project Name Komunikasi.api sebagai penghubung antara client dan server seperti pada gambar dibawah: 



     Pilih Finish kemudian akan tampil project yang sudah kita buat seperti pada gambar dibawah: 
    Setelah membuat project Komunikasi.api kemudian kita buat kembali project baru New Project->Java Aplication kemudian Next seperti pada gamabar di bawah:

     Setelah kita Next maka akan muncul tampilan form pemberian nama beri nama project Server seperti pada gambar di bawah:

    Setelah selesai project membuat project server kemudian kita buat kembali project baru New Project->Java Aplication kemudian Next kita beri nama Client seperti pada gambar di bawah:
    Kemudian pilih Finish sehingga seperti pada gambar di bawah:

    Pada gambar diatas merupakan gambar dari project yang sudah kita buat,selanjutnya untuk menghubungkan antara client dan server klik kanan pada project Client kemudian pilih properties seperti pada contoh gambar di bawah:
    Setelah pilih properties maka akan muncul tampilan properties pilih libraries->add Project kemudian pilih project Komunikasi.api yang sudah kita buat sebelumnya kemudian pilih Add Project JAR Files seperti pada contoh gambar di bawah:


    Kemudian pilih OK seperti pada gamabar di bawah:

    Lakukan Juga pada project Server pilih Properties->Libraries->Add JAR Files->Komunikasi-api->OK sama seperti pada Client.Kemudian pada Komunikasi-api pada Source Package->Default Package klik kanan New->Java Package seperti pada gamabr di bawah:


    Kemudian brinama Package dengan nama Entitas->Finish seperti pada gambar berikut:

     Kemudian klik kana pada Package Entitas->New->Java Class seperti pada gamabar di bawah:

    Berinama Java class Misalakan Mahasiswa sesuaikan nama dengan sistem yang akan kita buat jika untuk apalikasi minmarket class pada entitas berisi nama database misalakan barang atau kategori di sina saya menggunakan contoh inputan mahasiswa sesuaikan dengan kebutuhan,berikut contoh gambar pembuatan class:
    Pilih finish kemudian tuliskan Script berikut:
    import java.io.Serializable;

    /**
     *
     * @author Fg_white
     */
    public class Mahasiswa implements Serializable{

        private String nim;
        private String nama;
        private String prodi;
    Klik kanan pada class kemudian pilih Insert Code seperti pada gambar di bawah:
    Kemudian pilih Getter and Setter seperti gamabar berikut:
    Setelah Getter nad Setter maka akan muncul tampilan pemilihan Getter and Setter Centang semua seperti pada gambar di bawah:
    Pilih Generate sehingga tampilan class mahasiswa seperti berikut:

    import java.io.Serializable;

    /**
     *
     * @author Fg_white
     */
    public class Mahasiswa implements Serializable{

        private String nim;
        private String nama;
        private String prodi;

        public String getNim() {
            return nim;
        }

        public void setNim(String nim) {
            this.nim = nim;
        }

        public String getNama() {
            return nama;
        }

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

        public String getProdi() {
            return prodi;
        }

        public void setProdi(String prodi) {
            this.prodi = prodi;
        }
       
    }

    Setelah selesai kemudian buka kembali project Komunikasi-api buat Package baru seperti pada gambar berikut:

    Berinama Package Services->Finish seperti pada gamabr di bawah:

    Buat Interface baru pada package Services klik kanan New Java Interface berinama Interface ServicesMahasiswa->;Finish seperti pada gambar di bawah:

    Tuliskan Script berikut:
    import Entitas.Mahasiswa;
    import java.rmi.Remote;
    import java.rmi.RemoteException;
    import java.util.List;

    /**
     *
     * @author Fg_white
     */
    public interface ServicesMahasiswa extends Remote{
    List getMahasiswa()throws RemoteException;//untuk select data menampung data mahasiswa
    void insert(Mahasiswa mahasiswa) throws RemoteException;
    void update(Mahasiswa mahasiswa) throws RemoteException;
    void delete(Mahasiswa mahasiswa) throws RemoteException;
    }
     Script di sesuaikan apabila menggunakan form Barang pada Aplikasi Mini Market maka Mahasiswa diganti menjadi Barang.
    Setelah selesai menuliskan Script di atas kemudian buat package baru pada project server klik kanan new->Java ackage berinama Package Koneksi kemudian buat Class pada Package Koneksi klik kanan New->Java Class berinama class Koneksi kemudian tuliskan script berikut pada class Koneksi.Class koneksi ini digunakan sebagai dengan database,berikut scriptnya:

    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.SQLException;

    /**
     *
     * @author Fg_white
     */
    public class Koneksi {
    private static Connection connection=null;

        public static Connection getConnection() {
            try {
                Class.forName("com.mysql.jdbc.Driver").newInstance();
                connection=DriverManager.getConnection("jdbc:mysql://localhost:3306/clientserver","root", "");
            } catch (Exception e) {
                System.out.println(e.getMessage());

                }
            return connection;
        }
        public static void main(String[] args) {

        Koneksi.getConnection();

        }

        }

    connection=DriverManager.getConnection("jdbc:mysql://localhost:3306/clientserver","root", ""); merupakan koneksi pada databse untuk memanggil database mahasiswa clientserver merupakan nama database yang saya buat sedangkan root adalah password root databasenya.
    Kemudian Run/jalankan Netbeans Shift+F6 jika muncul output seperti pada gamabr di bawah maka koneksi Sukses.


     Setelah membuat koneksi kemudian kita buat package baru kembali pada project Server dengan nma Package AksesRMI yang berisi class baru AksesMahasiswa tuliskan script berikut untuk akses data mahasiswa:

    import Entitas.Mahasiswa;
    import Koneksi.Koneksi;
    import Services.ServicesMahasiswa;
    import java.sql.Statement;
    import java.rmi.RemoteException;
    import java.rmi.server.UnicastRemoteObject;
    import java.sql.ResultSet;
    import java.util.ArrayList;
    import java.util.List;

    /**
     *
     * @author Fg_white
     */
    public class AksesMahasiswa extends UnicastRemoteObject implements ServicesMahasiswa{

        public AksesMahasiswa() throws RemoteException {
        }


        @Override
        public List getMahasiswa() throws RemoteException {
           ListlistMahasiswa=new ArrayList<>();
           Statement statement=null;
            try {
                statement=Koneksi.getConnection().createStatement();
               try (ResultSet resultSet = statement.executeQuery("select * from mahasiswa")) {
                   while (resultSet.next()) {
                   Mahasiswa mahasiswa=new Mahasiswa();
                   mahasiswa.setNim(resultSet.getString(1));
                   mahasiswa.setNama(resultSet.getString(2));
                   mahasiswa.setProdi(resultSet.getString(3));
                   listMahasiswa.add(mahasiswa);

                   }
               }
                return listMahasiswa;

            } catch (Exception e) {
                System.out.println(e.getMessage());
                return null;
            }
           finally{
                if (statement!=null) {
                    try {
                        statement.close();
                    } catch (Exception e) {
                    }

                }
           }
        }

        /**
         *
         * @param mahasiswa
         * @throws RemoteException
         */
        @Override
        public void insert(Mahasiswa mahasiswa) throws RemoteException {
            Statement statement=null;
            try {
                statement= Koneksi.getConnection().createStatement();
                 statement.executeUpdate("insert into mahasiswa values ('"+mahasiswa.getNim()+"'"
                         + ",'"+mahasiswa.getNama()+"','"+mahasiswa.getProdi()+"')");

            } catch (Exception e) {
                System.out.println(e.getMessage());
                  
            }finally{
                if (statement!=null) {
                    try {
                        statement.close();
                    } catch (Exception e) {
                    }
                   
                }
            }
        }

        @Override
        public void update(Mahasiswa mahasiswa) throws RemoteException {
             Statement statement=null;
            try {
                statement=Koneksi.getConnection().createStatement();
                statement.executeUpdate("update mahasiswa set nama='"+mahasiswa.getNama() +
                        "',prodi='"+mahasiswa.getProdi()+"'where nim='"+mahasiswa.getNim()+"'");
              

            } catch (Exception e) {
                System.out.println(e.getMessage());
                  
            }finally{
                if (statement!=null) {
                    try {
                        statement.close();
                    } catch (Exception e) {
                    }
                   
                }
            }
        }

        @Override
        public void delete(Mahasiswa mahasiswa) throws RemoteException {
               Statement statement=null;
            try {
                statement=Koneksi.getConnection().createStatement();
                statement.executeUpdate("delete from mahasiswa where nim='"+mahasiswa.getNim()+"'");

            } catch (Exception e) {
                System.out.println(e.getMessage());

            }finally{
                if (statement!=null) {
                    try {
                        statement.close();
                    } catch (Exception e) {
                    }

                }
            }
        }
    }

    Setelah selesai membuat class AksesMahasiswa kemudian buka class server pada packge Server kemudian tuliskan script berikut:

    import AksesRMI.AksesMahasiswa;
    import java.rmi.Remote;
    import java.rmi.RemoteException;
    import java.rmi.registry.LocateRegistry;
    import java.rmi.registry.Registry;

    /**
     *
     * @author Fg_white
     */
    public class Server {

        /**Z
         * @param args the command line arguments
         */
        public static void main(String[] args) throws RemoteException {

            Registry registry=LocateRegistry.createRegistry(1099);

           AksesMahasiswa aksesMahasiswa=new AksesMahasiswa();
           registry.rebind("mahasiswa",(Remote) aksesMahasiswa);

            System.out.println("server jalan");
        }

    }
    Kemudian Run Server Shift+F6 jika muncul tampilan server jalan maka server sudah berhasil di jalankan dan sukses seperti pada gamabr di bawah:

    Setelah selesai pada project Server selanjutnya buka project Client buat form dengan nama DataMahasiswa pada package Client,cara pembuatan form lihat pada tutorial sebelumnya mengenai pembuatan form,berikut merupaka contoh fom DataMahasiswa.

     Tuliskan Script berikut pada source form DataMahasiswa:

    import Entitas.Mahasiswa;
    import Services.ServicesMahasiswa;
    import java.rmi.NotBoundException;
    import java.rmi.RemoteException;
    import java.rmi.registry.LocateRegistry;
    import java.rmi.registry.Registry;
    import java.util.ArrayList;
    import java.util.List;
    import java.util.logging.Level;
    import java.util.logging.Logger;
    import javax.swing.JOptionPane;
    import javax.swing.table.DefaultTableModel;

    /**
     *
     * @author Fg_white
     */
    public class Data_Mahasiswa extends javax.swing.JFrame {

        final ServicesMahasiswa servicesMahasiswa;

        public Data_Mahasiswa() throws RemoteException, NotBoundException {
            Registry registry= LocateRegistry.getRegistry(1099);
            servicesMahasiswa=(ServicesMahasiswa) registry.lookup("mahasiswa");
            initComponents();
            select(servicesMahasiswa);
        }

        @SuppressWarnings("empty-statement")
       
        private void select(ServicesMahasiswa servicesMahasiswa1) throws RemoteException{
            List listMahasiswa= new ArrayList<>();
        
            String header[]={"NIM","NAMA","PRODI"};
            DefaultTableModel defaultTableModel=new DefaultTableModel(null, header);
            tabelMahasiswa.setModel(defaultTableModel);

            for(int i=0;i < tabelMahasiswa.getRowCount();i++){
                defaultTableModel.removeRow(i);
            }
            listMahasiswa=servicesMahasiswa1.getMahasiswa();
            for(int i=0;i < listMahasiswa.size();i++){
                Object baris[]={listMahasiswa.get(i).getNim(),listMahasiswa.get(i).getNama(),listMahasiswa.get(i).getProdi()};
                defaultTableModel.addRow(baris);
            }
        }
       
        private void insert(ServicesMahasiswa servicesMahasiswa1) throws RemoteException{
         
            Mahasiswa m=new Mahasiswa();
            m.setNim(txtNim.getText());
            m.setNama(txtNama.getText());
            m.setProdi(Prodi.getSelectedItem().toString());
            servicesMahasiswa1.insert(m);
        }
       
        private void update(ServicesMahasiswa servicesMahasiswa1) throws RemoteException{
         
          Mahasiswa m=new Mahasiswa();
          m.setNim(txtNim.getText());
          m.setNama(txtNama.getText());
          m.setProdi(Prodi.getSelectedItem().toString());
          servicesMahasiswa1.update(m);
         
        }
       
        private void delete(ServicesMahasiswa servicesMahasiswa1) throws RemoteException{
         Mahasiswa m=new Mahasiswa();
         m.setNim(txtNim.getText());
         servicesMahasiswa1.delete(m);
        }
       
        private void clear(){
            txtNim.setText("");
            txtNama.setText("");
        }
        

     Untuk Botton Insert,Update dan Delete di Event->Action Performed kemudian tuliskan script berikut:
     Button Insert:

     if (txtNim.getText().equals("") || txtNama.getText().equals("")) {
                JOptionPane.showMessageDialog(null, "Silahkan Input Data Dulu");
                           
            }
            else{
                try {
                    insert(servicesMahasiswa);
                    select(servicesMahasiswa);
                } catch (Exception e) {
                    JOptionPane.showMessageDialog(null, e.getMessage());
                }
            }
            clear();

     
         Button Update:


     if (txtNim.getText().equals("") || txtNama.getText().equals("")) {
                JOptionPane.showMessageDialog(null, "Silahkan pilih data yang akan di Update");
                           
            }
            else{
                try {
                    update(servicesMahasiswa);
                    select(servicesMahasiswa);
                } catch (Exception e) {
                    JOptionPane.showMessageDialog(null, e.getMessage());
                }
                clear();
            }


    Button Delete :

      if (txtNim.getText().equals("") || txtNama.getText().equals("")) {
                JOptionPane.showMessageDialog(null, "Silahkan pilih data yang akan di Update");
                           
            }
            else{
                try {
                    delete(servicesMahasiswa);
                    select(servicesMahasiswa);
                } catch (Exception e) {
                    JOptionPane.showMessageDialog(null, e.getMessage());
                }
                clear();
            } 


    Untuk Tabel di Event->MouseClicked kemudian tuliskan script berikut:

      txtNim.setText(tabelMahasiswa.getValueAt(tabelMahasiswa.getSelectedRow(),0).toString());
            txtNama.setText(tabelMahasiswa.getValueAt(tabelMahasiswa.getSelectedRow(),1).toString());
            Prodi.setSelectedItem(tabelMahasiswa.getValueAt(tabelMahasiswa.getSelectedRow(),2).toString());


     Kemudian jalankan form DataMahasiswa jangan lupa untuk menjalakan servernya terlebuih dahulu jika servernya tidak di jalankan maka akan error.Run Form DataMhasiswa Shift+F6 sehingga seperti pada tampilan berikut:

    Inputkan data mahasiswa jika muncul pada tabel setelah di input maka insert berhasil jika tidak maka ada ketidak cocokan data.Seperti pda contoh final berikut:

    Nama Ayuni sudah masuk pada tabel input data berhasil.Untuk databasenya berikut gambar dari databse Mahasiswa penggunaan huruf besar dan kecil pada database berpengaruh pada aplikasi .




    Pembuatan Tutorial Client Server Selesai.Terimakasih...!!!
    Semoga Bermanfaat....!!!!!





    Featured post

    Instalasi Dan Konfigurasi Android ( ECLIPSE )

    Sebelum instalasi eclipse terlebih dahulu kita sediakan perangkat software yang dibutuhkan seperti berikut : ·   Instalasi Java JDK · ...