AP SESI 10
SESSION MANAGEMENT
Dalam kasus ini program di bedakan antara program yang di tumpuk secara langsung dengan
program yang di pilah-pilah ke beberapa bagian.Membuat program yang digabung secara langsung :
Pertama buat koneksi ke database, membuat file yang berfungsi menghubungkan program ke database.
<%@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/db_mhs";
Connection con = DriverManager.getConnection(koneksi, "root", "1234");
Statement st = con.createStatement();
ResultSet rs;
%>
Yang kedua membuat file index.jsp dimana fungsinya untuk menampung parameter yang akan dimasukkan oleh user dan disinilah fungsi session langsung di buat. Jika parameter yang dimasukkan dari index sama dengan data yang ada di database maka index akan di alihkan ke main.jsp dan session akan di buat, tapi jika yang di request dari parameter tidak sama dengan data yang ada di database maka akan di alihkan kembali ke index dan session tidak dibuat.
<%@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">
<tr>
<td>User Name</td>
<td><input type="text" name="username"></td>
</tr>
<tr>
<td>Password</td>
<td><input type="password" name="password"></td>
</tr>
<tr>
<td></td>
<td><input type="submit" name="login" 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 login where user='" + username + "' and password='" + password + "'");
if (rs != null) {
while (rs.next()) {
session.setAttribute("sessionusername", rs.getString("user"));
session.setAttribute("sessionpassword", rs.getString("password"));
response.sendRedirect("main.jsp");
}
} else if (rs == null) {
response.sendRedirect("index.jsp");
}
%>
Membuat halaman main.jsp untuk melihat menu utama setelah berhasil dip roses serta dapat di authentifikasi dari proses jika telah berhasil dan hasil dari pembuatan session.
<%@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="">
<%
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>");
}
%>
Setelah berhasil memasuki halaman utama main.jsp. Selanjutnya membuat file untuk menghapus atau menghancurkan session dengan membuat 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">
<%
session.removeAttribute("username");
session.removeAttribute("password");
session.invalidate();
response.sendRedirect("index.jsp");
%>
Setelah di jalankan program di atas hanya memiliki view saja karena semua tugasnya tidak di bedakan semuanya ditumpuk menjadi satu di dalam konsep view. Jadi dari segi keamanan data tersebut tidaklah aman
Project ke-2 membuat file yang dipisah dengan menggunakan konsep model-view-kontrol, jadi setiap data mempunyai tugasnya masing –masing dimana fungsinya sama dengan project yang pertama yang menumpuk langsung dalam file.
Karena project yang kedua ini menggunakan konsep yang dipilah sesuai dengan konsep model-view-kontrol. Langkah pertama membuat file servlet sebagai control dari program tersebut dengan nama
login.java
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
/**
*
* @author Hidden
*/
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.println("MySQL Connect Example.");
Connection conn = null;
String url = "jdbc:mysql://localhost:3306/";
String dbName = "db_mhs";
String driver = "com.mysql.jdbc.Driver";
String userName = "root";
String password = "1234";
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 login where user ='"+ 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("user"));
count++;
}
if (count > 0) {
response.sendRedirect("selamatdatang.jsp");
} else {
response.sendRedirect("login.jsp");
}
} else {
response.sendRedirect("login.jsp");
}
System.out.println("terkoneksi ke database");
conn.close();
System.out.println("terputus dari database");
} catch (Exception e) {
e.printStackTrace();
}
}
}
Kemudian kita membuat model dari program tersebut dengan nama loginbean.java
package logbean;
/**
*
* @author py
*/
public class loginbean {
String username="";
String password="";
public void setusername(String username){
this.username=username;
}
public String getusername(){
return username;
}
public void setpassword(String password){
this.password=password;
}
public String getpassword(){
return password;
}
}
Selanjutnya membuat view untuk menampung parameter yang dimasukkan oleh user yang akan dikelola oleh controller namanya view.jsp. Tetapi sebelumnya buat dahulu hal login.jsp yang akan di post kan ke view.jsp
Login.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><body><form method="post" action="view.jsp">
<table><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><td></td><td><input type="submit" ></td></tr>
</table></form>
</body>
</html>
View.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="logbean.loginbean.*" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Database Search</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>
Selanjutnya membuat file menu utama selamatdatang.jsp untuk mengetahui proses yang berhasil di input dari parameter ke controller login.java dan di fordward ke selamatdatang.jsp. Serta menciptakan session ketika berhasil masuk ke halaman 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>
<table align="center" style="border: 1px solid #000000;">
<%
if(session.getAttribute("username")!=null && session.getAttribute("username")!=""){
String user=session.getAttribute("username").toString();
%>
<tr><td align="center"><h1>Selamat Datang <b><%=user%></b></h1></td></tr>
<tr><td align="center"><a href="logout.jsp">Logout</a></td></tr>
<%
}else{
response.sendRedirect("login.jsp");
}
%>
</table>
</body>
</html>
Sama seperti sebelumnya setelah keluar dari halaman tersebut, session harus di hancurkan dengan membuat 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.invalidate();
response.sendRedirect("login.jsp");
%>
Setelah di jalankan memang terlihat tidak ada perbedaan dengan project yang pertama tetapi secara konsep sangat berbeda antara terstruktur dengan pbo yang menggunakan konsep model-view-control. Dari segi keamanan project yang kedua lebih aman dari project satu dan dari segi yang lain membuat programmer lain akan mudah membaca program yang dibuat oleh pembuatnya. Dan mudah mengetahui letak kesalahan dan error pada sebuah program. Dan akan lebih terasa jika program tersebut dalam sekala besar konsep dari PBO akan sangat dibutuhkan.
Pemrograman berorientasi objek (Object-Oriented Programming atau OOP) merupakan paradigma pemrograman yang berorientasikan kepada objek. Semua data dan fungsi di dalam paradigma ini dibungkus dalam kelas-kelas atau objek-objek. Bandingkan dengan logika pemrograman terstruktur. Setiap objek dapat menerima pesan, memproses data, dan mengirim pesan ke objek lainnya, Sedangkan untuk pemrograman terstruktur adalah kebalikan dari pemrograman berorientasi objek yaitu sebuah cara pemrosesan data yang terstruktur dalam analisa, cara dan penulisan pemrograman. Dikarenakan harus terstruktur sehingga dalam pembuatannya antara satu line pemrograman dengan yang lainnya berhubungan. Konsep utama dari Pemrograman Berbasis Objek terletak pada kondisi kode/line pemrogramanannya dimana merupakan sebuah kesatuan modular.
Untuk program yang simpel/sederhana biasanya menggunakan pemrograman terstruktur karena masih mudah dan tidak banyak dilakukan perubahan yang berarti, sedangkan untuk line lebih dari 100 atau bisa dikatakan rumit, maka digunakan pemrograman berorientasi objek. Pemrograman Terstruktur terdiri dari pemecahan masalah yang besar menjadi masalah yang lebih kecil dan seterusnya, sedangkan untuk pemrograman berorientasi objek terdiri dari pengkelompokan kode dengan data yang mana setiap objek berfungsi secara independen sehingga untuk setiap perubahan kode tidak tergantung pada kode yang lainnya, atau lebih dikenal dengan modular. Terdapat juga perbedaan secara spesifik antara Pemrograman Berorientasi Objek dengan Pemrograman Terstruktur, yaitu pada kelas dan objek. Pada Pemrograman Terstruktur tidak terdapat kelas dan objek.
Sifat-sifat dari pemrograman terstruktur dapat diuraikan sebagai berikut :
a. Memuat teknik pemecahan masalah yang logis dan sistematis
b. Memuat algoritma yang efisien, efektif dan sederhana
c. Program disusun dengan logika yang mudah dipahami
d. Tidak menggunakan perintah GOTO
e. Biaya pengujian program relatif rendah
f. Memiliki dokumentasi yang baik
g. Biaya perawatan dan dokumentasi yang dibutuhkan relatif rendah
Berbeda dengan OOP. Suatu program disebut dengan pemrograman berbasis obyek (OOP) karena terdapat :
– Encapsulation (pembungkusan)
Encapsulation adalah mekanisme pemrograman yang membungkus kode dan data yang dimanipulasi dan menjaganya supaya terhindar dari interferensi dan penggunaan yang tidak perlu. Salah satu caranya dengan membentuk objek.
– Inheritance (pewarisan)
Inheritance memungkinkan programer meletakkan member yang sama dalam satu class dan class-class lain dapat mewarisi member tersebut. Class yang mengandung member yang sama dari beberapa class lain dinamakan superclass atau parent class. Class yang mewarisi dinamakan subclass atau child class. Inheritance menghasilkan class hierarchy.
– Polymorphism (polimorfisme –perbedaan bentuk)
Polymorphisme artinya mempunyai banyak bentuk. Dua objek atau lebih dikatakan sebagai polymorphic, bila objek-objek itu mempunyai antar muka yang identik namun mempunyai perilaku-perilaku yang berbeda
Bisa dikatakan pada pemrograman berorientasi objek, dapat dilakukan sebuah programming terhadap code yang lebih baik daripada pemrograman terstruktur, itu juga untuk kaliber atau skala rumit atau besar, sedangkan untuk coding yang skala kecil lebih mudah menggunakan pemrograman terstruktur dikarenakan lebih singkat dan mudah tanpa banyak perubahan yang penting.