Minggu, 26 Juli 2015

Session

PENGERTIAN
Session merupakan fasilitas penyimpanan pada server untuk mengidentifikasi client. Session dikirim pertama kali oleh server ketika client melakukan request. Session disimpan di sisi server. Pada request – request selanjutnya yang berasal dari client yang sama, client akan tetap berada dalam session yang sama selama session tersebut valid

  • Session memiliki waktu hidup di server.
  • Session dapat diakhiri atas permintaan user. Session otomatis akan berakhir ketika kita menutup browser. Tapi waktu hidup server bisa juga diatur oleh server. Tidak ada batasan waktu bagi session, bisa dalam hitungan detik, menit, hari bulan bahkan bertahun – tahun.
  • Mungkin kita pernah login ke email kita, tapi sebelum kita logout, kita sudah tutup browser kita. Saat kita membuka email kita, kita disuruh login lagi. Itu karena server sudah lupa dengan session kita. Namun ada juga email yang langsung masuk ke account kita, meski kita sudah menutup browser-nya. Itu karena session kita masih aktif sehingga server masih mengingat kita.
PROSES SESSION
  • Pertama-tama browser melakukan request ke server 
  • Server mengetahui IP client,kemudian memberikan datas ession yang akan dikirim lagi ke client dalam bentuk sessionID
  • Untuk interaksi selanjutnya client mengirim session ID tersebut ke server 
  • Server menggunakan sessionID ini untuk mendapatkan dataclient yang disimpan didatabase server

PEMBUATAN SESSION


Untuk mendapatkan Session saat ini atau menciptakan session baru :
                HttpSession session = request.getSession( )

Di java untuk memanipulasi session kita menggunakan HttpSession.

Untuk menyimpan data di session
                               session.setAttribute(NamaSession, value)

  • Mengambil data Session

Untuk membaca session, JSP menyediakan metode bernama getAtribute() yang dipanggil melalui variable session. Anda bisa memperoleh semua sessiondengan cara seperti berikut :

               session.getAttribute(NamaSession)

  • Menghapus Session

session.removeAttribute (NamaSession);
session.invalidate ( );

                Dengan method invalidate( ) server akan melepaskan semua objek yang berkaitan dan melupakan session. Default waktu session di java adalah 30 menit atau tergantung setingan server di web.xml. Jika selama 30 menit tidak ada request otomatis session akan berakhir.

  • Objek Session
Sebagai contoh apabila kita ingin menyimpan data dalam session dapat dilakukan dengan kode:
               session.setAttribute(”namaku”,”Kamu”);

Dan untuk mendapatkan data tersebut kembali dapat dilakukan dengan kode seperti berikut :
                String nm = (String) session.getAttribute(”namaku”);

Lalu apabila kita ingin menghapus data tersebut dapat dilakukan dengan kode berikut.
                session.removeAttribute(”namaku”);

CONTOH SESSION

  • FormLogin.html

output :

pertama melakukan login

  • OlahLogin.java

try  {
            /* TODO output your page here. You may use following sample code. */
            final String loginAdmin="Administrator";
            final String pwdAdmin="ppp";
            final String loginUser1="user1";
            final String pwdUser1="uuu";
            final String loginUser2="user2";
            final String pwdUser2="eee";
            
            String user=request.getParameter("user");
            String password =request.getParameter("password");
            
            RequestDispatcher control;
            
            if(user.equals(loginAdmin)&&password.equals(pwdAdmin)){
                HttpSession session=request.getSession();
                LoginData data=new LoginData();
                data.setUserName(user);
                data.setGroup(1);
                session.setAttribute("loginData", data);
                control=request.getRequestDispatcher("/admin.jsp");
            }
            else if(user.equals(loginUser1)&&password.equals(pwdUser1)){
                HttpSession session=request.getSession();
                LoginData data=new LoginData();
                data.setUserName(user);
                data.setGroup(2);
                session.setAttribute("loginData", data);
                control=request.getRequestDispatcher("/User.jsp");
            }
            else if(user.equals(loginUser2)&&password.equals(pwdUser2)){
                HttpSession session=request.getSession();
                LoginData data=new LoginData();
                data.setUserName(user);
                data.setGroup(2);
                session.setAttribute("loginData", data);
                control=request.getRequestDispatcher("/User.jsp");
            }
            else{
            control=request.getRequestDispatcher("/errorLogin.jsp");
            }
            control.forward(request, response);
        }
        finally{
            out.close();
        }
    }

