0% found this document useful (0 votes)
46 views

Aplikasi Client Server: Oleh

This document describes the steps to create a client-server application with 3 projects: a database class project, a database server project, and a database client project. The database class project contains entity and service packages. The database server project implements the service interface to access the database. The database client project is the client application that will call the remote service.

Uploaded by

hariyanto
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
46 views

Aplikasi Client Server: Oleh

This document describes the steps to create a client-server application with 3 projects: a database class project, a database server project, and a database client project. The database class project contains entity and service packages. The database server project implements the service interface to access the database. The database client project is the client application that will call the remote service.

Uploaded by

hariyanto
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 16

APLIKASI CLIENT SERVER

Oleh :

Nama : Nursella Sari

Kelas : 4CC

Nim : 061530701249

Dosen Pembimbing : Indarto S.T.,MCs

TEKNIK KOMPUTER

POLITEKNIK NEGERI SRIWIJAYA

2017
APLIKASI CLIENT-SERVER

Langkah pertama harus membuat 3 project terlebih dahulu, 2 project aplikasi dan 1
project class.

- Database : Java Class


- Database_server : Java Aplication
- Database_client : Java Aplication

Didalam project database terdapat 2 package, yaitu sella dan sella.service. Didalam
db.entity terdapat class Person sedangkan di db.service ada java interface PersonService.
Person dibuat karena akan digunakan di project database client dan server. Person service
berupa data akses object.

- source code Person :

package sella;
import java.io.Serializable;
import java.util.Date;

