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.

 Percobaan 1 – Penanganan Response Redirection
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



Popular Post

Powered by Blogger.

- Copyright © Kampusxx -Metrominimalist- Powered by Blogger - Designed by Riza Falafi -