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:
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:
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
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) {
}
}
}
}
}
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
List
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: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");
}
}
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
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 .
Semoga Bermanfaat....!!!!!