public class Person implements Serializable {

private Long id;


private String firstName;
private String lastName;
private Date birthDay;

public Long getId() {


return id;
}

public void setId(Long id) {


this.id = id;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public Date getBirthDay() {
return birthDay;
}
public void setBirthDay(Date birthDay) {
this.birthDay = birthDay;
}
}

- Source code PersonService

package sella.service;

import sella.Person;
import java.rmi.Remote;
import java.rmi.RemoteException;
import java.util.List;
public interface PersonService extends Remote {

Person insertPerson(Person person) throws RemoteException;

void updatePerson(Person person) throws RemoteException;

void deletePerson(Long id) throws RemoteException;

Person getPerson(Long id) throws RemoteException;

List<Person> getPerson() throws RemoteException;


}
Didalam project database_server terdapat 3 package. Di database_server dibuat class
server untuk menjalankan program. PersonServiceServer merupakan implementasi dari
database. Sedangkan DatabaseUtilities berguna untuk koneksi ke database.

- Source code Database_server :

package database_server;

import database_server.utilities.DatabaseUtilities;
import database_server.service.PersonServiceServer;
import java.rmi.RemoteException;
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;

public class Database_server {

public static void main(String[] args) throws RemoteException {


// TODO code application logic here
Registry server = LocateRegistry.createRegistry(6789);

PersonServiceServer personService = new PersonServiceServer();

server.rebind("service", personService);

System.out.println("Server berhasil berjalan");


}
}

- Source code PersonServiceServer :

package database_server.service;

import sella.Person;
import sella.service.PersonService;
import database_server.utilities.DatabaseUtilities;
import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;
import java.sql.Date;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;

public class PersonServiceServer extends UnicastRemoteObject implements


PersonService {

public PersonServiceServer() throws RemoteException {


}

@Override
public Person insertPerson(Person person) throws RemoteException {

System.out.println("Client melakukan proses insert");

PreparedStatement statement = null;


try {
statement = DatabaseUtilities.getConnection().prepareStatement(
"INSERT INTO person (id, first_name, last_name, birth_day) values
(null, ?, ?, ?)");

statement.setString(1, person.getFirstName());
statement.setString(2, person.getLastName());
statement.setDate(3, new Date(person.getBirthDay().getTime()));

statement.executeUpdate();

ResultSet result = statement.getGeneratedKeys();


if (result.next()) {
person.setId(result.getLong(1));
}
result.close();

return person;
} catch (SQLException exception) {
exception.printStackTrace();
return null;
} finally {
if (statement != null) {
try {
statement.close();
} catch (SQLException exception) {
}
}
}

@Override
public void updatePerson(Person person) throws RemoteException {

System.out.println("Client melakukan proses update");

PreparedStatement statement = null;

try {
statement = DatabaseUtilities.getConnection().prepareStatement(
"UPDATE person SET first_name = ?" +
", last_name = ? , birth_day = ? " +
"WHERE id = ?");

statement.setString(1, person.getFirstName());
statement.setString(2, person.getLastName());
statement.setDate(3, new Date(person.getBirthDay().getTime()));
statement.setLong(4, person.getId());

statement.executeUpdate();

} catch (SQLException exception) {


exception.printStackTrace();
} finally {
if (statement != null) {
try {
statement.close();
} catch (SQLException exception) {
exception.printStackTrace();
}
}
}

}
@Override
public void deletePerson(Long id) throws RemoteException {

System.out.println("Client melakukan proses delete");

PreparedStatement statement = null;

try {

statement = DatabaseUtilities.getConnection().prepareStatement(
"DELETE FROM person WHERE id = ?");

statement.setLong(1, id);

statement.executeUpdate();

} catch (SQLException exception) {


exception.printStackTrace();
} finally {
if (statement != null) {
try {
statement.close();
} catch (SQLException exception) {
exception.printStackTrace();
}
}
}
}

@Override
public Person getPerson(Long id) throws RemoteException {

System.out.println("Client melakukan proses get-by-id");

PreparedStatement statement = null;

try {

statement = DatabaseUtilities.getConnection().prepareStatement(
"SELECT * FROM person WHERE id = ?");

ResultSet result = statement.executeQuery();

Person person = null;


if (result.next()) {
person = new Person();
person.setId(result.getLong("id"));
person.setFirstName(result.getString("first_name"));
person.setLastName(result.getString("last_name"));
person.setBirthDay(result.getDate("birth_day"));
}

result.close();

return person;
} catch (SQLException exception) {
exception.printStackTrace();
return null;
} finally {
if (statement != null) {
try {
statement.close();
} catch (SQLException exception) {
exception.printStackTrace();
}
}
}
}

@Override
public List<Person> getPerson() throws RemoteException {

System.out.println("Client melakukan proses get-all");

Statement statement = null;

try {

statement = DatabaseUtilities.getConnection().createStatement();

ResultSet result = statement.executeQuery("SELECT * FROM person");

List<Person> list = new ArrayList<Person>();

while(result.next()){
Person person = new Person();
person.setId(result.getLong("id"));
person.setFirstName(result.getString("first_name"));
person.setLastName(result.getString("last_name"));
person.setBirthDay(result.getDate("birth_day"));
list.add(person);
}
result.close();

return list;
} catch (SQLException exception) {
exception.printStackTrace();
return null;
} finally {
if (statement != null) {
try {
statement.close();
} catch (SQLException exception) {
exception.printStackTrace();
}
}
}
}
}

- Source code DatabaseUtilities :

package database_server.utilities;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;

public class DatabaseUtilities {

private static Connection connection;

public static Connection getConnection() {

if(connection == null) {

try {
DriverManager.registerDriver(new com.mysql.jdbc.Driver());
connection =
DriverManager.getConnection("jdbc:mysql://localhost:3306/client_server", "root",
"");
} catch (SQLException ex) {
Logger.getLogger(DatabaseUtilities.class.getName()).log(Level.SEVERE,
null, ex);
}
}
return connection;
}
}

Didalam database_client terdapat 3 package. Pada Database_client itu


merupakan aplikasi nya atau program client yang akan dijalankan. Form merupakan
bentuk atau output dari aplikasi client server. TableModelPerson digunakan sebagai
model pada tabel

- Source code Database_client :

package database_client;
import java.rmi.NotBoundException;
import java.rmi.RemoteException;
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
import javax.swing.SwingUtilities;
import sella.service.PersonService;
import database_client.form.From;

public class Database_client {

public static void main(String[] args) throws RemoteException,


NotBoundException {
// TODO code application logic here
Registry registry = LocateRegistry.getRegistry("127.0.0.1", 6789);
PersonService service = (PersonService) registry.lookup("service");

SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
From form = new From(service);
form.setVisible(true);
}
});
}
}

- Source code Form :

package database_client.form;

