Selasa, 24 Mei 2011

Session Management


Proyek 1 : Session1
Teknik dengan menumpukkan pada view dari aplikasi 

Sebelum kita membuat aplikasi session, terlebih dahulu kita lakukan pembuatan database dengan nama “login”dan tabel dengan nama “users”. Tabel users terdiri dari username dan password. 
  Setelah database di atas dibuat, selanjutnya buatlah file koneksi ke database dengan nama connect.jsp

   <%@page import="javax.smartcardio.CardTerminals.State"%>
   <%@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">
   <%@page import= "java.sql.*"%>
   <%
   try {
      Class.forName("com.mysql.jdbc.Driver");
      } catch (ClassNotFoundException e){
      out.print(e.getMessage());     }
    String koneksi = "jdbc:mysql://localhost:3306/login";
   Connection con=DriverManager.getConnection(koneksi,"root","");
   Statement st = con.createStatement();
   ResultSet rs;
%>
Penjelasan:
Dalam pembuatan koneksi ke database terhadap suatu class, kita harus memanggil library-librari, missal: import=”java.sql.*”. Pada intruksi try di buat suatu input-output untuk memastikan koneksi jika terdapat kesalahan maka intruksi catch akan menampilkan output bahwa koneksi tidak ditemukan. Tetapi jika try berhasil maka akan dikoneksikan antara database mysql dengan port 3306 pada localhost web browser.

Kemudian kita buat file index,jsp dan kita setting sessionnya. Untuk membuat designnya kita dapat menggunakan Macromedia DreamWeaver.

<%@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">

<meta http-equiv="Refresh" content="">
<title>::Halaman Login::</title>
<form method="post" action="">
<table border=0 align="center">
       <tr bgcolor="blue"><td colspan="2" align="center"><b>Signup</b></td></tr>
<tr><td>Username</td><td><input type="text" name="username"></td> </tr>

<tr><td>password</td><td><input type="password" name="password"></td> </tr>  
<tr bgcolor="blue"><td></td><td  align="right"> <input type="submit" value="Login"></td> </tr> 
</table> 
</form> 

        <%@ include file="connect.jsp" %> 
        <%
     String username=request.getParameter("username");
     String password=request.getParameter("password");
     if (username==null) { username="";}
     if (password==null) { password ="";}
    rs =st.executeQuery("select*from users where username='" +username+"' "
                     + "and password='" +password+ "'");
     if (rs !=null){ while (rs.next()){
        session.setAttribute("sessionusername",rs.getString("username"));
        session.setAttribute("sessionpassword",rs.getString("password"));
     response.sendRedirect("main.jsp");}
        } else if (rs==null){
     response.sendRedirect("index.jsp"); } 
%>

Penjelasan:
Didalam file index.jsp ini, kita lakukan pemanggilan file connect.jsp dengan perintah include file. Kemudian kita lakukan pembuatan variabel username dan password, selanjutnya meminta parameter name pada input type. setelah itu, dideklarasikan eksekusi terhadap query database terhadap input typenya, Jika input type username dan password mempunyai nilai maka session dibuat jika username dan password cocok dengan nilai tabel users maka eksekusi dilanjutkan ke main.jsp tapi jika tidak atau kosong maka responnya pada index. 

Kemudian kita lanjut dengan membuat file main.jsp

<%@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">

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
<%
 if ((String) session.getAttribute("sessionusername") == null
    && (String) session.getAttribute("sessionpassword") == null){
   response.sendRedirect("index.jsp");  }
 else if ((String) session.getAttribute("sessionusername") != null) {
     out.print("Selamat Datang ...");
     out.print("<a href=logout.jsp>Logout</a>");
}
%>
Penjelasan:
Pada file ini kita buat kembali kondisi session, jika ketika login, username dan password kosong atau tidak cocok dengan tabel maka responnya ke index.jsp tetapi jika mempunyai nilai yang sesuai maka akan ditampilkan “Selamat Datang…” dan sebuah link logout.

Setelah itu kita buat juga file logout.jsp agar link logout pada main.jsp dapat difungsikan.

<%@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">