merupakan halaman untuk seleksi

  • LoginData.java
public class LoginData {
    private String userName;
    private int group;
    
    public String getUserName(){
        return userName;
    }
    public void setUserName(String string){
        userName=string;
    }
    public int getGroup(){
        return group;
    }
    public void setGroup(int i){
        group=i;
    }
}

  • admin.jsp
<% role.LoginData login=(role.LoginData)
        session.getAttribute("loginData");
%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>
       <% if(login==null){
           %>
           anda belum login
           <% }else if(login.getGroup()!=1){ %>
           login anda tidak berhak masuk ke halaman ini
           <% } else { %>
           halaman admin
           <% } %>
       
    </body>
</html>

output :

  • user.jsp
<% role.LoginData login=(role.LoginData)
        session.getAttribute("loginData"); %>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>
        <% if(login==null){
           %>
           anda belum login
           <% }else if(login.getGroup()!=2){ %>
           login anda tidak berhak masuk ke halaman ini
           <% } else { %>
           halaman user
           <% } %>
    </body>
</html>

output :

  • ErrorLogin.jsp

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>
        <h1>
            salah login/password</h1>
    </body>
</html>

output :

note :
session, cookies dan input type digunakan untuk menyembunyikan informasi. perbedaannya :
1. cookie : informasi disimpan di browser (client) 
2. session : informasi disimpan di server

persamaan cookie dan session :
1. butuh id (identitas)
2. tidak perlu login berulang

tetapi kekurangan cookie dan sesion : tidak ada privasi


Cookies

Pengertian


Cookies adalah struktur data kecil yang digunakan oleh web server untuk mengirim data ke browser client. Data ini disimpan oleh browser, dan dalam beberapa kondisi browser mengembalikan data tersebut kembali ke web server.

Cookies atau bisa disebut sebagai HTTP cookiesweb cookies, atau browser cookies adalah data/informasi yang diciptakan oleh suatu website untuk disimpan di web browser, ketika user sedang menjelajahi website tersebut. Cookies yang telah disimpan pada browser bisa diambil untuk memberitahu website tentang aktivitas user pada waktu sebelumnya. Cookies diciptakan supaya website bisa mengetahui aktivitas yang telah dilakukan si user pada waktu sebelumnya. Aktifitas ini misalnya mengklik suatu tombol, login, atau   halaman mana yang telah dibuka oleh user pada bulan bahkan tahun lalu.

Cookies juga bisa saja menyimpan Informasi diri Anda seperti nama, alamat e-mail, alamat rumah atau kantor, nomor telepon yang dapat digunakan untuk mengidentifikasi atau mengontak Anda. Ini hanya bisa terjadi apabila Anda memberikan Informasi didalam sebuah situs Web.

Fungsi Cookies 

  • Membantu website untuk "mengingat" siapa kita dan mengatur preferences yang sesuai sehingga apabila user kembali mengunjungi website tersebut akan langsung dikenali.
  • Menghilangkan kebutuhan untuk me-register ulang di web site tersebut saat mengakses lagi tersebut (site tertentu saja), cookies membantu proses login user ke dalam web server tersebut.
  • Memungkinkan website untuk menelusuri pola web surfing user dan mengetahui situs favorit yang sering dikunjunginya.

Jenis Cookies

  • Non persistent (session) cookies. Suatu cookies yang akan hilang sewaktu user menutup browser dan biasanya digunakan pada  'shopping carts' di toko belanja online untuk menelusuri item-item yang dibeli,
  • Persistent cookies. Diatur oleh situs-situs portal, banner / media iklan situs dan lainnya yang ingin tahu ketika user kembali mengunjungi site mereka. (misal dengan cara memberikan opsi ”Remember Me” saat login). File file ini tersimpan di hardisk user.