import sella.Person;
import sella.service.PersonService;
import database_client.model.TableModelPerson;
import java.awt.event.ActionListener;
import java.rmi.RemoteException;
import java.util.Date;
import java.util.List;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
public class From extends javax.swing.JFrame {
private TableModelPerson tableModelPerson = new TableModelPerson();
private PersonService personService;

public From(PersonService personService) {

this.personService = personService;

try {
tableModelPerson.setData(this.personService.getPerson());
} catch (RemoteException exception) {
exception.printStackTrace();
}

initComponents();

tablePerson.setModel(tableModelPerson);
tablePerson.getSelectionModel().addListSelectionListener(new
ListSelectionListener() {

public void valueChanged(ListSelectionEvent e) {


int row = tablePerson.getSelectedRow();
if (row != -1) {
Person person = tableModelPerson.get(row);
textId.setValue(person.getId());
textFirstName.setText(person.getFirstName());
textLastName.setText(person.getLastName());
textBirthDay.setValue(person.getBirthDay());
}
}
});
}

@SuppressWarnings("unchecked")

private void buttonRefreshActionPerformed(java.awt.event.ActionEvent evt) {


// TODO add your handling code here:

try {
List<Person> list = personService.getPerson();
tableModelPerson.setData(list);
}catch (RemoteException exception) {
exception.printStackTrace();
}
}

private void buttonInsertActionPerformed(java.awt.event.ActionEvent evt) {


// TODO add your handling code here:

try {
Person person = new Person();
person.setFirstName(textFirstName.getText());
person.setLastName(textLastName.getText());
person.setBirthDay((Date) textBirthDay.getValue());

Person person1 = personService.insertPerson(person);

tableModelPerson.insert(person1);
}catch(RemoteException exception) {
exception.printStackTrace();
}
}

private void buttonUpdateActionPerformed(java.awt.event.ActionEvent evt) {


// TODO add your handling code here:

try{

int row = tablePerson.getSelectedRow();


if(row == -1) {
return;
}

Person person = tableModelPerson.get(row);


person.setFirstName(textFirstName.getText());
person.setLastName(textLastName.getText());
person.setBirthDay((Date) textBirthDay.getValue());

personService.updatePerson(person);

tableModelPerson.update(row, person);

}catch(RemoteException exception){
exception.printStackTrace();
}
}

private void buttonDeleteActionPerformed(java.awt.event.ActionEvent evt) {


// TODO add your handling code here:

try{
int row = tablePerson.getSelectedRow();
if(row == -1) {
return;
}
Long id = tableModelPerson.get(row).getId();

personService.deletePerson(id);

tableModelPerson.delete(row);
}catch(RemoteException exception){
exception.printStackTrace();
}
}
// Variables declaration - do not modify
private javax.swing.JButton buttonDelete;
private javax.swing.JButton buttonInsert;
private javax.swing.JButton buttonRefresh;
private javax.swing.JButton buttonUpdate;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JLabel jLabel4;
private javax.swing.JPanel jPanel1;
private javax.swing.JPanel jPanel2;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JTable tablePerson;
private javax.swing.JFormattedTextField textBirthDay;
private javax.swing.JTextField textFirstName;
private javax.swing.JFormattedTextField textId;
private javax.swing.JTextField textLastName;
// End of variables declaration
}

- Form Aplikasi :

- Source code TableModelPerson :


package database_client.model;

import java.util.ArrayList;
import java.util.List;
import sella.Person;
import javax.swing.table.AbstractTableModel;
public class TableModelPerson extends AbstractTableModel {
private List<Person> list = new ArrayList<Person>();

public TableModelPerson() {
}
public Person get(int row){
return list.get(row);
}
public void insert(Person person) {
list.add(person);
fireTableDataChanged();
}
public void update(int row, Person person) {
list.set(row, person);
fireTableDataChanged();
}
public void delete(int row) {
list.remove(row);
fireTableDataChanged();
}
public void setData(List<Person> list) {
this.list = list;
fireTableDataChanged();
}

@Override
public String getColumnName(int column) {
switch (column) {
case 0:
return "Id";
case 1:
return "First Name";
case 2:
return "Last Name";
case 3:
return "Birth Day";
default:
return null;
}
}

@Override
public int getRowCount() {
return list.size();
}
@Override
public int getColumnCount() {
return 4;
}
@Override
public Object getValueAt(int rowIndex, int columnIndex) {
switch (columnIndex) {
case 0:
return list.get(rowIndex).getId();
case 1:
return list.get(rowIndex).getFirstName();
case 2:
return list.get(rowIndex).getLastName();
case 3:
return list.get(rowIndex).getBirthDay();
default:
return null;
}
}

}
HASIL :

You might also like