<META HTTP-EQUIV="Refresh">
<%
       session.removeAttribute("username");
       session.removeAttribute("password");
       session.invalidate();
       response.sendRedirect("index.jsp");
 %>
Penjelasan:
Pada logout.jsp ini session tidak difungsikan, username dan password sebagai atribut session dihapus. Kemudian memberikan respon ke index.jsp


Proyek 2 : Session2
Teknik dengan Model-View-Control


       Langkah awal, kita harus membuat model java didalam package login  yaitu file login.java.

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.sql.*;

public class login extends HttpServlet {
public void doPost(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException{
   response.setContentType("text/html");
     PrintWriter out = response.getWriter();
     System.out.print("MySQL Connect Example.");
     Connection conn = null;
     String url = "jdbc:mysql://localhost:3306/";
     String dbName = "login";
     String driver = "com.mysql.jdbc.Driver";
     String userName = "root";
     String password = "";   String username = "";
     String userpass = "";   String strQuery = "";
     Statement st = null;
     ResultSet rs = null;

     HttpSession session = request.getSession(true);

try{
   Class.forName(driver).newInstance();
   conn = DriverManager.getConnection(url + dbName, userName, password);
  if (request.getParameter("username") !=null
    && request.getParameter("username")!="" && request.getParameter("password") !=null
    && request.getParameter("password")!=""){
    username = request.getParameter("username").toString();
    userpass = request.getParameter("password").toString();
   strQuery = "select * from users where username ='"+username+"'and password='"+userpass+"'";
    System.out.println(strQuery);
      st = conn.createStatement();    
      rs = st.executeQuery(strQuery);  int count = 0;
    while (rs.next()){  session.setAttribute("username", rs.getString("username"));
      count++;  }
    if (count > 0){ response.sendRedirect("selamatdatang.jsp");
    }else{ response.sendRedirect("index.jsp"); }
    }else{ response.sendRedirect("index.jsp");}
    System.out.println("terkoneksi ke database");
    conn.close();
            System.out.println("terputus dari database database");
        }catch (Exception e){ e.printStackTrace(); }
        }
    }

Penjelasan:
Dalam file ini, kita masukkan beberapa library java, seperti : import java.io.*;, import javax.servlet.*;, import javax.servlet.http.*;, import java.sql.*;. Kemudian class login kita indukkan ke HttpServlet untuk koneksi ke database. Dimana dibuat juga method doPost untuk mengirimkan request dan respons yang kemudian ditujukan pada eksepsi servlet. Respons yang diharapkan berupa text/html, dengan perintah PrintWriter out = response.getWriter();, akan menampilkan keluaran berupa respons yang diambil dari penulisan. Untuk koneksinya, buatlah variable yaitu url,dbName, driver, userName, password, userpass bertipe string serta ResultSet dan Statement. Kemudian buat permintaan session bernilai true dengan variable session. Setelah itu, buat intruksi try terhadap koneksi antara url dan database. Jika permintaan pengambilan parameter variable username dan password kemudian username diubah menjadi string dan userpass akan meminta password untuk menjadi string.
Selanjutnya buatlah strQuery sebagai variabel yang akan dieksekusi dan ditampilkan dalam intruksi ResultSet rs. Kemudian buatlah variable count yang bertipe dan  bernilai 0 untuk difungsikan pada perulangan while. Kemudian dibuat kondisi jika count > 0 maka akan diteruskan ke file selamatdatang.jsp sebagai view dan akan ditampilkan bahwa koneksi berhasil ke database. Tetapi jika tidak maka diteruskan ke index.jsp dan akan ditampilkan bahwa koneksi terputus.

      Kemudian buatlah file LoginBean.java sebagai model java didalam package logbean.

package logbean;
public class LoginBean {
    private String userName="";
    private String password ="";

    public String getUserName() {
        return userName;
    }
    public void setUserName(String userName) {
        this.userName = userName;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }   
}

Penjelasan:
File ini merupakan model yang dihubungkan dengan servlet sebagai kontrolnya. Di class ini kita buat encapsulation terhadap variabel berbentuk private. Untuk itu, lakukan refactor kemudian encapsulate fields maka otomatis akan ditulis class baru dengan fungsi get dan set.

