More

    Membuat Shopping Cart dengan Java Servlet dan JSP

    Pada kesempatan kali ini saya akan memberikan tutorial tentang membuat shopping cart dengan java servlet, hal ini diperlukan untuk anda yang ingin membuat toko online dengan java web.

    Mungkin anda pernah mengunjungi sebuah situs toko online seperti tokopedia, lazada dan bukalapak. Dimana, mereka menggunakan sistem keranjang (cart) untuk setiap pemesanan yang dilakukan oleh pengunjung/pembeli.

    Sistem shopping cart ini memang paling banyak di gunakan tidak hanya toko online diindonesia tetapi juga banyak digunakan situs-situs luar lainnya seperti amazon, ebay dsb.

    Langsung saja ke tutorial cara membuat shopping cart dengan servlets dan JSP.

    Membuat Shopping Cart dengan Java Servlet dan JSP

    Prerequisite :

    • Download library JSTL disini.
    • Download library standard disini.
    • Buat database dengan nama Latihan_addcart, lalu import dengan database berikut disini

    Setelah di download semua, sekarang buat project baru di IDE anda, kali ini saya menggunakan netbeans sebagai editor.

      1. Buat project di netbeans, klik File – New Project buat nama dengan latihan_addCartDinamic 
      2. Lalu ekstrak library yang sudah didownload tadi dan jadikan satu dalam sebuah folder libmembuat shopping cart
      3. Lalu sekarang import keduanya dengan cara klik kanan pada Libraries lalu klik Add Jar/Folder lalu masukkan kedua library tersebut.
      4. buat 2 buat Source Packages baru dengan nama net.tutorialpedia.cart , net.tutorialpedia.Model , net.tutorialpedia.Controller. Lihat gambar!membuat shopping cart
      5. Pada package net.tutorialpedia.model buat sebuah java class baru dengan nama KoneksiDB. Lalu isi dengan code berikut ini :
        package net.tutorialpedia.model;
        
        import java.sql.Connection;
        import java.sql.DriverManager;
        import java.sql.ResultSet;
        import java.sql.Statement;
        
        /**
         *
         * @author TutorialPedia.NET
         */
        public class KoneksiDB {
            private Connection conn;
            private Statement st;
        
            public static void ambilKoneksi() {
                try {
                    String db = "jdbc:mysql://localhost:3306/latihan_addcart";
                    String user = "root";
                    String pass = "";
                    Class.forName("com.mysql.jdbc.Driver");
                    Connection con = DriverManager.getConnection(db, user, pass);
                } catch (Exception x) {
                    System.out.println("Terjadi kesalahan ambil koneksi : " + x);
                }
            }
        
            public void koneksi() {
                try {
                    String db = "jdbc:mysql://localhost:3306/latihan_addcart";
                    String user = "root";
                    String pass = "";
                    Class.forName("com.mysql.jdbc.Driver");
                    conn = DriverManager.getConnection(db, user, pass);
                    st = conn.createStatement();
                } catch (Exception x) {
        
                    System.out.println("Terjadi kesalahan koneksi : " + x);
                }
            }
        
            public void diskonek(ResultSet rs) {
                try {
                    if (rs != null) {
                        rs.close();
                    }
                    st.close();
                    conn.close();
                } catch (Exception x) {
                    System.out.println("Terjadi kesalahan diskoneksi : " + x);
                }
            }
        
            public ResultSet ambilData(String sql) {
                ResultSet rs = null;
                try {
                    koneksi();
                    rs = st.executeQuery(sql);
                } catch (Exception x) {
                    System.out.println("Terjadi kesalahan ambil data : " + x);
                }
                return rs;
            }
        
        }
        

        kode diatas digunakan untuk membuat koneksi antar program dan database

      6. Lalu buat java class baru pada  net.tutorialpedia.Model dengan nama ProdukModel lalu isi kode dengan berikut :
        package net.tutorialpedia.model;
        
        import java.sql.ResultSet;
        import java.util.ArrayList;
        import java.util.List;
        
        /**
         *
         * @author TutorialPedia.NET
         */
        public class ProdukModel {
            String id_produk,kd_produk,nm_produk,harga_produk,qty;
            KoneksiDB db = null;
        
            public ProdukModel() {
                db = new KoneksiDB();
            }
            
            public String getId_produk() {
                return id_produk;
            }
        
            public void setId_produk(String id_produk) {
                this.id_produk = id_produk;
            }
        
            public String getKd_produk() {
                return kd_produk;
            }
        
            public void setKd_produk(String kd_produk) {
                this.kd_produk = kd_produk;
            }
        
            public String getNm_produk() {
                return nm_produk;
            }
        
            public void setNm_produk(String nm_produk) {
                this.nm_produk = nm_produk;
            }
        
            public String getHarga_produk() {
                return harga_produk;
            }
        
            public void setHarga_produk(String harga_produk) {
                this.harga_produk = harga_produk;
            }
        
            public String getQty() {
                return qty;
            }
        
            public void setQty(String qty) {
                this.qty = qty;
            }
            
            public List tampil() {
                List data = new ArrayList();
                ResultSet rs = null;
                try {
                    String sql = "select * from produk order by kd_produk asc";
                    rs = db.ambilData(sql);
        
                    while (rs.next()) {
                        ProdukModel pm = new ProdukModel();
                        pm.setId_produk(rs.getString("id_produk"));
                        pm.setKd_produk(rs.getString("kd_produk"));
                        pm.setNm_produk(rs.getString("nm_produk"));
                        pm.setHarga_produk(rs.getString("harga_produk"));
                        pm.setQty(rs.getString("qty"));
                        data.add(pm);
                    }
                    db.diskonek(rs);
                } catch (Exception a) {
                    System.out.println("Terjadi kesalahaan tampil produk, pada :\n" + a);
                }
                return data;
            }
        }

         

      7. Sekarang kita beralih ke package Controller, buat sebuah servlet baru dengan nama CartController lalu isi kodenya dengan berikut ini :
        package net.tutorialpedia.controller;
        
        import net.tutorialpedia.cart.CartBean;
        import java.io.IOException;
        import javax.servlet.ServletException;
        import javax.servlet.http.HttpServlet;
        import javax.servlet.http.HttpServletRequest;
        import javax.servlet.http.HttpServletResponse;
        import javax.servlet.http.HttpSession;
         
        public class CartController extends HttpServlet {
          
         //public static final String addToCart
          
         public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
         
          String strAction = request.getParameter("action");
           
           
          if(strAction!=null && !strAction.equals("")) {
           if(strAction.equals("add")) {
            addToCart(request);
           } else if (strAction.equals("Update")) {
            updateCart(request);
           } else if (strAction.equals("Delete")) {
            deleteCart(request);
           }
          }
          response.sendRedirect("Cart.jsp");
         }
          
         protected void deleteCart(HttpServletRequest request) {
          HttpSession session = request.getSession();
          String strItemIndex = request.getParameter("itemIndex");
          CartBean cartBean = null;
           
          Object objCartBean = session.getAttribute("cart");
          if(objCartBean!=null) {
           cartBean = (CartBean) objCartBean ;
          } else {
           cartBean = new CartBean();
          }
          cartBean.deleteCartItem(strItemIndex);
         }
          
         protected void updateCart(HttpServletRequest request) {
          HttpSession session = request.getSession();
          String strQty = request.getParameter("qty");
          String strItemIndex = request.getParameter("itemIndex");
          
          CartBean cartBean = null;
           
          Object objCartBean = session.getAttribute("cart");
          if(objCartBean!=null) {
           cartBean = (CartBean) objCartBean ;
          } else {
           cartBean = new CartBean();
          }
          cartBean.updateCartItem(strItemIndex, strQty);
         }
          
         protected void addToCart(HttpServletRequest request) {
          HttpSession session = request.getSession();
          String strKd_produk = request.getParameter("kd_produk");
          String strNm_produk = request.getParameter("nm_produk");
          String strHarga = request.getParameter("harga");
          String strQty = request.getParameter("qty");
           
          CartBean cartBean = null;
           
          Object objCartBean = session.getAttribute("cart");
         
          if(objCartBean!=null) {
           cartBean = (CartBean) objCartBean ;
          } else {
           cartBean = new CartBean();
           session.setAttribute("cart", cartBean);
          }
           
          cartBean.addCartItem(strKd_produk, strNm_produk, strHarga, strQty);
         }
         
        }
        

         

      8. Sekarang beralih ke package net.tutorialpedia.cart lalu buat sebuah java class baru dengan nama CartBean, isi dengan kode berikut ini:
        package net.tutorialpedia.cart;
        
        /**
         *
         * @author barbarian
         */
        import java.util.ArrayList;
         
         
        public class CartBean {
         private ArrayList alCartItems = new ArrayList();
         private int dblOrderTotal ;
          
         public int getLineItemCount() {
          return alCartItems.size();
         }
          
         public void deleteCartItem(String strItemIndex) {
          int iItemIndex = 0;
          try {
           iItemIndex = Integer.parseInt(strItemIndex);
           alCartItems.remove(iItemIndex - 1);
           calculateOrderTotal();
          } catch(NumberFormatException nfe) {
           System.out.println("Error while deleting cart item: "+nfe.getMessage());
           nfe.printStackTrace();
          }
         }
          
         public void updateCartItem(String strItemIndex, String strQty) {
          int dblTotalHarga = 0;
          int dblHarga = 0;
          int iQty = 0;
          int iItemIndex = 0;
          CartItemBean cartItem = null;
          try {
           iItemIndex = Integer.parseInt(strItemIndex);
           iQty = Integer.parseInt(strQty);
           if(iQty>0) {
            cartItem = (CartItemBean)alCartItems.get(iItemIndex-1);
            dblHarga = (int) cartItem.getHarga();
            dblTotalHarga= dblHarga*iQty;
            cartItem.setQuantity(iQty);
            cartItem.setTotalHarga(dblTotalHarga);
            calculateOrderTotal();
           }
          } catch (NumberFormatException nfe) {
           System.out.println("Error while updating cart: "+nfe.getMessage());
           nfe.printStackTrace();
          }
           
         }
          
         public void addCartItem(String strKd_produk, String strNm_produk,
        String strHarga, String strQty) {
          int dblTotalHarga = 0;
          int dblHarga = 0;
          int iQty = 0;
          CartItemBean cartItem = new CartItemBean();
          try {
           dblHarga = Integer.parseInt(strHarga);
           iQty = Integer.parseInt(strQty);
           if(iQty>0) {
            dblTotalHarga = dblHarga*iQty;
            cartItem.setKd_produk(strKd_produk);
            cartItem.setNm_produk(strNm_produk);
            cartItem.setHarga(dblHarga);
            cartItem.setQuantity(iQty);
            cartItem.setTotalHarga(dblTotalHarga);
            alCartItems.add(cartItem);
            calculateOrderTotal();
           }
            
          } catch (NumberFormatException nfe) {
           System.out.println("Error while parsing from String to primitive types: "+nfe.getMessage());
           nfe.printStackTrace();
          }
         }
          
         public void addCartItem(CartItemBean cartItem) {
          alCartItems.add(cartItem);
         }
          
         public CartItemBean getCartItem(int iItemIndex) {
          CartItemBean cartItem = null;
          if(alCartItems.size()>iItemIndex) {
           cartItem = (CartItemBean) alCartItems.get(iItemIndex);
          }
          return cartItem;
         }
          
         public ArrayList getCartItems() {
          return alCartItems;
         }
         public void setCartItems(ArrayList alCartItems) {
          this.alCartItems = alCartItems;
         }
         public double getOrderTotal() {
          return dblOrderTotal;
         }
         public void setOrderTotal(int dblOrderTotal) {
          this.dblOrderTotal = dblOrderTotal;
         }
          
         protected void calculateOrderTotal() {
          int dblTotal = 0;
          for(int counter=0;counter<alCartItems.size();counter++) {
           CartItemBean cartItem = (CartItemBean) alCartItems.get(counter);
           dblTotal+=cartItem.getTotalHarga();
            
          }
          setOrderTotal(dblTotal);
         }
         
        }

         

      9. Tambahkan java class baru di package yang sama dengan CartBean.java buatlah dengan nama CartItemBean.java lalu isi dengan kode berikut:
        package net.tutorialpedia.cart;
        
        public class CartItemBean {
            private String strKd_produk;
            private String strNm_produk;
            private int dblHarga;
            private int iQty;
            private int dblTotalHarga;
             
            public String getKd_produk() {
                return strKd_produk;
            }
            public void setKd_produk(String strKd_produk) {
                this.strKd_produk = strKd_produk;
            }
            public String getNm_produk() {
                return strNm_produk;
            }
            public void setNm_produk(String strNm_produk) {
                this.strNm_produk = strNm_produk;
            }
            public double getHarga() {
                return dblHarga;
            }
            public void setHarga(int dblHarga) {
                this.dblHarga = dblHarga;
            }
            public int getQty() {
                return iQty;
            }
            public void setQuantity(int qty) {
                iQty = qty;
            }
            public double getTotalHarga() {
                return dblTotalHarga;
            }
            public void setTotalHarga(int dblTotalHarga) {
                this.dblTotalHarga =  dblTotalHarga;
            }
        }
        

         

      10. Sekarang kita sudah selesai dengan Model dan juga Controllernya langkah berikutnya adalah kita akan membuat view nya pada halaman JSP (Java Server Pages). Apa itu jsp? Baca: Pengertian JSP (Java Server Pages)
      11. untuk view cukup dengan 2 buah halaman jsp ini saja yaitu index.jsp dan Cart.jsp dimana index.jsp berfungsi untuk menampilkan daftar barang, dan Cart.jsp untuk menampilkan barang apa saja yang sudah ditambahkan/dibeli. Klik index.jsp lalu masukkan kode berikut ini :
        <%@page import="java.util.List"%>
        <%@page import="java.util.ArrayList"%>
        <%@page import="net.tutorialpedia.model.ProdukModel"%>
        <%@page contentType="text/html" pageEncoding="UTF-8"%>
        <!DOCTYPE html>
        <html>
            <head>
                <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
                <title>Latihan AddCart | TutorialPedia.NET</title>
            </head>
            <body>
                <h2>Daftar Produk</h2>
        
                            <%
                                ProdukModel pm = new ProdukModel();
                                List<ProdukModel> data = new ArrayList<ProdukModel>();
                                String ket = request.getParameter("ket");
                                if (ket == null) {
                                    data = pm.tampil();
                                }
                                for (int x = 0; x < data.size(); x++) {
                            %>
                <table width="75%" border="1">
                    <tr>
        
                        <td>
        
        
                            <form name="ModelDetail" method="POST" action="CartController">
        
                                Kode Produk : <%=data.get(x).getKd_produk()%> <input type="hidden" name="kd_produk" value="<%=data.get(x).getKd_produk()%>"><br>
                                Nama Produk : <%=data.get(x).getNm_produk()%><input type="hidden" name="nm_produk" value="<%=data.get(x).getNm_produk()%>"><br>
                                Harga : <%=data.get(x).getHarga_produk()%> <input type="hidden" name="harga" value="<%=data.get(x).getHarga_produk()%>"><br>
                                Stok : <%=data.get(x).getQty()%> <input type="hidden" name="harga" value="<%=data.get(x).getQty()%>"><br>
        
                                Quantity :<input type="text" name="qty" value="1"/><br><br>
                                <input type="hidden" name="action" value="add">
                                <input type="submit" name="addToCart" value="Add To Cart">
                            </form> 
                          
        
        
                        </td>
        
                    </tr>
                </table>
          <% }%>
            </body>
        </html>
        

         

      12. Untuk Cart.jsp tambahkan kode berikut:
        <%@page contentType="text/html" pageEncoding="UTF-8"%>
        <!DOCTYPE html>
        <html>
            <head>
                <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
                <title>Latihan AddCart | TutorialPedia.NET</title>
            </head>
            <body>
                <%@ taglib uri='http://java.sun.com/jsp/jstl/core' prefix='c'%>
                <h1>Keranjang</h1>
        
                <table width="75%" border="1">
                    <tr>
                        <td>Kode Produk</td>
                        <td>Nama Produk</td>               
                        <td>Quantity</td>
                        <td>Harga</td>
                        <td>Total</td>                
                    </tr>
                    <jsp:useBean id="cart" scope="session" class="net.tutorialpedia.cart.CartBean" />
                    <c:if test="${cart.lineItemCount==0}">
                        <tr>
                            <td colspan="4"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">- Cart is currently empty -<br/>
                        </tr>
                    </c:if>
                    <c:forEach var="cartItem" items="${cart.cartItems}" varStatus="counter">
                        <form name="item" method="POST" action="CartController">
                            <tr>
                                <td><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><b><c:out value="${cartItem.kd_produk}"/></b><br/></td>
                                <td>  <c:out value="${cartItem.nm_produk}"/></font></td>
                                <td>
                                    <input type='hidden' name='itemIndex' value='<c:out value="${counter.count}"/>'>
                                    <input type='text' name="qty" value='<c:out value="${cartItem.qty}"/>' size='2'> 
                                    <input type="submit" name="action" value="Update">
                                    <input type="submit" name="action" value="Delete">
                                </td>
                                <td><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Rp. <c:out value="${cartItem.harga}"/></font></td>
                                <td><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Rp. <c:out value="${cartItem.totalHarga}"/></font></td>
                            </tr>
                        </form>
                    </c:forEach>
                    <tr>
                        <td colspan="2"> </td>
                        <td> </td>
                        <td></td>
                        <td><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Subtotal: Rp. <c:out value="${cart.orderTotal}"/></font></td>
                    </tr>
                </table>
                    <p><a href="index.jsp" >Continue Shopping</a> </p>
                    <p><a href="#" >Checkout</a></p>
            </body>
        </html>

         

    Sekarang coba run project anda dengan cara klik kanan pada project Latihan_addCartDinamic – klik run.

    Jika terdapat error seperti pada gambar berikut, itu dikarenakan kita belum mengimport library MySQL.membuat shopping cart

    Cara import library MySQ

    klik kanan pada libraries lalu klik Add Library cara libray MySQL JDBC Driver lalu klik Add Library membuat shopping cart

    Sekarang coba klik run.

    Error tersebut sudah tidak muncul lagi, dan berikut ini adalah tampilan halaman depan.membuat shopping cart

    ketika kita mencoba memilih produk yang diinginkan lalu memasukkan jumlah quantity yang diinginkan, maka dia akan tersimpan sementara pada halaman Cart.jsp

    membuat shopping cart

    Membuat shopping cart seperti ini hampir sama dengan shopping cart pada umumnya, hanya saja ini versi paling simple yang bisa anda pelajari.

    Demikian Membuat Shopping Cart dengan Java Servlet dan JSP.

    Recent Articles

    [td_block_21]

    Related Articles

    9 Comments

    1. Gan Saya mau bertanya di dalam barang kan terdapat stok, seharusnya kita hanya bisa membeli barang dengan stok yang tersedia dan tidak melebihi stok, dan langsung mengurangi stok pada database mysql

    2. org.apache.jasper.JasperException: PWC6033: Error in Javac compilation for JSP

      PWC6199: Generated servlet error:
      source value 1.5 is obsolete and will be removed in a future release

      PWC6199: Generated servlet error:
      target value 1.5 is obsolete and will be removed in a future release

      PWC6199: Generated servlet error:
      To suppress warnings about obsolete options, use -Xlint:-options.

      PWC6199: Generated servlet error:
      package net.tutorialpedia.model does not exist

      PWC6197: An error occurred at line: 20 in the jsp file: /index.jsp
      PWC6199: Generated servlet error:
      cannot find symbol
      symbol: class ProdukModel
      location: class org.apache.jsp.index_jsp

      PWC6197: An error occurred at line: 20 in the jsp file: /index.jsp
      PWC6199: Generated servlet error:
      cannot find symbol
      symbol: class ProdukModel
      location: class org.apache.jsp.index_jsp

      PWC6197: An error occurred at line: 20 in the jsp file: /index.jsp
      PWC6199: Generated servlet error:
      cannot find symbol
      symbol: class ProdukModel
      location: class org.apache.jsp.index_jsp

      PWC6197: An error occurred at line: 20 in the jsp file: /index.jsp
      PWC6199: Generated servlet error:
      cannot find symbol
      symbol: class ProdukModel
      location: class org.apache.jsp.index_jsp

      kalau errornya begitu kenapa gan?

    3. saya kok error bergini ya ?
      Terjadi kesalahaan tampil produk, pada :
      java.lang.NullPointerException
      sudah tak cari” referensi belum selai, apanya itu gan?

    Leave A Reply

    Please enter your comment!
    Please enter your name here

    This site uses Akismet to reduce spam. Learn how your comment data is processed.

    Dapatkan konten terbaik dari kami!