- Back to Home »
- bahan kuliah , java »
- Include dan Forward 01_Membuat Form Login dengan Java Servlet
Monday 3 June 2013
Servlet
adalah suatu teknologi Java yang diintegrasikan di dalam Web-Server untuk
melakukan fungsi-fungsi server-side.
Fungsi server-side ini dijalankan untuk menanggapi
permintaan dari client (web browser).
Servlet adalah sebuah class yang digunakan untuk menerima request dan
memberikan response, terutama melalui protokol HTTP. Menulis source code dari
Servlet, lalu mengcompile dan mendeploy di java web server. Selanjutnya client
dapat berinteraksi dengan Servlet melalui browser.
Servlet bisa dipandang sebagai class yang bisa digunakan untuk menulis
response dalam format HTML. Ia ditulis sebagaimana lumrahnya sebuah class di
dalam bahasa pemrograman Java. Servlet disimpan sebagai file .java. Untuk
mengirimkan response dalam format HTML, Anda bisa menulisnya melalui obyek
PrintWriter, yang didapatkan dari HttpServletResponse.
Dalam perjalananya, dikembangkan teknologi Java Server Page (JSP) dimana
Anda bisa menulis script untuk aplikasi Web dengan bahasa Java. Berbeda dengan
Servlet, JSP bisa dipandang sebagai HTML yang di dalamnya bisa mempunyai
kode-kode Java. JSP disimpan sebagai file .jsp. Menulis JSP adalah seperti
menulis file HTML, kecuali di dalamnya dapat disisipkan kode-kode Java sebagai
presentation logic. Kode-kode Java ini disisipkan melalui directive, sebagai
scriplet, atau sebagai expression.
Servlet dan JSP mempunyai kemampuan yang kembar. Keduanya bisa membaca
input yang dikirimkan melalui form di Web, mengakses database melalui JDBC,
mengolah data dan menulis response ke browser. Response lumrahnya dalam format
HTML.
Perbedaan Servlet dan JSP lebih kepada proses pengembangannya. Sedangkan
dalam operasinya, keduanya adalah sama. Oleh web application server, JSP akan
direwrite menjadi Servlet, dicompile dan selanjutnya akan diperlakukan
sebagaimana Servlet.
Sebuah filter adalah
sebuah object yang melaksanakan tugas penfilteran pada saat me-request resource
(servlet atau static content), atau juga saat me-respon dari resource, atau
juga kedua-duanya. Filter melaksanakan penfilteran dalam fungsi doFilter.
Setiap filter memiliki akses ke objek FilterConfig dari mana ini dapat
memperoleh parameter-parameter inisialisasi, sebuah referensi ke ServletContext
yang mana bisa digunakan, sebagai contoh, untuk me-load sumber daya
dibutuhkan tugas-tugas pen-filteran.
Tujuan
section ini adalah menunjukkan bagaimana cara menangani response redirection.
Pangananannya meliputi menyertakan file lain ke dalam halaman web dan mengalihkan
response ke halaman lain.
Langkah-
langkah membuat form servlet login adalah :
·
Buat project web baru
File → New Project, pilih category Web → Web Application, klik
Next
Ketikkan nama project( contoh advancedServlet ), klik
Finish.
·
Kemudian
pada Source Packages klik kanan : new java packages ketik nama (contoh jeni3.servlet)
·
Lalu buat class Servlet caranya adalah
klik kanan packages jeni3.servlet pilih
servlet isi nama ( contoh LoginFormServlet ) isikan kodenya.
Contoh
kodenya :
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class
LoginFormServlet extends HttpServlet {
protected void processRequest(HttpServletRequest
request, HttpServletResponse response)
throws ServletException,
IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out =
response.getWriter();
RequestDispatcher rd = null;
HttpSession session =
request.getSession();
if
(session.getAttribute("user") != null){
rd =
request.getRequestDispatcher("/success");
rd.forward(request,
response);
}
out.println("<html>");
out.println("<head>");
out.println("<title>Login
Form Page</title>");
out.println("</head>");
out.println("<body>");
out.println("<h1>Riza
Falafi</h1>");
out.println("<form
action='login' method='POST'>");
out.println("<table
border='0'>");
out.println("<tr>");
out.println("<td>Username</td>");
out.println("<td>:
<input type='text' name='username' value='' /></td>");
out.println("</tr>");
out.println("<tr>");
out.println("<td>Password</td>");
out.println("<td>:
<input type='password' name='password' value='' /></td>");
out.println("</tr>");
out.println("<tr>");
out.println("<td><input
type='reset' name='reset' value='Reset' /></td>");
out.println("<td><input
type='submit' name='login' value='Login' /></td>");
out.println("</tr>");
out.println("</table>");
out.println("</form>");
out.println("</body>");
out.println("</html>");
out.close();
}
protected void
doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException,
IOException {
processRequest(request,
response);
}
protected void
doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException,
IOException {
processRequest(request,
response);
}
}
·
Buka web.xml pastikan saat mapping
servlet menggunakan nama yang sama dengan action form.
·
Pastikan servlet mapping-nya
seperti berikut :
<servlet-name>LoginFormServlet</servlet-name>
<servlet-class>jeni3.servlet.LoginFormServlet</servlet-class>
</servlet>
<servlet>
<servlet-name>LoginServlet</servlet-name>
<servlet-class>jeni3.servlet.LoginServlet</servlet-class>
</servlet>
<servlet> import java.io.*;
·
Sama seperti langkah diatas, buat buat
class Servlet caranya adalah klik kanan packages jeni3.servlet
pilih servlet isi nama ( contoh LoginServlet ) isikan kodenya.
Contoh
kodenya :
import
javax.servlet.*;
import
javax.servlet.http.*;
public class
LoginServlet extends HttpServlet {
protected void
doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException,
IOException {
//initializing...
RequestDispatcher
rd = null;
HttpSession
session = request.getSession();
if
(session.getAttribute("user") != null){
rd =
request.getRequestDispatcher("/success");
rd.forward(request,
response);
}
String userName =
request.getParameter("username");
String password =
request.getParameter("password");
if
(authenticate(userName, password)){
session.setAttribute("user",userName);
rd =
request.getRequestDispatcher("/success");
rd.forward(request,
response);
}else{
//failed handler
response.setContentType("text/html;charset=UTF-8");
PrintWriter out =
response.getWriter();
out.println("User
does not exist with given username and/or password");
//return to login
page
rd =
request.getRequestDispatcher("/login.html");
rd.include(request,
response);
out.close();
}
}
public boolean
authenticate(String username, String password){
//use hardcode
username and password. (riza falafi and falafi)
return
(username.equals("riza falafi") &&
password.equals("rizafalafi"));
}
}
·
Buat buat class Servlet caranya adalah
klik kanan packages jeni3.servlet pilih
servlet isi nama ( contoh SuccessServlet
) isikan kodenya.
Contoh
kodenya :
import java.io.*;
import
javax.servlet.*;
import
javax.servlet.http.*;
public class
SuccessServlet extends HttpServlet {
protected void
processRequest(HttpServletRequest request, HttpServletResponse response)
throws
ServletException, IOException { HttpSession session = request.getSession();
RequestDispatcher
rd = null;
response.setContentType("text/html;charset=UTF-8");
PrintWriter out =
response.getWriter();
if
(session.getAttribute("user") == null){
out.println("<font
color='red'>You are not log in. Please login here</font>");
rd =
request.getRequestDispatcher("/login.html");
rd.include(request,
response);
}else{
rd =
request.getRequestDispatcher("temp/header.html");
rd.include(request,
response);
rd =
request.getRequestDispatcher("temp/mainContent.html");
rd.include(request,
response);
out.println("<h2>Hello
<font
color='red'>"+session.getAttribute("user")+"</font>
<a href='./logout'>Logout</a></h2>");
rd =
request.getRequestDispatcher("temp/footer.html");
rd.include(request,
response);
}
out.close();
}
protected void
doGet(HttpServletRequest request, HttpServletResponse response)
throws
ServletException, IOException {
processRequest(request,
response);
}
protected void
doPost(HttpServletRequest request, HttpServletResponse response)
throws
ServletException, IOException {
processRequest(request,
response);
}
}
·
Pada web, buat folder temp.
Caranya
adalah buka project advancedServlet web buat folder baru dengan nama temp.
·
Untuk melengkapi class SuccessServlet,
dalam folder temp buat file HTML dengan nama header.html,
mainContent.html, dan footer.html, dengan kode seperti berikut :
Source
kode untuk header.html
<!DOCTYPE
HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Login
Success</title>
</head>
<body>
Source
kode untuk mainContent.html
<h1>Congratulation!!
You are logged in.</h1>
Source kode untuk footer.html
Created by <b>Team
JENI 3</b>, JENI CENTER VEDC MALANG
</body>
</html>
·
Kemudian Run Project