Kedua tipe cookies ini menyimpan informasi mengenai URL atau domain name dari situs yang dikunjungi user dan beberapa kode yang mengindikasikan halaman apa saja yang sudah dikunjungi. Cookies dapat berisi informasi pribadi user, seperti nama dan alamat email, Akan tetapi dapat juga user memberikan informasi ke website tersebut melalui proses registrasi. Dengan kata lain, cookies tidak akan dapat "mencuri" nama dan alamat email kecuali diberikan oleh user. Namun demikian, ada kode tertentu (malicious code) yang dibuat misalnya dengan ActiveX control, yang dapat mengambil informasi dari komputer tanpa sepengetahuan user.

Batasan Cookies

  • 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.

Tujuan Pembuatan Cookies
Digunakan untuk mengidentifikasi user, seperti:

  • Penggunaan ‘Keep me logged in’ pada saat login ke website facebook.com maka kketika kita buka website itu lagi, kita langsung masuk ke halaman website tersebut tanpa melakukan login
  • Penggunaan pada website e-commerce yaitu saat user membeli barang dan menambahnya ke keranjang belanja, lalu dia lanjutkan belanja dan menambahkan lagi barang yang mau dibeli, nah bagaimana aplikasi e-commerce tersebut tahu bahwa barang ini akan ditambahkan ke keranjang belanja user siapa? Disinilah gunanya Cookie yaitu aplikasi e-commerce tadi melihat cookie dari header yang dikirimkan

Cara Pembuatan Cookies


Sebuah coookie dapat diciptakan dengan menggunakan kelas coookie (terdapat pada paket javax.servlet.http). 
                Cookie nama_objek = new Cookie (“nama_cookie”, “nilai_cookie”);      

Keterangan:
nama_cookie berupa string yang menyatakan nama cookie dan
nilai_cookie menyatakan nilai yang akan disimpan pada nama cookie.

Nama cookie tidak boleh mengandung karakter-karakter berikut :Spasi-putih [] () = , “ / ? @ : ;

Selanjutnya, objek cookie yang terbentuk perlu dikirimkan melalui objek implicitresponse,
dengan memangggil metodeaddCoookie().
response.addCookie(nama_objek);

Jadi untuk membuat Cookie maka kita harus membuat objeknya terlebih dahulu, lalu baru kita tambahkan objek Cookie tersebut ke HTTP response.

  • mengambil nilai cookie

Untuk membaca cookie yang terdapat pada klien, JSP menyediakan metode bernama getCookies() yang dipanggil melalui variable bernama request. Metode ini memberikan nilai balik berupa array berkelas Cookie. Anda bisa memperoleh semua cookie dengan cara seperti berikut :
                Cookie nama_array[] = request.getCookies();

Keterangan:
Request.getCookies(); kode ini digunakan untuk mengambil semua Cookies dari header HTTP Request.

nama_array adalah variable array yang berkelas Cookie. Selanjutnya variable ini diisi dengan seluruh cookie yang dihasilkan oleh request.getCookies().

Untuk mendapatkan sebuah cookie dengan indeks i, anda bisa menggunakan pernyataan seperti berikut ini :
                Cookie = nama_array[i];

Variabel cookie perlu dideklarasikan terlebih dahulu :
                Cookie cookie;
Dengan menggunakan metode getName() untuk memperoleh nama cookie dan menggunakan metode getValue() untuk memperoleh isi cookie.

  • Mengatur Usia Cookie

Untuk menentukan waktu kadaluwarsa atau usia cookie bias dilakukan dengan menggunakan metode setMaxAge(). 
                nama_objek.setMaxAge(int usia);

Parameter usia dalam satuan detik menyatakan berapa lama cookie bersangkutan bertahan sebelum masa kadaluwarsa.

Contoh mengatur waktu kadaluwarsa 1 jam dimulai sekarang dengan cara memberikan perintah sebagai berikut :
               nama_objek.setMaxAge(3600);

  • Menghapus Cookie

Cookie dapat dihapus dengan memanggil metode setMaxAge() dan dengan menyertakan argument berupa angka nol.
                Cookie nama_objek = new Cookie(“nama_cookie”,””);
                nama_objek.setMaxAge(0);
                response.addCookie(cookie);

  • Mengganti nilai Cookie