       Kemudian buatlah file view yaitu index.jsp.

<%@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">

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>::Halaman Login::</title>

<form method="post" action= "Login.jsp">
<table border="0" align="center">
<tr bgcolor="blue">
 <td colspan="2" align="center"><b>Login Authentication</b></td> </tr>
        <tr>
       <td>Login Name</td><td><input type="text" name="username"></td></tr>
<tr>
<td>Password</td><td><input type="password" name="password"></td> </tr>
<tr bgcolor="blue">
<td></td><td align="right"><input type="submit" value="Login"></td></tr>
 </table>
</form>
Penjelasan:
Di dalam file ini berikan aksi pada action ke login.jsp dengan method post. 
  

Selanjutnya buat view yaitu file login.jsp untuk menampung parameter yang diinput user pada interface file index.jsp.

<%@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">

<%@page language="java" import= "java.sql.*" import= "java.logbean.*"%>
<html>
  <head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>::Halaman Login::</title>
  </head>
  <body>
<jsp:useBean id= "db" scope="request" class= "logbean.LoginBean">
<jsp:setProperty name="db" property="userName" value="<%=request.getParameter("username")%>"/>
<jsp:setProperty name="db" property="password" value="<%=request.getParameter("password")%>"/>
</jsp:useBean><jsp:forward page="login">
<jsp:param name="username" value="<%=db.getUserName()%>"/>
<jsp:param name="password" value="<%=db.getPassword()%>"/>
</jsp:forward>
  </body>
  </html>
Penjelasan:
Untuk view ini, kita masukan librari lain yaitu import=”java.logbean.*”. bahasa yang digunakan adalah java dan logbean merupakan package. Class yang digunakan koneksi package dan servlet sebagai controller. Property userName dan password diambil dari package logbean, nilainya meminta parameter username dan password kemudian dialihkan ke package login dengan login.java untuk di cocokkan dengan parameter username dan password di database.

Kemudian buatlah view yaitu file selamatdatang.jsp

      <%@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><title>Selamat datang</title></head>
       <body><br><br><br><br>
      <table align= "center" style="border:lpx solid #000000;">
       <%
    if(session.getAttribute("username")!=null && session.getAttribute("username")      !=""){
     String user = session.getAttribute("username").toString();
%>
   <tr><td align="center"><h1><marquee>Selamat Datang<b> <%= user %></b></marquee></h1></td></tr>
   <tr><td align="center"><a href="logout.jsp">Logout</a></td></tr>
   <% }else{
       response.sendRedirect("Login.jsp");    }
     %>
     </table>
    </body>
  </html>
Penjelasan:
Pada file ini, buatlah kondisi session yang menyatakan bahwa jika username mempunyai nilai dan username tidak kosong maka variable user akan memanggil username pada database untuk diubah menjadi string.
<%=user%> merupakan perintah untuk menampilkan variable user yang telah dibuat dan kemudian terdapat sebuah link logout tetapi jika tidak maka responnya dilanjutkan ke login.jsp.

Buatlah file logout.jsp

<%@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">

<meta HTTP.EQUIV= "Refresh">
<%
session.removeAttribute("username");
session.removeAttribute ("sessionpassword ");
session.invalidate();
response.sendRedirect("index.jsp");
%>
Penjelasan:
Pada file ini, buatlah pemusnahan terhadap session untuk username dan password dan session diabaikan. Setelah itu akan dilanjutkan ke file index.jsp. 

Perbandingan Kelebihan dan Kekurangan Teknik Tumpukan dan Model-View-Control


