Tutorial CRUD Web Service Server Dan Client Dengan Java
Tutorial CRUD Web Service Server Dan Client Dengan Java
2. Kemudian Buka Netbeans. Buatlah satu buah Project Web Service. Klik File –
New Project – Java Web – Web Application. Beri Project Name Siakad. Next,
gunakan server Glassfish. Kemudian Klik Finish.
package siakad.mahasiswa;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
/**
*
* @author Mr. Hendro Wijayanto, S.Kom, M.Kom
*/
public class koneksiMySQL {
String driver = "com.mysql.jdbc.Driver";
String url = "jdbc:mysql://localhost:3306/siakad";
String usern = "root";
String passw = "";
Connection con;
PreparedStatement ps;
ResultSet rs;
9. Agar data MySQL dapat dipanggil di Web Service, maka dibutuhkan Getter dan
Setter masing-masing data. Caranya, klik kanan pada Package siakad.mahasiswa
– New – Pilih Java Class. Beri Class Name : mhs. Kemudian tuliskan Scriptnya
seperti gambar berikut ini :
package siakad.mahasiswa;
/**
*
* @author Mr. Hendro Wijayanto, S.Kom, M.Kom
*/
public class mhs {
private int nim;
private String nama, jurusan, email, alamat;
10. Setelah itu, Kita akan membuat Method Cread, Read, Update dan Delete di dalam
Class Mahasiswa.java.
11. Untuk Scriptnya seperti Berikut ini :
Method getMahasiswa
@WebMethod(operationName = "getMahasiswa")
public ArrayList<mhs> getDosen() {
ArrayList<mhs> mhs = new ArrayList<>();
try {
con = kon.getCon();
ps = con.prepareStatement("select * from
mahasiswa");
rs = ps.executeQuery();
while (rs.next()) {
mhs mahasiswa = new mhs();
mahasiswa.setNim(rs.getInt("nim"));
mahasiswa.setNama(rs.getString("nama"));
mahasiswa.setJurusan(rs.getString("jurusan"));
mahasiswa.setEmail(rs.getString("email"));
mahasiswa.setAlamat(rs.getString("alamat"));
mhs.add(mahasiswa);
}
} catch (Exception ex) {
System.out.println(ex);
}
return mhs;
}
Method insertMahasiswa
@WebMethod(operationName = "addMahasiswa")
public void addDosen(
@WebParam(name = "nim") int nim,
@WebParam(name = "nama") String nama,
@WebParam(name = "jurusan") String jurusan,
@WebParam(name = "email") String email,
@WebParam(name = "alamat") String alamat
) {
try {
con = kon.getCon();
ps = con.prepareStatement("insert into mahasiswa
value (?,?,?,?,?)");
ps.setInt(1, nim);
ps.setString(2, nama);
ps.setString(3, jurusan);
ps.setString(4, email);
ps.setString(5, alamat);
ps.executeUpdate();
} catch (Exception ex) {
System.out.println(ex.getMessage());
}
}
Method delMahasiswa
@WebMethod(operationName = "delMahasiswa")
public void delMahasiswa(
@WebParam(name = "nim") int nim) {
try {
con = kon.getCon();
ps = con.prepareStatement("delete from mahasiswa
where nim = ?");
ps.setInt(1, nim);
ps.executeUpdate();
} catch (Exception e) {
System.out.println("Failed to remove student
because " + e.toString());
}
}
Method editMahasiswa
@WebMethod(operationName = "editMahasiswa")
public void editMahasiswa(
@WebParam(name = "nim") int nim,
@WebParam(name = "nama") String nama,
@WebParam(name = "jurusan") String jurusan,
@WebParam(name = "email") String email,
@WebParam(name = "alamat") String alamat){
try {
con = kon.getCon();
ps = con.prepareStatement("update mahasiswa set
nama=?,jurusan=?,email=?,alamat=? where nim=?");
ps.setString(1, nama);
ps.setString(2, jurusan);
ps.setString(3, email);
ps.setString(4, alamat);
ps.setInt(5, nim);
ps.executeUpdate();
} catch (Exception e) {
System.out.println("Failed to edit student
because " + e.toString());
}
}
Method tampilMahasiswa
@WebMethod(operationName = "tampilMahasiswa")
public List tampilMahasiswa() {
List daftar = new ArrayList();
try {
Class.forName("com.mysql.jdbc.Driver");
Connection con =
DriverManager.getConnection("jdbc:mysql://localhost:3306/si
akad", "root", "");
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery(sql_daftar);
while (rs.next()) {
daftar.add("<td>" + rs.getInt("nim") +
"</td><td>" + rs.getString("nama") + "</td><td>" +
rs.getString("jurusan") + "</td><td>" +
rs.getString("email") + "</td><td>" + rs.getString("alamat")
+ "</td><tr></tr>");
}
con.close();
} catch (Exception ex) {
System.out.println(ex.getMessage());
}
return daftar;
}
13. Panggil WSDL Siakad ke dalam ClientSiakad. Caranya, klik kanan Project
ClientSiakad – Pilih New – Pilih Web Service Client. Jika tidak menemukan
silakan cari di Other.
14. Kemudian Pilih Next. Pilih Project, dan Browse. Cari server Siakad dan pilih class
Mahasiswa yang didalamnya sudah ada methodnya (Method addMahasiswa,
delMahasiswa, getMahasiswa, editMahasiswa). Kemudian Klik Finish
15. Kemudian langkah selanjutnya adalah membuat Client dengan JSP. Kita akan
desain Halaman JSP agar lebih menarik menggunakan CSS. Ingat matakuliah
Pemrograman Web 1. Ada JSP, ada CSS. Atau mungkin Anda dapat
menggunakan template Bootstrap. Dalam tutorial ini digunakan Bootstrap.
Download terlebih dahulu Bootstrapnya. Setelah Anda mendownload, Extract
Bootstrap di dalam folder Web Pages. Sehingga strukturnya seperti gambar
berikut ini :
16. Buat 1 buah file header.jsp, footer.jsp dan index.jsp di Web Pages Project
ClientSiakad.
Script footer.jsp
<script src="https://code.jquery.com/jquery.js"></script>
<script src="js/bootstrap.min.js"></script>
</body>
</html>
Script index.jsp
<%@include file="header.jsp" %>
<h1>Halaman Mahasiswa</h1>
%@include file="footer.jsp" %
</tr>
</tbody>
</table>
%@include file="footer.jsp" %
<%
try {
siakad.mahasiswa.Mahasiswa_Service
service = new siakad.mahasiswa.Mahasiswa_Service();
siakad.mahasiswa.Mahasiswa port =
service.getMahasiswaPort();
java.util.List<java.lang.Object>
resultMhs = port.tampilMahasiswa();
for (int i = 0; i < resultMhs.size();
i++) {
out.println(resultMhs.get(i));
}
} catch (Exception ex) {
}
%>
</tr>
</tbody>
</table>
</div>
<%@include file="footer.jsp" %>
20. Maka jika index.jsp atau ClientSiakad di running, akan muncul tampilan
21. Tambahkan link button untuk tambah mahasiswa. Tambahkan script berikut diatas
table
<a href="tambah-mhs.jsp"><button class="btn-success">Tambah
Mahasiswa</button></a>
Hasilnya :
22. Karena tombol Tambah Mahasiswa mengarah ke link tambah-mhs.jsp, maka perlu
ditambahkan file tambah-mhs.jsp
<div class="form-group">
<label class="control-label col-sm-
1">Nama</label>
<div class="col-sm-2">
<input type="text" class="form-
control" name="nama">
</div>
</div>
<div class="form-group">
<label class="control-label col-sm-
1">Jurusan</label>
<div class="col-sm-2">
<input type="text" class="form-control"
name="jurusan">
</div>
</div>
<div class="form-group">
<label class="control-label col-sm-
1">Email</label>
<div class="col-sm-2">
<input type="text" class="form-control"
name="email">
</div>
</div>
<div class="form-group">
<label class="control-label col-sm-
1">Alamat</label>
<div class="col-sm-2">
<input type="text" class="form-control"
name="alamat">
</div>
</div>
<button type="submit" class="btn btn-
danger">Simpan</button>
</form>
</div>
<%@include file="footer.jsp" %>
Hasilnya :
<%
try {
siakad.mahasiswa.Mahasiswa_Service service = new
siakad.mahasiswa.Mahasiswa_Service();
siakad.mahasiswa.Mahasiswa port =
service.getMahasiswaPort();
// TODO initialize WS operation arguments here
int nim = 0;
java.lang.String nama = "";
java.lang.String jurusan = "";
java.lang.String email = "";
java.lang.String alamat = "";
port.addMahasiswa(nim, nama, jurusan, email, alamat);
} catch (Exception ex) {
// TODO handle custom exceptions here
}
%>
26. Rubah sedikit Source Codenya sehingga dapat menerima POST dari tambah-
mhs.jsp dan dapat meredirect langsung ke index.jsp jika proses tambah berhasil.
<%
try {
siakad.mahasiswa.Mahasiswa_Service service = new
siakad.mahasiswa.Mahasiswa_Service();
siakad.mahasiswa.Mahasiswa port =
service.getMahasiswaPort();
int nim =
Integer.valueOf(request.getParameter("nim"));
java.lang.String nama =
request.getParameter("nama");
java.lang.String jurusan =
request.getParameter("jurusan");
java.lang.String email =
request.getParameter("email");
java.lang.String alamat =
request.getParameter("alamat");
}
%>
27. Langkah selanjutnya adalah membuat Edit dan Delete. Dalam hal ini, edit dan
Delete bergabung menjadi satu dengan table. Seperti Nampak pada gambar di
bawah ini
28. Agar dapat memunculkan Aksi tersebut, silakan buka Web Service Server Anda.
Buka Project Siakad, Buka class Mahasiswa.java. Kemudian edit pada method
tampilMahasiswa. Sehingga source code berubah menjadi :
@WebMethod(operationName = "tampilMahasiswa")
public List tampilMahasiswa() {
List daftar = new ArrayList();
try {
Class.forName("com.mysql.jdbc.Driver");
Connection con =
DriverManager.getConnection("jdbc:mysql://localhost:3306/si
akad", "root", "");
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery(sql_daftar);
while (rs.next()) {
daftar.add("<td>" + rs.getInt("nim") +
"</td><td>" + rs.getString("nama") + "</td><td>" +
rs.getString("jurusan") + "</td><td>" +
rs.getString("email") + "</td><td>" + rs.getString("alamat")
+ "</td><td><button class=\"btn-info\"><a href=\"edit-
mhs.jsp&nim=" + rs.getString("nim") +
"\">Edit</a></button><br><button class=\"btn-danger\"><a
href=\"hapus-mhs.jsp?nim=" + rs.getString("nim") +
"\">Hapus</a></button></td><tr></tr>");
}
con.close();
} catch (Exception ex) {
System.out.println(ex.getMessage());
}
return daftar;
}
29. Untuk membuat proses hapus, silakan buat 1 buah file JSP di ClientSiakad. Dalam
hal ini dibuat file hapus-mhs.jsp
<%
try {
siakad.mahasiswa.Mahasiswa_Service service = new
siakad.mahasiswa.Mahasiswa_Service();
siakad.mahasiswa.Mahasiswa port =
service.getMahasiswaPort();
// TODO initialize WS operation arguments here
int nim = 0;
port.delMahasiswa(nim);
} catch (Exception ex) {
// TODO handle custom exceptions here
}
%>
31. Rubah sedikit parameter int nim=0, karena fungsi ini akan digunakan untuk
menerima inputan POST berupa hapus mahasiswa berdasarkan nim. Sehingga
scriptnya berubah menjadi :
<%
try {
siakad.mahasiswa.Mahasiswa_Service service = new
siakad.mahasiswa.Mahasiswa_Service();
siakad.mahasiswa.Mahasiswa port =
service.getMahasiswaPort();
}
%>
32. Langkah terakhir adalah membuat proses Edit atau Update. Proses ini akan akan
mengambil data mahasiswa dan menampilkannya ke dalam form untuk di edit.
Sebelum mebuat file edit , rubah terlebih dahulu method getMahasiswa di Web
Service Server (Project Siakad). Sehingga berubah menjadi :
/*Get Mahasiswa*/
@WebMethod(operationName = "getMahasiswa")
public List getMahasiswa(
@WebParam(name = "nim") int nim) {
List mahasiswa = new ArrayList();
try {
Class.forName("com.mysql.jdbc.Driver");
Connection conn =
DriverManager.getConnection("jdbc:mysql://localhost:3306/si
akad", "root", "");
Statement st = conn.createStatement();
con = kon.getCon();
ps = con.prepareStatement("select * from
mahasiswa where nim=?");
ps.setInt(1, nim);
ResultSet rst = ps.executeQuery();
while (rst.next()) {
mahasiswa.add("<div class=\"form-group\">\n"
+
" <label class=\"control-label col-sm-
1\">NIM</label>\n" +
" <div class=\"col-sm-2\">\n" +
" <input type=\"text\" class=\"form-
control\" name=\"nim\" value=\""+rst.getInt("nim")+"\"
readonly=\"true\">\n" +
" </div>\n" +
" </div>\n" +
" \n" +
" <div class=\"form-group\">\n" +
" <label class=\"control-label col-sm-
1\">Nama</label>\n" +
" <div class=\"col-sm-2\">\n" +
" <input type=\"text\" class=\"form-
control\" name=\"nama\"
value=\""+rst.getString("nama")+"\">\n" +
" </div>\n" +
" </div>\n" +
" \n" +
" <div class=\"form-group\">\n" +
" <label class=\"control-label col-sm-
1\">Jurusan</label>\n" +
" <div class=\"col-sm-2\">\n" +
" <input type=\"text\" class=\"form-
control\" name=\"jurusan\"
value=\""+rst.getString("jurusan")+"\">\n" +
" </div>\n" +
" </div>\n" +
" \n" +
" <div class=\"form-group\">\n" +
" <label class=\"control-label col-sm-
1\">Email</label>\n" +
" <div class=\"col-sm-2\">\n" +
" <input type=\"text\" class=\"form-
control\" name=\"email\"
value=\""+rst.getString("email")+"\">\n" +
" </div>\n" +
" </div>\n" +
" \n" +
" <div class=\"form-group\">\n" +
" <label class=\"control-label col-sm-
1\">Alamat</label>\n" +
" <div class=\"col-sm-2\">\n" +
" <input type=\"text\" class=\"form-
control\" name=\"alamat\"
value=\""+rst.getString("alamat")+"\">\n" +
" </div>\n" +
" </div>");
}
} catch (Exception ex) {
System.out.println(ex.getMessage());
}
return mahasiswa;
}
/*Selesai Get Mahasiswa*/
33. Kemudian buatlah sebuah file edit-mhs.jsp di ClientSiakad. Kemudian panggil
WSDL Reference getMahasiswa agar data yang akan di edit dapat tampil di dalam
form :
java.util.List<java.lang.Object> result =
port.getMahasiswa(nim);
for (int i = 0; i < result.size(); i++) {
out.println(result.get(i));
}
} catch (Exception ex) {
}
%>
<button type="submit" class="btn btn-
danger">Edit</button>
</form>
</div>
<%@include file="footer.jsp" %>
<%
try {
siakad.mahasiswa.Mahasiswa_Service service = new
siakad.mahasiswa.Mahasiswa_Service();
siakad.mahasiswa.Mahasiswa port =
service.getMahasiswaPort();
// TODO initialize WS operation arguments here
int nim = 0;
java.lang.String nama = "";
java.lang.String jurusan = "";
java.lang.String email = "";
java.lang.String alamat = "";
port.editMahasiswa(nim, nama, jurusan, email, alamat);
} catch (Exception ex) {
// TODO handle custom exceptions here
}
%>
37. Rubah sedikit source codenya agar dapat menerima masukan dari form edit-
mhs.jsp.
<%
try {
siakad.mahasiswa.Mahasiswa_Service service = new
siakad.mahasiswa.Mahasiswa_Service();
siakad.mahasiswa.Mahasiswa port =
service.getMahasiswaPort();
}
%>
Sebelum di Update
Proses Update
Setelah di Update
39. Terimakasih.
LAMPIRAN
Tampilan Project Siakad (Server)
Tampilan Project ClientSiakad (Client)
Source Code Web Service Mahasiswa
ps.executeUpdate(); ps.executeUpdate();
} catch (Exception e) } catch (Exception e)
{ {
System.out.println("Failed to System.out.println("Failed to
remove student because " + edit student because " +
e.toString()); e.toString());
} }
} }
/*Selesai Hapus /*Selesai Edit
Mahasiswa*/ Mahasiswa*/
/*Edit Mahasiswa*/
@WebMethod(operationName rs.getString("nama") +
= "tampilMahasiswa") "</td><td>" +
public List rs.getString("jurusan") +
tampilMahasiswa() { "</td><td>" +
List daftar = new rs.getString("email") +
ArrayList(); "</td><td>" +
rs.getString("alamat") +
String sql_daftar = "</td><td><a href=\"edit-
"select * from mahasiswa"; mhs.jsp?nim=" +
rs.getInt("nim") + "\"><span
try { class=\"glyphicon glyphicon-
edit\"></span></a><br><a
Class.forName("com.mysql.jdbc href=\"hapus-mhs.jsp?nim=" +
.Driver"); rs.getInt("nim") + "\"><span
Connection con = class=\"glyphicon glyphicon-
DriverManager.getConnection(" remove\"></span></a></td><tr>
jdbc:mysql://localhost:3306/s </tr>");
iakad", "root", ""); }
Statement stmt = con.close();
con.createStatement(); } catch (Exception
ResultSet rs = ex) {
stmt.executeQuery(sql_daftar)
; System.out.println(ex.getMess
while (rs.next()) age());
{ }
return daftar;
daftar.add("<td>" + }
rs.getInt("nim") +
"</td><td>" + }
}
%>
<button type="submit" class="btn btn-
danger">Edit</button>
</form>
</div>
<%@include file="footer.jsp" %>
}
%>
<%
try {
siakad.mahasiswa.Mahasiswa_Service service =
new siakad.mahasiswa.Mahasiswa_Service();
siakad.mahasiswa.Mahasiswa port =
service.getMahasiswaPort();
java.util.List<java.lang.Object> resultMhs =
port.tampilMahasiswa();
for (int i = 0; i < resultMhs.size(); i++) {
out.println(resultMhs.get(i));
}
} catch (Exception ex) {
}
%>
</tr>
</tbody>
</table>
</div>
<%@include file="footer.jsp" %>
}
%>
}
%>
<div class="form-group">
<label class="control-label col-sm-
1">Nama</label>
<div class="col-sm-2">
<input type="text" class="form-
control" name="nama">
</div>
</div>
<div class="form-group">
<label class="control-label col-sm-
1">Jurusan</label>
<div class="col-sm-2">
<input type="text" class="form-control"
name="jurusan">
</div>
</div>
<div class="form-group">
<label class="control-label col-sm-
1">Email</label>
<div class="col-sm-2">
<input type="text" class="form-control"
name="email">
</div>
</div>
<div class="form-group">
<label class="control-label col-sm-
1">Alamat</label>
<div class="col-sm-2">
<input type="text" class="form-control"
name="alamat">
</div>
</div>
<button type="submit" class="btn btn-
danger">Simpan</button>
</form>
</div>
<%@include file="footer.jsp" %>