Untuk mengganti isi suati cookie, anda cukup membuat cookie dengan nama yang sama tetapi dengan isi yang baru.
                Cookie nama_objek = new Cookie(“nama_cookie”, “new value”);
                response.addCookie(nama_objek);


Contoh Cookie

  • BuatCookie.jsp
<html>
<head>
<title>Cookie</title>
</head>
<body>
<%
Cookie cNama1 = new Cookie("nama1","Latifah Hannum" );
Cookie cNama2 = new Cookie("nama2","solah" );
Cookie cNama3 = new Cookie("nama3","Erika Prima Dewi" );
Cookie cNama4 = new Cookie("nama4","tetti" );
Cookie cNama5 = new Cookie("nama5","asus" );
response.addCookie(cNama1);
response.addCookie(cNama2);
response.addCookie(cNama3);
response.addCookie(cNama4);
response.addCookie(cNama5);
out.println("Lima buah Cookie telah dibuat");
%>
</body>
</html>

disini kita membuat cookie. dimana ada 5 cookie dengan nama : cNama1, cNama2, cNama3, cNama4, cNama5. fungsi addCookiee untuk menambah cookie

  • Bacacookie.jsp

<html>
<head>
<title>Membaca Cookie</title>
</head>
<body>
<%
Cookie dafCookie[] = request.getCookies();
if (dafCookie != null) {
Cookie cookie;
out.println("<TABLE BORDER=\"1\">");
out.println("<TR><TH>Cookie</TH><TH>Isi </TH></TR>");
for (int i=0; i < dafCookie.length; i++) {
cookie = dafCookie[i];
out.println("<TR><TD>" + cookie.getName() + "</TD><TD>" + cookie.getValue() + "</TD></TR>");
}
out.println("</TABLE>");
}
%>
</body>

  • UsiaCookie.jsp

<html>
<head>
<title>Usia Cookie</title>
</head>
<body>
<%
Cookie cNama = new Cookie("nama","Latifah Hannum");
cNama.setMaxAge(3600);
response.addCookie(cNama);
out.println("Coookie dengan usia 1 jam telah dibentuk");
%>
</body>
</html>

kita dapat mengatur usia cookie untuk cookie tertentu dengan cara setMaxAge

  • HapusCookie.jsp

<%
Cookie cookie = new Cookie("nama1","");
cookie.setMaxAge(0);
response.addCookie(cookie);
%>
<html>
<head>
<title>Menghapus Cookie</title>
</head>
<body>
Cookie nama1 telah dihapus <BR>
melihat semua isi cookie <BR>
klik <A HREF="bacacookie.jsp">Disini</A>
</body>
</html>

disini kita menghapus cookie nama1 sehingga cNama1 tidak ada lagi ditabel cookie

  • UbahCookie.jsp

<%
Cookie cNama1 = new Cookie("namabaru", "Viona Sarah");
response.addCookie(cNama1);
out.println("Coookie nama baru telah diubah");
%>
<html>
<head>
<title>Ubah Coookie</title>
</head>
<body>
</body>


cookie cNama1 yang telah dihapus tidak ada lagi didalam cookie. Jika kita ingin menampilkan cookie cNama1 dengan value yang berbeda nama kita dapat membuat seperti coding diatas 

terlihat bahwa cookie cNama2 - cNama5 masih ada, yang berbeda dari pertama kita melihat BacaCookie.jsp ialah terdapat namabaru,nama dan nama1 sudah tidak ada lagi. nama1 telah dihapus sehingga tidak ada lagi. namabaru merupakan nama1 yang telah dirubah sedangkan nama merupakan cookie yang berbeda dengan cNama1 tetapi valuenya sama. Pada nama kita mengatur usia cookie


note :
session, cookies dan input type digunakan untuk menyembunyikan informasi. perbedaannya :
1. cookie : informasi disimpan di browser (client) 
2. session : informasi disimpan di server

persamaan cookie dan session :
1. butuh id (identitas)
2. tidak perlu login berulang

tetapi kekurangan cookie dan sesion : tidak ada privasi