Menerapkan Session dan Cookie

  Menerapkan Session dan Cookie Aplikasi Web Login Kita akan mencoba membuat aplikasi web “Login” menggunakan web server Netbeans dan JSP.

  Langkah–langkahnya :

  1. Buatlah sebuah tabel bernama Login di Sql Server 2005 dengan kolom id, username dan password. Pastikan kolom id bertipe integer dan identity serta password bertipe nvarchar(50).

  2. Buat sebuah projek bernama Login dan buat file Login_Utama.jsp sebagai berikut, yang menampilkan kotak input serta button submit, jika button submit ditekan akan dikirim form

  login.jsp menggunakan method POST.

  <%@include file="header.jsp"%> <html><head> <title>Form Login <%=nama_server%></title> </head> <body bgcolor="yellow"> <form name="form1" method="post" action="login.jsp"> <font color=green><h1 align=center><strong >Server : <%=nama_server%></strong></h1></font><br> <h3> Mohon masukkan Nama dan Password Anda</h3><br> Username : <input name="idk" type="text" id="idk"><br> Password : <input name="sandi" type="password" id="sandi"><br> <input type="submit" name="Submit" value="Login"><br>Mau ikutan ?<a href="daftar.jsp">Daftar disini</a> <% String pesanerror=request.getParameter("pesanerror"); if(pesanerror==null) { pesanerror=""; } %> <%=pesanerror%> </form> </body> <h5>Copyright Binus Students (Aulia's group) and Www.Widodo.Com 2007</h5> </html>

  Pada program diatas, karena kita menggunakan sintask sql, maka paket java.sql.* harus disertakan. Program juga menyertakan file header.jsp yang berisi informasi koneksi database menggunakan pernyataan :

  <%@include file="header.jsp"%> Program juga akan menampilkan nama server kita dengan pernyataan :

  <h1 align="center"><strong>Server < %= nama_server%></h1> 2. Setelah itu, buat form login.jsp untuk melakukan proses login ke database sql server.

  <%@include file="header.jsp" %> <%@ page import="java.sql.*" errorPage=”error.jsp”%>

  String idk=request.getParameter("idk"); if(idk==null) idk=""; String sandi=request.getParameter("sandi"); if(sandi==null) sandi=""; hasil_query=statement_sql.executeQuery("select * from login"); String idk_sql=null; String sandi_sql=null; boolean login=false; while(hasil_query.next()) { idk_sql=hasil_query.getString("username"); sandi_sql=hasil_query.getString("password"); if(idk.equals(idk_sql) && sandi.equals(sandi_sql)) { session.setAttribute("idk", idk);//buat session login=true;//set jadi true break; } } %> <% if(login) { %> <jsp:forward page="main.jsp"> <jsp:param name="link" value="home" /> </jsp:forward> <% } else { %> <jsp:forward page="main.jsp" > <jsp:param name="pesanerror" value="Anda gagal, periksa username dan password anda." /> </jsp:forward> <% } %> <% statement_sql.close(); koneksi_sql.close(); %> Pada program diatas, biasanya untuk menampilkan pesan error jika terjadi error pada dokumen, digunakan property errorPage yang akan memanggil file error.jsp buatan kita. Program diatas akan membandingkan apakah usename dan password yang dimasukkan user ada di table user denga pernyataan sebagai berikut : hasil_query=statement_sql.executeQuery("select * from login");

  3. Setelah itu, anda harus membuat file pendukung untuk koneksi yang terdiri dari file header.jsp dan

  buatkoneksi.jsp dalam bentuk modul sehingga dapat digunakan oleh banyak form sebagai berikut : header.jsp

  String driver_sql = "sun.jdbc.odbc.JdbcOdbcDriver"; //driver String nama_server="widodolaptop"; // Nama website String namadb="java"; // database yang digunakan String user_sql="sa"; // user untuk sql server String pass_sql="password_anda"; // password untuk sql server Anda java.util.Date tanggal = new java.util.Date(); int tgl = tanggal.getDate(); int bln = tanggal.getMonth()+1; int thn = tanggal.getYear()+1900; int jam = tanggal.getHours(); String hari; if(jam <= 3 || jam >= 20) hari = "Malam"; else if(jam > 3 || jam < 11) hari ="Pagi"; else if(jam >= 11 || jam <= 16) hari = "Siang"; else hari = "Sore"; %>

  buatkoneksi.jsp :

  <% Class.forName(driver_sql); String urldb="jdbc:odbc:Kopi"; Connection koneksi_sql=DriverManager.getConnection(urldb, user_sql, pass_sql); Statement statement_sql=koneksi_sql.createStatement(); ResultSet hasil_query=null; Statement statement_sql2=koneksi_sql.createStatement(); ResultSet hasil_query2=null; %>

  Kode diatas akan membuat koneksi ke database dan menggunakan objek tanggal untuk mengecek tanggal dari komputer yang sedang mengakses aplikasi tersebut.

  1. Buatlah form main.jsp untuk menampilkan status login Anda <%@ page import="java.util.*"%> <%@ page import="java.sql.*"%> <%@include file="header.jsp"%> <%@include file="buatkoneksi.jsp" %> <%

  String idk=(String)session.getAttribute("idk");

  if(idk==null) { %> <jsp:forward page="Login_Utama.jsp" > <jsp:param name="pesanerror" value="Anda belum login, silahkan login dahulu." /> </jsp:forward> <% } else { %> <html> <head><title>Form Utama Login e-Banking</title></head> <body> <h2> Selamat <%=idk%> , Anda telah sukses Login</h2> </body>

  <% } %>

  5. Jika telah selesai, coba anda jalankan aplikasi dimulai dari Login_Utama.jsp :

  Tampilan form input HTML

  6. Jika anda mengklik button Submit maka form akan dipanggil dengan tampilan sebagai berikut :

   Tampilan dari form main.jsp

  Contoh Session lainnya: import java.io.*; import java.util.*; import javax.servlet.*; import javax.servlet.http.*; public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { response.setContentType("text/html"); PrintWriter out = response.getWriter(); HttpSession session = request.getSession(true); // print info session Date created = new Date(session.getCreationTime()); Date accessed = new Date(session.getLastAccessedTime()); out.println("ID " + session.getId()); out.println("Created: " + created); out.println("Last Accessed: " + accessed); // set session info if needed String dataName = request.getParameter("dataName"); if (dataName != null && dataName.length() > 0) { String dataValue = request.getParameter("dataValue"); session.setAttribute(dataName, dataValue); } // print isi session Enumeration e = session.getAttributeNames(); while (e.hasMoreElements()) { String name = (String)e.nextElement(); String value = session.getAttribute(name).toString(); out.println(name + " = " + value); } } }

  Contoh cookie: <% @ page language="java" %> <html> <head> <title>Cookie Input Form</title> </head> <body> <form method="post" action="setcookie.jsp">

<p><b>Enter Your Name: </b><input type="text" name="username"><br> <input type="submit" value="Submit"> </form> </body> <% @ page language="java" import="java.util.*" %> <% String username=request.getParameter("username"); if(username==null) username=""; Date now = new Date(); String timestamp = now.toString(); Cookie cookie = new Cookie ("username",username); response.addCookie(cookie); %> <html> <head> <title>Cookie Saved</title> </head> <body>

<p><a href="showcookievalue.jsp">Next Page to view the cookie value</a><p>

</body> <% @ page language="java" %> <% String cookieName = "username"; Cookie cookies [] = request.getCookies (); Cookie myCookie = null; if ( cookies != null) { for (int i = 0; i < cookies .length; i++) { if ( cookies [i].getName().equals (cookieName)) { myCookie = cookies [i]; break; } } } %> <html> <head> <title>Show Saved Cookie</title> </head> <body> <% if (myCookie == null) { %> No Cookie found with the name <% =cookieName %> <% } else { %> <p>Welcome: <%= myCookie.getValue() %>. <% } %> </body>

  

SESSION Part1

Session kata para dedemit di dunia maya adalah data rahasia, orang bisa mencuri cookies pada web browser wuuiiiih hebat yaaaaaaaaaaaaaaaaa. Tapi gak sepenuhnya benar, wong data cookies itu terenkripsi dengan wuiiiiiih juga Heeeeeeee.

  

Tapi bagi para dedemit maya (maaf pak I*** bahasanya saya pakee…..) tidak usah berkecil

hati, dedemit juga harus belajar juga tohhhh NIH tema yang bagus !!! Session apaan sih?

bisa dikatakan session adalah data private seseorang yang disimpan sementara oleh browser

yang bersifat client side. Nah session inilah yang disimpan ke dalam cookies dan terenkripsi.

  

Misalkan begini : bagaimana suatu vendor/website/perusahaan tahu bahwa seseorang sedang

login atau tidak?

Jawaban : Sebenarnya gak tahu mereka tahu ada login masuk, disimpan kedalam session dan

kalo logout kirim data bahwa user telah logout. Terus mas kalo kalo buka email kok di atasnya ada nama kita?

Jawaban : Nah itu namanya session username dan password yang untuk login tadi disimpan

ke dalam session sehingga disimpan deh kedalam browser… Tapi begaimana dengan HTTPS (HTTP Secure) mas? Nah asyiknya HTTPS adalah tidak pake session tapi pake ********* sehingga tidak bisa digunakan sembarangan terutama para dedemit maya, mencegah illegal user, pengambilan session, dll. Tema HTTPS akan lebih asyik kalo pada tema selanjutnya kali yaaaaaaaaa Berikut kira2 listing pada pembuatan session Terutama pada saat login :

  Index.jsp <%– Document : index Created on : Nov 28, 2008, 7:44:17 AM Author : JIAN

  • –%> <%@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> <form action=”cont” method=”POST”> <table border=”1″> <thead> <tr> <th>NAMA</th> <th>NIM</th> </tr> </thead> <tbody>

  <tr> <td><input type=”text” name=”nama” value=”" size=”25″ /></td> <td><input type=”text” name=”nim” value=”" size=”8″ /></td> </tr> <tr> <td></td> <td><input type=”submit” value=”submit” name=”submit” /></td> </tr> </tbody> </table> </form> </body> </html> Pada servet dengan nama cont.java Ada tiga anggaplah (fungsi standar) yang disediakan oleh netbeans 1. processRequest

  2. doPost 3. doGet

ada dua hal yang membuat kita dapat berkomunikasi dengan server yaitu request dan respon Dopost mengelola komunikasi client ke server yang sipatnya request bersifat POST dan

doGet mengelola yang bersifat GET. Lalu outputnya / hasil olah data akan di respon dengan mengeluarkan output/respon. Nah dalam contoh ini saya membuat request bertipe POST dan langsung dikelola oleh doPost. Setelah d kelola maka langsung dikirim / forward dengan ke processRequest. Lihat listing berikut : throws ServletException, IOException { RequestDispatcher rd=null; String nama=request.getParameter(“nama”); String nim=request.getParameter(“nim”); if(auth(nama,nim)){ rd=request.getRequestDispatcher(“sukses.jsp”); rd.forward(request, response); } else { processRequest(request, response); } } Sedangkan fungsi auth saya buat sendiri dengan listing : public boolean auth(String nama, String nim){ return (nama.equals(“huanjian”)&& nim.equals(“06018999″)); } Kurang lebih seperti inilah proses tadi, indexj.jsp yang berisi inputan form akan di kirim datanya ke sebuah servlet bernama cont.java. Di java ada tiga fungsi yaitu doGet, doPost dan processRequest. Di doPost data yang

diPOSTkan dari index.jsp diterima. Disana ada kondisi bahwa jika sesuai dengan bool fungsi

auth jika true maka data sukses.jsp akan diambil (bukan ke sukses.jsp). berbeda samasekali,

  

kalo diambil/forwad maka output dari sukses.jsp tetapi yang mengeluarkan adalah cont.java.

Aneh khan!!! Atau malah Asyik

Dokumen yang terkait

Karakterisasi Morfologi dan Sifat Kuantitatif Gandum (Triticum aestivum L.) di Dataran Menengah Quantitative and Morphological Characterization of Wheat (Triticum aestivum L.) in Middle Land

0 2 8

Efektivitas Frekuensi dan Volume Penyemprotan Daun dengan Agens Hayati Filosfer dalam Meningkatkan Pertumbuhan Tanaman dan Hasil Padi Effectiveness of Frequency and Volume of Foliar Spray with Phyllosphere Biological Agents in Improving Plant Growth and Y

0 0 6

Regenerasi dan Aklimatisasi Kultur Antera Enam Persilangan F1 Padi Sawah Plantlet Regeneration and Acclimatization in Rice Anther Culture of 6 F1s

0 0 8

Pengujian Daya Hasil dan Ketahanan Penyakit Hawar Daun Bakteri Tanaman Padi Hibrida Evaluation of Yield and Bacterial Leaf Blight Disease Resistance of Hybrid Rice Genotypes

0 0 7

Produksi Benih Kentang Sistem Aeroponik dan Root Zone Cooling dengan Pembedaan Tekanan Pompa di Dataran Rendah Potato Seed Production in Aeroponics System and Root Zone Cooling at Different Pump Pressures in the Lowlands

0 0 7

Aplikasi Bakteri Probiotik Pseudomonas Kelompok Fluorescens untuk Meningkatkan Produksi dan Mutu Benih Cabai Application of Fluorescent Probiotic Bacteria Pseudomonas to Increase Production and Quality of Chili Seed

0 0 7

Pewarisan Karakter Kualitatif Cabai Hias Hasil Persilangan Cabai Besar dan Cabai Rawit Inheritance of Qualitative Characters of Ornamental Chili Pepper from Hybridization of Chili Pepper and Bird Pepper

0 1 6

Keragaan Karakter Morfologi dan Agronomi Galur-Galur Sorgum pada Dua Lingkungan Berbeda Variability of Morphological and Agronomic Traits of Sorghum Breeding Lines in Two Different Environments

0 0 8

Induksi dan Proliferasi Embriogenesis Somatik In Vitro pada Lima Genotipe Kedelai Induction and Proliferation of In Vitro Somatic Embryogenesis on Five Soybean Genotypes

0 1 10

Menangani Cookie dan Session

0 0 17