diff --git b/Servlet_JSP_12S14049/.classpath a/Servlet_JSP_12S14049/.classpath
new file mode 100644
index 0000000..99771d3
--- /dev/null
+++ a/Servlet_JSP_12S14049/.classpath
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="con" path="org.eclipse.jst.j2ee.internal.web.container"/>
+	<classpathentry kind="con" path="org.eclipse.jst.j2ee.internal.module.container"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git b/Servlet_JSP_12S14049/.project a/Servlet_JSP_12S14049/.project
new file mode 100644
index 0000000..451405a
--- /dev/null
+++ a/Servlet_JSP_12S14049/.project
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>Perpustakaan</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.wst.common.project.facet.core.builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.jboss.tools.jst.web.kb.kbbuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.jboss.tools.cdi.core.cdibuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.wst.validation.validationbuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jem.workbench.JavaEMFNature</nature>
+		<nature>org.eclipse.wst.common.modulecore.ModuleCoreNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.wst.common.project.facet.core.nature</nature>
+		<nature>org.jboss.tools.jst.web.kb.kbnature</nature>
+		<nature>org.jboss.tools.cdi.core.cdinature</nature>
+		<nature>org.eclipse.wst.jsdt.core.jsNature</nature>
+	</natures>
+</projectDescription>
diff --git b/Servlet_JSP_12S14049/.settings/.jsdtscope a/Servlet_JSP_12S14049/.settings/.jsdtscope
new file mode 100644
index 0000000..92e666d
--- /dev/null
+++ a/Servlet_JSP_12S14049/.settings/.jsdtscope
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry excluding="**/bower_components/*|**/node_modules/*|**/*.min.js" kind="src" path="WebContent"/>
+	<classpathentry kind="con" path="org.eclipse.wst.jsdt.launching.JRE_CONTAINER"/>
+	<classpathentry kind="con" path="org.eclipse.wst.jsdt.launching.WebProject">
+		<attributes>
+			<attribute name="hide" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="con" path="org.eclipse.wst.jsdt.launching.baseBrowserLibrary"/>
+	<classpathentry kind="output" path=""/>
+</classpath>
diff --git b/Servlet_JSP_12S14049/.settings/org.eclipse.jdt.core.prefs a/Servlet_JSP_12S14049/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..f42de36
--- /dev/null
+++ a/Servlet_JSP_12S14049/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7
+org.eclipse.jdt.core.compiler.compliance=1.7
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.7
diff --git b/Servlet_JSP_12S14049/.settings/org.eclipse.wst.common.component a/Servlet_JSP_12S14049/.settings/org.eclipse.wst.common.component
new file mode 100644
index 0000000..ea3a8bc
--- /dev/null
+++ a/Servlet_JSP_12S14049/.settings/org.eclipse.wst.common.component
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?><project-modules id="moduleCoreId" project-version="1.5.0">
+    <wb-module deploy-name="Perpustakaan">
+        <wb-resource deploy-path="/" source-path="/WebContent" tag="defaultRootSource"/>
+        <wb-resource deploy-path="/WEB-INF/classes" source-path="/src"/>
+        <property name="context-root" value="Perpustakaan"/>
+        <property name="java-output-path" value="/Perpustakaan/bin"/>
+    </wb-module>
+</project-modules>
diff --git b/Servlet_JSP_12S14049/.settings/org.eclipse.wst.common.project.facet.core.xml a/Servlet_JSP_12S14049/.settings/org.eclipse.wst.common.project.facet.core.xml
new file mode 100644
index 0000000..c94023a
--- /dev/null
+++ a/Servlet_JSP_12S14049/.settings/org.eclipse.wst.common.project.facet.core.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<faceted-project>
+  <fixed facet="wst.jsdt.web"/>
+  <installed facet="java" version="1.7"/>
+  <installed facet="jst.web" version="3.1"/>
+  <installed facet="wst.jsdt.web" version="1.0"/>
+</faceted-project>
diff --git b/Servlet_JSP_12S14049/.settings/org.eclipse.wst.jsdt.ui.superType.container a/Servlet_JSP_12S14049/.settings/org.eclipse.wst.jsdt.ui.superType.container
new file mode 100644
index 0000000..3bd5d0a
--- /dev/null
+++ a/Servlet_JSP_12S14049/.settings/org.eclipse.wst.jsdt.ui.superType.container
@@ -0,0 +1 @@
+org.eclipse.wst.jsdt.launching.baseBrowserLibrary
\ No newline at end of file
diff --git b/Servlet_JSP_12S14049/.settings/org.eclipse.wst.jsdt.ui.superType.name a/Servlet_JSP_12S14049/.settings/org.eclipse.wst.jsdt.ui.superType.name
new file mode 100644
index 0000000..05bd71b
--- /dev/null
+++ a/Servlet_JSP_12S14049/.settings/org.eclipse.wst.jsdt.ui.superType.name
@@ -0,0 +1 @@
+Window
\ No newline at end of file
diff --git b/Servlet_JSP_12S14049/.tern-project a/Servlet_JSP_12S14049/.tern-project
new file mode 100644
index 0000000..f030bd1
--- /dev/null
+++ a/Servlet_JSP_12S14049/.tern-project
@@ -0,0 +1,17 @@
+{
+  "plugins": {
+    "guess-types": {
+      
+    },
+    "outline": {
+      
+    },
+    "angular": {
+      
+    }
+  },
+  "libs": [
+    "ecma5",
+    "browser"
+  ]
+}
\ No newline at end of file
diff --git b/Servlet_JSP_12S14049/WebContent/META-INF/MANIFEST.MF a/Servlet_JSP_12S14049/WebContent/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..254272e
--- /dev/null
+++ a/Servlet_JSP_12S14049/WebContent/META-INF/MANIFEST.MF
@@ -0,0 +1,3 @@
+Manifest-Version: 1.0
+Class-Path: 
+
diff --git b/Servlet_JSP_12S14049/WebContent/WEB-INF/lib/mysql-connector-java-5.1.40-bin.jar a/Servlet_JSP_12S14049/WebContent/WEB-INF/lib/mysql-connector-java-5.1.40-bin.jar
new file mode 100644
index 0000000..60bef5c
Binary files /dev/null and a/Servlet_JSP_12S14049/WebContent/WEB-INF/lib/mysql-connector-java-5.1.40-bin.jar differ
diff --git b/Servlet_JSP_12S14049/WebContent/WEB-INF/lib/servlet-api.jar a/Servlet_JSP_12S14049/WebContent/WEB-INF/lib/servlet-api.jar
new file mode 100644
index 0000000..5f288c6
Binary files /dev/null and a/Servlet_JSP_12S14049/WebContent/WEB-INF/lib/servlet-api.jar differ
diff --git b/Servlet_JSP_12S14049/WebContent/WEB-INF/lib/taglibs-standard-impl-1.2.5.jar a/Servlet_JSP_12S14049/WebContent/WEB-INF/lib/taglibs-standard-impl-1.2.5.jar
new file mode 100644
index 0000000..9176777
Binary files /dev/null and a/Servlet_JSP_12S14049/WebContent/WEB-INF/lib/taglibs-standard-impl-1.2.5.jar differ
diff --git b/Servlet_JSP_12S14049/WebContent/WEB-INF/lib/taglibs-standard-spec-1.2.5.jar a/Servlet_JSP_12S14049/WebContent/WEB-INF/lib/taglibs-standard-spec-1.2.5.jar
new file mode 100644
index 0000000..d547867
Binary files /dev/null and a/Servlet_JSP_12S14049/WebContent/WEB-INF/lib/taglibs-standard-spec-1.2.5.jar differ
diff --git b/Servlet_JSP_12S14049/WebContent/WEB-INF/web.xml a/Servlet_JSP_12S14049/WebContent/WEB-INF/web.xml
new file mode 100644
index 0000000..9fd8c44
--- /dev/null
+++ a/Servlet_JSP_12S14049/WebContent/WEB-INF/web.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
+  <display-name>Perpustakaan</display-name>
+  <welcome-file-list>
+    <welcome-file>index.html</welcome-file>
+    <welcome-file>index.htm</welcome-file>
+    <welcome-file>index.jsp</welcome-file>
+    <welcome-file>default.html</welcome-file>
+    <welcome-file>default.htm</welcome-file>
+    <welcome-file>default.jsp</welcome-file>
+  </welcome-file-list>
+</web-app>
\ No newline at end of file
diff --git b/Servlet_JSP_12S14049/WebContent/buku.jsp a/Servlet_JSP_12S14049/WebContent/buku.jsp
new file mode 100644
index 0000000..a8daa78
--- /dev/null
+++ a/Servlet_JSP_12S14049/WebContent/buku.jsp
@@ -0,0 +1,43 @@
+<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
+    pageEncoding="ISO-8859-1"%>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
+<!DOCTYPE HTML>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ 
+<title>Add New Buku</title>
+</head>
+<body>
+    <form action="BukuController" method="post">
+        <fieldset>
+            <div>
+                <label for="idBuku">ID Buku</label> <input type="text"
+                    name="idBuku" value="<c:out value="${buku.idBuku}" />"
+                    readonly="readonly" placeholder="ID Buku" />
+            </div>
+            <div>
+                <label for="judulBuku">Judul Buku</label> <input type="text"
+                    name="judulBuku" value="<c:out value="${buku.judulBuku}" />"
+                    placeholder="Judul Buku" />
+            </div>
+            <div>
+                <label for="pengarangBuku">Pengarang Buku</label> <input type="text"
+                    name="pengarangBuku" value="<c:out value="${buku.pengarangBuku}" />"
+                    placeholder="Pengarang Buku" />
+            </div>
+            <div>
+                <label for="isbn">ISBN</label> <input type="text" name="isbn"
+                    value="<c:out value="${buku.isbn}" />" placeholder="ISBN" />
+            </div>
+            <div>
+                <label for="jumlah">Jumlah Halaman</label> <input type="text" name="jumlah"
+                    value="<c:out value="${buku.jumlah}" />" placeholder="Jumlah" />
+            </div>
+            <div>
+                <input type="submit" value="Submit" />
+            </div>
+        </fieldset>
+    </form>
+</body>
+</html>
\ No newline at end of file
diff --git b/Servlet_JSP_12S14049/WebContent/index.jsp a/Servlet_JSP_12S14049/WebContent/index.jsp
new file mode 100644
index 0000000..44b08c4
--- /dev/null
+++ a/Servlet_JSP_12S14049/WebContent/index.jsp
@@ -0,0 +1,12 @@
+<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
+    pageEncoding="ISO-8859-1"%>
+<!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=ISO-8859-1">
+<title>Perpustakaan</title>
+</head>
+<body>
+    <jsp:forward page="/BukuController?action=listBuku" />
+</body>
+</html>
\ No newline at end of file
diff --git b/Servlet_JSP_12S14049/WebContent/listBuku.jsp a/Servlet_JSP_12S14049/WebContent/listBuku.jsp
new file mode 100644
index 0000000..ef471e4
--- /dev/null
+++ a/Servlet_JSP_12S14049/WebContent/listBuku.jsp
@@ -0,0 +1,42 @@
+<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
+    pageEncoding="ISO-8859-1"%>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
+<!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=ISO-8859-1">
+<title>Show All Buku</title>
+</head>
+<body>
+    <table border=1>
+        <thead>
+            <tr>
+                <th>ID Buku</th>
+                <th>Judul Buku</th>
+                <th>Pengarang Buku</th>
+                <th>ISBN</th>
+                <th>Jumlah</th>
+                <th colspan="2">Action</th>
+            </tr>
+        </thead>
+        <tbody>
+            <c:forEach items="${bukus}" var="buku">
+                <tr>
+                    <td><c:out value="${buku.idBuku}" /></td>
+                    <td><c:out value="${buku.judulBuku}" /></td>
+                    <td><c:out value="${buku.pengarangBuku}" /></td>
+                    <td><c:out value="${buku.isbn}" /></td>
+                    <td><c:out value="${buku.jumlah}" /></td>
+                    <td><a
+                        href="BukuController?action=edit&idBuku=<c:out value="${buku.idBuku}"/>">Edit</a></td>
+                    <td><a
+                        href="BukuController?action=delete&idBuku=<c:out value="${buku.idBuku}"/>">Delete</a></td>
+                </tr>
+            </c:forEach>
+        </tbody>
+    </table>
+    <p>
+        <a href="BukuController?action=insert">Add Buku</a>
+    </p>
+</body>
+</html>
\ No newline at end of file
diff --git b/Servlet_JSP_12S14049/bin/com/perpus/controller/BukuController.class a/Servlet_JSP_12S14049/bin/com/perpus/controller/BukuController.class
new file mode 100644
index 0000000..fa52d0a
Binary files /dev/null and a/Servlet_JSP_12S14049/bin/com/perpus/controller/BukuController.class differ
diff --git b/Servlet_JSP_12S14049/bin/com/perpus/dao/BukuDAO.class a/Servlet_JSP_12S14049/bin/com/perpus/dao/BukuDAO.class
new file mode 100644
index 0000000..3d645ce
Binary files /dev/null and a/Servlet_JSP_12S14049/bin/com/perpus/dao/BukuDAO.class differ
diff --git b/Servlet_JSP_12S14049/bin/com/perpus/dao/BukuDAOImplementation.class a/Servlet_JSP_12S14049/bin/com/perpus/dao/BukuDAOImplementation.class
new file mode 100644
index 0000000..30af72e
Binary files /dev/null and a/Servlet_JSP_12S14049/bin/com/perpus/dao/BukuDAOImplementation.class differ
diff --git b/Servlet_JSP_12S14049/bin/com/perpus/model/Buku.class a/Servlet_JSP_12S14049/bin/com/perpus/model/Buku.class
new file mode 100644
index 0000000..64e1606
Binary files /dev/null and a/Servlet_JSP_12S14049/bin/com/perpus/model/Buku.class differ
diff --git b/Servlet_JSP_12S14049/bin/com/perpus/util/DBUtil.class a/Servlet_JSP_12S14049/bin/com/perpus/util/DBUtil.class
new file mode 100644
index 0000000..0296462
Binary files /dev/null and a/Servlet_JSP_12S14049/bin/com/perpus/util/DBUtil.class differ
diff --git b/Servlet_JSP_12S14049/bin/db.properties a/Servlet_JSP_12S14049/bin/db.properties
new file mode 100644
index 0000000..b08943e
--- /dev/null
+++ a/Servlet_JSP_12S14049/bin/db.properties
@@ -0,0 +1,4 @@
+driver=com.mysql.jdbc.Driver
+url=jdbc:mysql://localhost:3306/perpustakaan
+user=root
+password=
\ No newline at end of file
diff --git b/Servlet_JSP_12S14049/build/classes/com/perpus/controller/BukuController.class a/Servlet_JSP_12S14049/build/classes/com/perpus/controller/BukuController.class
new file mode 100644
index 0000000..f4a6f51
Binary files /dev/null and a/Servlet_JSP_12S14049/build/classes/com/perpus/controller/BukuController.class differ
diff --git b/Servlet_JSP_12S14049/build/classes/com/perpus/dao/BukuDAO.class a/Servlet_JSP_12S14049/build/classes/com/perpus/dao/BukuDAO.class
new file mode 100644
index 0000000..d65a501
Binary files /dev/null and a/Servlet_JSP_12S14049/build/classes/com/perpus/dao/BukuDAO.class differ
diff --git b/Servlet_JSP_12S14049/build/classes/com/perpus/dao/BukuDAOImplementation.class a/Servlet_JSP_12S14049/build/classes/com/perpus/dao/BukuDAOImplementation.class
new file mode 100644
index 0000000..52a38ff
Binary files /dev/null and a/Servlet_JSP_12S14049/build/classes/com/perpus/dao/BukuDAOImplementation.class differ
diff --git b/Servlet_JSP_12S14049/build/classes/com/perpus/model/Buku.class a/Servlet_JSP_12S14049/build/classes/com/perpus/model/Buku.class
new file mode 100644
index 0000000..a585c7b
Binary files /dev/null and a/Servlet_JSP_12S14049/build/classes/com/perpus/model/Buku.class differ
diff --git b/Servlet_JSP_12S14049/build/classes/com/perpus/util/DBUtil.class a/Servlet_JSP_12S14049/build/classes/com/perpus/util/DBUtil.class
new file mode 100644
index 0000000..297f975
Binary files /dev/null and a/Servlet_JSP_12S14049/build/classes/com/perpus/util/DBUtil.class differ
diff --git b/Servlet_JSP_12S14049/build/classes/db.properties a/Servlet_JSP_12S14049/build/classes/db.properties
new file mode 100644
index 0000000..b08943e
--- /dev/null
+++ a/Servlet_JSP_12S14049/build/classes/db.properties
@@ -0,0 +1,4 @@
+driver=com.mysql.jdbc.Driver
+url=jdbc:mysql://localhost:3306/perpustakaan
+user=root
+password=
\ No newline at end of file
diff --git b/Servlet_JSP_12S14049/perpustakaan.sql a/Servlet_JSP_12S14049/perpustakaan.sql
new file mode 100644
index 0000000..2b6e64d
--- /dev/null
+++ a/Servlet_JSP_12S14049/perpustakaan.sql
@@ -0,0 +1,26 @@
+/*
+SQLyog - Free MySQL GUI v5.0
+Host - 5.5.5-10.1.16-MariaDB : Database - perpustakaan
+*********************************************************************
+Server version : 5.5.5-10.1.16-MariaDB
+*/
+
+
+create database if not exists `perpustakaan`;
+
+USE `perpustakaan`;
+
+/*Table structure for table `buku` */
+
+DROP TABLE IF EXISTS `buku`;
+
+CREATE TABLE `buku` (
+  `idBuku` int(11) NOT NULL AUTO_INCREMENT,
+  `judulBuku` varchar(255) DEFAULT NULL,
+  `pengarangBuku` varchar(255) DEFAULT NULL,
+  `isbn` varchar(255) DEFAULT NULL,
+  `jumlah` int(100) DEFAULT NULL,
+  PRIMARY KEY (`idBuku`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+/*Data for the table `buku` */
diff --git b/Servlet_JSP_12S14049/src/com/perpus/controller/BukuController.java a/Servlet_JSP_12S14049/src/com/perpus/controller/BukuController.java
new file mode 100644
index 0000000..16507e5
--- /dev/null
+++ a/Servlet_JSP_12S14049/src/com/perpus/controller/BukuController.java
@@ -0,0 +1,79 @@
+package com.perpus.controller;
+
+import java.io.IOException;
+
+import javax.servlet.RequestDispatcher;
+import javax.servlet.ServletException;
+import javax.servlet.annotation.WebServlet;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import com.perpus.dao.BukuDAO;
+import com.perpus.dao.BukuDAOImplementation;
+import com.perpus.model.Buku;
+
+@WebServlet("/BukuController")
+public class BukuController extends HttpServlet 
+{
+	private BukuDAO dao;
+    private static final long serialVersionUID = 1L;
+    public static final String LIST_BUKU = "/listBuku.jsp";
+    public static final String INSERT_OR_EDIT = "/buku.jsp";
+    
+ 
+    public BukuController() {
+        dao = new BukuDAOImplementation();
+    }
+
+	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 
+	{
+		String forward = "";
+        String action = request.getParameter( "action" );
+ 
+        if( action.equalsIgnoreCase( "delete" ) ) {
+            forward = LIST_BUKU;
+            int idBuku = Integer.parseInt( request.getParameter("idBuku") );
+            dao.deleteBuku(idBuku);
+            request.setAttribute("bukus", dao.getAllBukus() );
+        }
+        else if( action.equalsIgnoreCase( "edit" ) ) {
+            forward = INSERT_OR_EDIT;
+            int idBuku = Integer.parseInt( request.getParameter("idBuku") );
+            Buku buku = dao.getBukuById(idBuku);
+            request.setAttribute("buku", buku);
+        }
+        else if( action.equalsIgnoreCase("insert") ) {
+            forward = INSERT_OR_EDIT;
+        }
+        else {
+            forward = LIST_BUKU;
+            request.setAttribute("bukus", dao.getAllBukus());
+        }
+        RequestDispatcher view = request.getRequestDispatcher( forward );
+        view.forward(request, response);
+    }
+
+	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 
+	{
+		Buku buku = new Buku();
+        buku.setJudulBuku(request.getParameter("judulBuku"));
+        buku.setPengarangBuku(request.getParameter("pengarangBuku"));
+        buku.setIsbn(request.getParameter("isbn"));
+        buku.setJumlah(Integer.parseInt(request.getParameter("jumlah")));
+        String idBuku = request.getParameter("idBuku");
+ 
+        if(idBuku == null || idBuku.isEmpty() )
+        {
+            dao.addBuku(buku);
+        }
+            else 
+        {
+            buku.setIdBuku(Integer.parseInt(idBuku));
+            dao.updateBuku(buku);
+        }
+        RequestDispatcher view = request.getRequestDispatcher(LIST_BUKU);
+        request.setAttribute("students", dao.getAllBukus());
+        response.sendRedirect("index.jsp");
+	}
+}
diff --git b/Servlet_JSP_12S14049/src/com/perpus/dao/BukuDAO.java a/Servlet_JSP_12S14049/src/com/perpus/dao/BukuDAO.java
new file mode 100644
index 0000000..d8fbd12
--- /dev/null
+++ a/Servlet_JSP_12S14049/src/com/perpus/dao/BukuDAO.java
@@ -0,0 +1,14 @@
+package com.perpus.dao;
+
+import java.util.List;
+
+import com.perpus.model.Buku;
+
+public interface BukuDAO 
+{
+	public void addBuku(Buku buku);
+    public void deleteBuku(int idBuku);
+    public void updateBuku(Buku buku);
+    public List<Buku> getAllBukus();
+    public Buku getBukuById(int idBuku);
+}
diff --git b/Servlet_JSP_12S14049/src/com/perpus/dao/BukuDAOImplementation.java a/Servlet_JSP_12S14049/src/com/perpus/dao/BukuDAOImplementation.java
new file mode 100644
index 0000000..e418072
--- /dev/null
+++ a/Servlet_JSP_12S14049/src/com/perpus/dao/BukuDAOImplementation.java
@@ -0,0 +1,132 @@
+package com.perpus.dao;
+
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.sql.Statement;
+import java.util.ArrayList;
+import java.util.List;
+
+import com.perpus.model.Buku;
+import com.perpus.util.DBUtil;
+
+public class BukuDAOImplementation implements BukuDAO 
+{
+	private Connection conn;
+	
+	public BukuDAOImplementation() 
+	{
+		conn = DBUtil.getConnection();
+	}
+
+	@Override
+	public void addBuku(Buku buku) 
+	{
+		try
+		{
+			String query = "insert into buku (judulBuku, pengarangBuku, isbn, jumlah) values (?,?,?,?)";
+			PreparedStatement preparedStatement = conn.prepareStatement(query);
+			preparedStatement.setString(1, buku.getJudulBuku());
+			preparedStatement.setString(2, buku.getPengarangBuku());
+			preparedStatement.setString(3, buku.getIsbn());
+			preparedStatement.setInt(4, buku.getJumlah());
+			preparedStatement.executeUpdate();
+			preparedStatement.close();
+		} catch (SQLException e)
+		{
+			e.printStackTrace();
+		}
+	}
+
+	@Override
+	public void deleteBuku(int idBuku) 
+	{
+		try
+		{
+			String query = "delete from buku where idBuku=?";
+			PreparedStatement preparedStatement = conn.prepareStatement(query);
+			preparedStatement.setInt(1, idBuku);
+			preparedStatement.executeUpdate();
+			preparedStatement.close();
+		} catch (SQLException e)
+		{
+			e.printStackTrace();
+		}
+	}
+
+	@Override
+	public void updateBuku(Buku buku) 
+	{
+		try
+		{
+			String query = "update buku set judulBuku=?, pengarangBuku=?, isbn=?, jumlah=? where idBuku=?";
+			PreparedStatement preparedStatement = conn.prepareStatement(query);
+			preparedStatement.setString(1, buku.getJudulBuku());
+			preparedStatement.setString(2, buku.getPengarangBuku());
+			preparedStatement.setString(3, buku.getIsbn());
+			preparedStatement.setInt(4, buku.getJumlah());
+			preparedStatement.setInt(5, buku.getIdBuku());
+			preparedStatement.executeUpdate();
+			preparedStatement.close();
+		} catch (SQLException e)
+		{
+			e.printStackTrace();
+		}
+	}
+
+	@Override
+	public List<Buku> getAllBukus() 
+	{
+		List<Buku> bukus = new ArrayList<Buku>();
+		try 
+		{
+            Statement statement = conn.createStatement();
+            ResultSet resultSet = statement.executeQuery("select * from buku");
+            while( resultSet.next() ) 
+            {
+                Buku buku = new Buku();
+                buku.setIdBuku( resultSet.getInt( "idBuku" ) );
+                buku.setJudulBuku( resultSet.getString( "judulBuku" ) );
+                buku.setPengarangBuku( resultSet.getString( "pengarangBuku" ) );
+                buku.setIsbn( resultSet.getString( "isbn" ) );
+                buku.setJumlah( resultSet.getInt( "jumlah" ) );
+                bukus.add(buku);
+            }
+            resultSet.close();
+            statement.close();
+        } catch (SQLException e) 
+		{
+            e.printStackTrace();
+        }
+        return bukus;
+	}
+
+	@Override
+	public Buku getBukuById(int idBuku) 
+	{
+		Buku buku = new Buku();
+        try 
+        {
+            String query = "select * from buku where idBuku=?";
+            PreparedStatement preparedStatement = conn.prepareStatement(query);
+            preparedStatement.setInt(1, idBuku);
+            ResultSet resultSet = preparedStatement.executeQuery();
+            while(resultSet.next()) 
+            {
+                buku.setIdBuku(resultSet.getInt("idBuku"));
+                buku.setJudulBuku(resultSet.getString("judulBuku"));
+                buku.setPengarangBuku(resultSet.getString("pengarangBuku"));
+                buku.setIsbn(resultSet.getString("isbn"));
+                buku.setJumlah( resultSet.getInt("jumlah"));
+            }
+            resultSet.close();
+            preparedStatement.close();
+        } catch (SQLException e) 
+        {
+            e.printStackTrace();
+        }
+        return buku;
+    }
+		
+}
diff --git b/Servlet_JSP_12S14049/src/com/perpus/model/Buku.java a/Servlet_JSP_12S14049/src/com/perpus/model/Buku.java
new file mode 100644
index 0000000..389c0b3
--- /dev/null
+++ a/Servlet_JSP_12S14049/src/com/perpus/model/Buku.java
@@ -0,0 +1,45 @@
+package com.perpus.model;
+
+public class Buku 
+{
+	private int idBuku;
+	private String judulBuku;
+	private String pengarangBuku;
+	private String isbn;
+	private int jumlah;
+	public int getIdBuku() {
+		return idBuku;
+	}
+	public void setIdBuku(int idBuku) {
+		this.idBuku = idBuku;
+	}
+	public String getJudulBuku() {
+		return judulBuku;
+	}
+	public void setJudulBuku(String judulBuku) {
+		this.judulBuku = judulBuku;
+	}
+	public String getPengarangBuku() {
+		return pengarangBuku;
+	}
+	public void setPengarangBuku(String pengarangBuku) {
+		this.pengarangBuku = pengarangBuku;
+	}
+	public String getIsbn() {
+		return isbn;
+	}
+	public void setIsbn(String isbn) {
+		this.isbn = isbn;
+	}
+	public int getJumlah() {
+		return jumlah;
+	}
+	public void setJumlah(int jumlah) {
+		this.jumlah = jumlah;
+	}
+	@Override
+	public String toString() {
+		return "Buku [idBuku=" + idBuku + ", judulBuku=" + judulBuku + ", pengarangBuku=" + pengarangBuku + ", isbn="
+				+ isbn + ", jumlah=" + jumlah + "]";
+	}
+}
diff --git b/Servlet_JSP_12S14049/src/com/perpus/util/DBUtil.java a/Servlet_JSP_12S14049/src/com/perpus/util/DBUtil.java
new file mode 100644
index 0000000..e87fd11
--- /dev/null
+++ a/Servlet_JSP_12S14049/src/com/perpus/util/DBUtil.java
@@ -0,0 +1,48 @@
+package com.perpus.util;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.SQLException;
+import java.util.Properties;
+ 
+public class DBUtil {
+ 
+    private static Connection conn;
+ 
+    public static Connection getConnection() {
+        if( conn != null )
+            return conn;
+ 
+        InputStream inputStream = DBUtil.class.getClassLoader().getResourceAsStream( "/db.properties" );
+        Properties properties = new Properties();
+        try {
+            properties.load( inputStream );
+            String driver = properties.getProperty( "driver" );
+            String url = properties.getProperty( "url" );
+            String user = properties.getProperty( "user" );
+            String password = properties.getProperty( "password" );
+            Class.forName( driver );
+            conn = DriverManager.getConnection( url, user, password );
+        } catch (IOException e) {
+            e.printStackTrace();
+        } catch (ClassNotFoundException e) {
+            e.printStackTrace();
+        } catch (SQLException e) {
+            e.printStackTrace();
+        }
+ 
+        return conn;
+    }
+ 
+    public static void closeConnection( Connection toBeClosed ) {
+        if( toBeClosed == null )
+            return;
+        try {
+            toBeClosed.close();
+        } catch (SQLException e) {
+            e.printStackTrace();
+        }
+    }
+}
\ No newline at end of file
diff --git b/Servlet_JSP_12S14049/src/db.properties a/Servlet_JSP_12S14049/src/db.properties
new file mode 100644
index 0000000..b08943e
--- /dev/null
+++ a/Servlet_JSP_12S14049/src/db.properties
@@ -0,0 +1,4 @@
+driver=com.mysql.jdbc.Driver
+url=jdbc:mysql://localhost:3306/perpustakaan
+user=root
+password=
\ No newline at end of file