Apa itu cookie? Yang jelas bukan sejenis cokelat ya.😛 Cookie adalah suatu informasi yang dikirimkan oleh server ke client (web-browser). Di browser, cookie akan disimpan (tergantung settingan bowsernya juga apakah mengijinkan cookie atau tidak) dan suatu saat nanti dapat dikirimkan kembali ke server. Lalu apakah cookie berbahaya ? Saya pernah membaca beberapa artikel yang mengatakan bahwa cookie itu berbahaya. Namun dalam kenyataannya tidaklah seperti itu. Meskipun cookie merupakan suatu mekanisme bagi server untuk menyimpan informasi di client, pada kenyataannya terdapat beberapa batasan. Batasan2 tersebut antara lain sebagai berikut :

  • Suatu client hanya dapat menampung 300 cookie.
  • Suatu server hanya bisa mengirim 20 cookie ke suatu client.
  • Sebuah cookie memiliki ukuran maksimal 4 Kb, sehingga total space hard disk yang digunakan cookie hanya mencapai 1,2 Mb.
  • Sebuah cookie hanya dapat dibaca dan diubah oleh server dari domain dimana cookie tersebut berasal.
  • Sebuah cookie hanya dapat berisi data berupa teks dan tidak bisa berupa data biner.

Sekarang langsung saja kita buat codingnya. Seperti biasa buat sebuah new Java Web project dengan menggunakan netbeans kalian. Lalu ubah file index.jsp menjadi seperti ini

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!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=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>
        <a href="doCheckCookie.do">Cek browser apakah mendukung cookie atau tidak</a> <br>
        <a href="doCreateCookie.do">Buat cookie</a> <br>
        <a href="doSeeCookie.do">Lihat cookie</a> <br>
    </body>
    <%
        String cek = (String) request.getAttribute("cek");
        String hsl = "Browser ini tidak mendukung cookie";
        if(cek!=null)
        {
            Cookie[] cekCookie = request.getCookies();
            if(cekCookie!=null)
            {
                Cookie c1;
                for(int i=0; i< cekCookie.length; i++)
                {
                    c1 = cekCookie[i];
                    if(c1.getName().equals("test") && c1.getValue().equals("testing cookie"))
                    {
                        hsl="Browser ini mendukung cookie";
                        break;
                    }
                }
            }
    %>
        <script type="text/javascript">
            alert('<%=hsl%>');
        </script>
    <%
        }
    %>

    <%
        String msg = (String) request.getAttribute("msg");
        if(msg!=null)
        {
    %>
    <script type="text/javascript">
        alert('<%=msg%>');
    </script>
    <%
        }
    %>

</html>

 

Pada halaman index.jsp terdiri dari 3 menu, menu pertama yaitu Cek browser apakah mendukung cookie atau tidak berfungsi untuk mengecek apakah browser yang digunakan mendukung cookies atau tidak. Cara mengeceknya sebenarnya sederhana, saat user mengklik menu tersebut maka di servlet yang dituju akan membuat sebuah cookie. Lalu saat di-redirect ke halaman index.jsp, disini dilakukan pengambilan cookie. Jika tidak ada cookie yang dibuat di servlet tersebut maka sudah dipastikan browser tidak mendukung cookie. Tampilannya jika menu pertama diklik adalah seperti ini Sekarang buatlah sebuah class CheckCookie tersebut

package com.maniakjava.action;

import java.io.IOException;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class CheckCookie extends HttpServlet
{
     public void doGet(HttpServletRequest request, HttpServletResponse response)
             throws IOException, ServletException
     {
        Cookie cookie = new Cookie("test","testing cookie");
        response.addCookie(cookie);
        request.setAttribute("cek", "cek");
        RequestDispatcher rd = request.getRequestDispatcher("index.jsp");
        rd.forward(request, response);
     }
}
 

Sekarang coba jalankan menu ketiga terlebih dahulu, maka tampilannya akan menjadi seperti ini
Cookie test adalah cookie yang sudah kita buat di menu pertama, sedangkan cookie kedua dan ketiga merupakan cookie yang dibuat secara otomatis oleh server. Code untuk class menu ketiga adalah seperti ini

package com.maniakjava.action;

import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class SeeCookie extends HttpServlet
{

     public void doGet(HttpServletRequest request, HttpServletResponse response)
             throws IOException, ServletException

     {         
        response.setContentType("text/html; charset=UTF-8");
        PrintWriter out = response.getWriter();
        Cookie[] allCookie = request.getCookies();
        Cookie[] cookie = new Cookie[allCookie.length];
        
        if(allCookie==null)
        {
            request.setAttribute("msg", "Tidak ada cookie yang tercipta");
            RequestDispatcher rd = request.getRequestDispatcher("index.jsp");
            rd.forward(request, response);
        }
        else
        {
           for(int i=0; i<allCookie.length; i++)
            {
                cookie[i]= allCookie[i];
                out.print("Nama Cookie : " + cookie[i].getName());
                out.print("<br>Nilai Cookie : " + cookie[i].getValue());
                out.println("<br><br>");
            }
        }

     }
}
 

Berikutnya code class untuk menu nomor 2, yaitu buat cookie adalah seperti ini

 package com.maniakjava.action;

import java.io.IOException;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class CreateCookie extends HttpServlet
{

     public void doGet(HttpServletRequest request, HttpServletResponse response)
             throws IOException, ServletException

     {
        Cookie cookie1 = new Cookie("site","maniakjava");
        Cookie cookie2 = new Cookie("name","secret");
        cookie1.setMaxAge(60*60); //valid selama 1 jam
        cookie2.setMaxAge(60*60); //valid selama 1 jam
        response.addCookie(cookie1);
        response.addCookie(cookie2);
        request.setAttribute("msg", "Cookie sudah dibuat");
        RequestDispatcher rd = request.getRequestDispatcher("index.jsp");
        rd.forward(request, response);
     }
}

Sekarang coba jalankan menu kedua, lalu jalankan kembali menu ketiga. Maka 2 cookie dengan nama site dan name akan muncul. Lalu untuk cookie site dan name, saya set masa berlakunya hanya selama 1 jam. Jadi coba saja 1 jam kemudian kalian langsung jalankan menu ketiga, maka cookie site dan name tidak akan muncul lagi.

Secara default, suatu cookie hanya berlaku selama browser belum ditutup. Artinya, ketika browser ditutup maka cookie yang tidak diset MaxAgenya akan dihapus. Nah supaya cookie tetap terdaftar di suatu client meskipun browser sudah ditutup adalah dengan menggunakan method setMaxAge, seperti contoh di atas.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s