            Perbandingan kedua teknik di atas dapat dilihat dari fungsi dan keamanan terhadap data program. Teknik tumpukan merupakan jenis pemrograman procedural atau terstruktur sehingga teknik ini terlihat lebih mudah. Tetapi dengan menumpuk pada view dalam aplikasinya yaitu model terdapat di file view maka dapat mengakibatkan mudahnya akses variable data dan akses databasenya sehingga akan menyebabkan tidak amannya data program dalam aplikasi tersebut.
Sedangkan pada teknik Model-View-Control, masing-masing model,view dan control dibuat terpisah. Sehingga teknik terdapat hak akses, dimana hanya class itu sendiri yang mengetahui mutlak data programnya. Sebagai contoh variable username dan password di atas yang dibuat dengan tipe data string. Jika class lain akan mengakses variable tersebut maka harus manggunakan fungsi getUsername(),setUsername(),getPassword(),setPassword() tetapi walaupun begitu pengakses itu tidak dapat mengetahui tipe data apa yang digunakan dan apa maksud dari variable tersebut. Oleh karena itulah teknik ini memiliki tingkat keamanan yang tinggi. Ini merupakan teknik encapsulasi dalam bahasa pemrograman berorientasi obyek.

Keutamaan Membaca Sholawat di Hari Jum'at


Hari jum’at adalah hari yang mulia. Terkabulnya sebagian do’a. barangsiapa yang mau memperbanyak do’a pada hari itu, niscaya Allah akan menurunkan rahmat kepadanya. Dia akan diberi kemuliaan disisinya, dan disisi para nabi. Diriwayatkan oleh Abu Amer dari ayahnya. Dan ayahnya dari neneknya, bahwasanya Rosullullah pernah bercerita sebagai berikut:

Di belakang gunung “gaaf” terdapat tanah sebidang yang tandus. Warnanya putih tidak ditumbuhi selembar rumput. Luasnya seluas tujuh kali dunia. Disana penuh sesak para malaikat. Seandainya ada jarum dijatuhkan ke atas sana, maka tak mungkin bisa terjatuh ke tanah. Karena rapatnya malaikat disana. Ditangan para malaikat terdapat selembar bendera, panjangnya empat puluh fasakh. Tiap-tiap bendera terdapat tulisan “La ilaha illallah, Muhammad Rosullullah”.

Para malaikat-malaikat itu berkumpul tiap hari jum’at di sekitar gunung “gaaf”, memohon kepada Allah dan mendo’akan keselamatan bagi umat nabi Muhammad .SAW. Bila fajar dating, mereka berdo’a, “Ya Allah, ampunilah dosa orang yang mandi dan menghadiri sholat jum’at”. Kemudian Allah berfirman, “Wahai para malaikat-Ku! Apa yang kau kehendaki dan kau inginkan?”.

“Kami menginginkan agar Engkau mengampuni dosa umat Muhammad”, jawab para malaikat. “Aku telah mengampuni mereka”, firman Allah.

Demikianlah sebuah hadits yang diriwayatkan di atas. Betapa mulia hari jum’at. Setiap jum’at para malaikat berbaris rapat dan mendo’akan kepada semua umat Muhammad. Dan barang siapa mandi pada hari itu juga, maka Insya Allah dosa-dosanya diampuni dan dijanjikan masuk Surga.

Jum’at adalah hari yang paling mulia. Sebab hari itu Nabi Adam diciptakan Allah. Sebenarnya banyak peristiwa yang sangat penting, yang terjadi pada hari jum’at. Diantaranya Nabi Adam dimasukkan ke dalam surga juga pada hari jum’at, lalu dikeluarkan juga pada hari jum’at. Nabi Adam juga meninggal dunia juga pada hari jum’at. Bahkan sangkakala ditiup, tanda kehancuran dunia/ hari kiamat datang pada hari jum’at. Itulah sebabnya, mengapa hari jum’at dikatakan mulia.

Oleh karenanya, sangat dianjurkan kepada kaum muslim untuk menyempatkan waktu di hari jum’at, demi membaca Sholawat. Sebab ada juga riwayat yang menjelaskan, barang siapa membaca sholawat sebanyak delapan puluh kali di saat hari jum’at, maka dosanya diampuni selama delapan puluh tahun. Dengan catatan membaca sholawat secara ikhlas. Dan barangsiapa yang menyempatkan membaca sholawat sebanyak itu manjelang sholat Ashar, maka akan mencatatnya bahwa amalan itu sama ibadah selama 80 tahun.

Riwayat yang menyatakan tersebut di atas adalah, “Barang siapa membaca sholawat atasku pada hari jum’at sebanyak delapan puluh kali, dosanya akan diampuni selama delapan puluh tahun lamanya. Para sahabat lalu bertanya: “Wahai Rosullullah: bagaimana cara membaca sholawat atasmu?”. Jawab Rosullullah: “Bacalah, Allahumma Sholli ‘alaa Muhammadin abdika wanabiyyika warosulika Nabiyyil ummiyyi (Wahai Allah, berikan sholawat atas nabi Muhammad hamba-Mu, Muhammad Rosul-Mu yakni Nabi yang ummi)”.
Bayangkan betapa besar harga sebuah kalimat sholawat. Apalagi jika dibaca pada hari jum’at. Sekali membaca sholawat serta salam atas Rosullullah, maka akan diampuni dosanya dan dicatat sama dengan beribadah selama delapan puluh tahun. Sekarang timbul pertanyaan dihati kita, Apakah seorang muslim cukup hanya membaca sholawat saja?. Tanpa beribadah sholat?. Tidak, selain bersholawat , tentunya kita harus melakukan syari’at dan ibadah yang sifatnya wajib. Sholawat akan diterima Allah, jika yang membacanya itu adalah orang mukmin. Malaikat akan turun ke bumi dan membawa secarik kertas berikut penanya, untuk mencatat amalan sholawat. Yang kelak amalan itu akan mempermudah nasib seseorang di alam akhirat.

Sholawat atas Nabi Muhammad .SAW bisa juga membebaskan seseorang dari siksa. Tampaknya pernyatan itu terlalu berlebihan, namun demikianlah Allah Maha Pengampun, Allah Maha Bijaksana terhadap hamba-hamba-Nya. Diriwayatkan bahwa ada seorang wanita datang dan mengadu kepada hasan basri, ia mengadukan anak putrinya yang telah mati.

Sesampai di rumah menjelang tidur, wanita tadi membaca sholawat. Lalu tertidur, dalam tidurnya dia bermimpi bertemu dengan anaknya yang telah meninggal dunia. Wanita itu melihat anaknya berpakaian dari api neraka. Lehernya dibelenggu, kedua kaki tangannya diikat dangan tali dari api. Wanita itu kemudian terbangun dari tidurnya. Dia menangis, merasa takut dan kasihan kepada yang disayang. Wanita itu kemudian pergi mengadu kepada hasan basri. Hasan basri mendengar cerita mimpi wanita yang datang kepadanya jadi ikut bersedih.

Selang beberapa minggu, hasan basri sendiri bermimpi. Dia melihat seorang gadis, sang anak gadis telah berada di dalam Surga. Tubuhnya putih bersih. Duduk santai di atas tempat tidur. Dikepalanya ada tutup mahkota yang memancar ke timur dan ke barat. Dia lalu menegur hasan basri.

“Hei Ustadz, lupakah engkau denganku?”
“Ya, aku lupa. Siapa engkau wahai anak gadis?”, Tanya hasan basri yang masih penasaran.
“Aku anak seorang wanita yang beberapa hari yang lalu meminta kau mengajarinya bersholawat”, jawabya.
“Berkat amalan apakah sehingga kau sekarang mendapatkan tempat yang terbaik”. Tanya hasan basri heran.
“Berkat seorang pemuda yang melewati kuburanku. Dia lalu membaca sholawat satu kali. Yang mana sholawat itu di tujukan kepada ahli kubur. Lalu terdengarlah seruan: lepaskanlah siksa untuk mereka, dan selamatkan dari belenggu. Sebab mereka mendapat sholawat Nabi”. Demikian sang putri menceritakan. Hasan basri lalu terbangun dari tidurnya.

Nah, dari beberapa riwayat di atas. Tentu, kita sebagai seorang muslim dan mukmin terdorong untuk memperbanyak bersholawat kepada Nabi, terutama kepada Nabi Muhammad .SAW. Sholawat dapat dibaca kapan saja, tidak hanya pada hari jum’at, namun dapat dibaca pada hari-hari lain. Begitu banyak keistimewaan dan manfaat dari sholawat sehingga sungguh tidak terpujinya kita bila tidak menyempatkan waktu untuk bersholawat. Ayo, mulai sekarang!. Kita bersholawat kepada Nabi Muhammad .SAW, Insya Allah kita akan menjadi hamba dan umat yang mulia.Aa…mi…n