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


Tidak ada komentar:

Posting Komentar