Archive

Archive for July, 2013

Session Tracking [ Part 1 ]

July 30, 2013 Leave a comment

Session tracking merupakan teknik untuk menjaga state dari user. Ada empat teknik dalam session tracking yaitu:

  • Cookies
  • Hidden Form Field
  • URL Rewriting
  • HttpSession

Cookies

Cookie adalah informasi yang dikirim oleh web server ke client, dan informasi tersebut disimpan oleh client. Sehingga jika client melakukan request maka web server dapat mengetahui state client tersebut berdasar cookie yang disimpan. Class yang menyediakan fungsionalitas cookie adalah javax.servlet.http.Cookie, untuk lebih detail tentang class Cookie tersebut dapat dilihat disini.

Untuk add dan retrieve nilai cookie perlu menggunakan method berikut :

public void addCookie(Cookie cookie) : Method dari HttpServletResponse Interface.

public Cookie[] getCookie( ) : Method dari HttpServletRequest Interface.

Berikut ini contoh penggunaan Cookies

File : Login.jsp

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>
        <form action="Login.do" method="post">
             <table>
                 <tr><td>Name : </td><td><input type="text" name="username"></td></tr>
                 <tr><td>Password: </td><td> <input type="password" name="password"></td></tr>
             </table>
            <input type="submit" value="Submit">
        </form>
    </body>
</html>

File : Login.java ( Servlet )

package Action;

import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 *
 * @author Kukuh Utama
 */
public class Login extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
       
    }

    /**
     * Handles the HTTP
     * <code>POST</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
                  
        
        String username = request.getParameter("username");
        String password = request.getParameter("password");
        
        Cookie uCookie = new Cookie("username", username);
        uCookie.setComment("Ini Cookie username");
        uCookie.setMaxAge(300);
        
        Cookie pCookie = new Cookie("password", password);
        pCookie.setComment("Ini Cookie password");
        uCookie.setMaxAge(300);
        
        response.addCookie(uCookie);
        response.addCookie(pCookie);
        
        if(username != null && password != null){
          
           RequestDispatcher rd = request.getRequestDispatcher("Home.jsp");
           rd.forward(request, response);
        } else{
            
        }
        
    }

    @Override
    public String getServletInfo() {
        return "Short description";
    }
}

File : web.xml

....

 <servlet>
        <servlet-name>Login</servlet-name>
        <servlet-class>Action.Login</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>Login</servlet-name>
        <url-pattern>/Login.do</url-pattern>
    </servlet-mapping>

....

File : Home.jsp

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
</head>
<body>
<% Cookie  cookie[] = request.getCookies();%>
<h5>Hello, <% out.println(cookie[0].getValue()); %></h5>
<h4>Your Password is : <% out.println(cookie[1].getValue()); %></h4>
</body>
</html>


Halaman Login:

Login

Login

Halaman Home:

Home

Home

Semoga bermanfaat.

Referensi : Dari berbagai sumber.

We Meet Again

July 27, 2013 Leave a comment

Hai friends, We meet again. 🙂

Wee Meet Again

Wee Meet Again

Categories: Ren's Notes Tags: ,

RequestDispatcher Interface

July 21, 2013 Leave a comment

RequestDispatcher interface merupakan interface yang menyediakan method untuk mengalihkan sebuah request ke resource lain seperti html, jsp dan servlet. RequestDispatcher interface terletak di javax.servlet package. RequestDispatcher interface mempunyai 2 method yaitu forward(ServletRequest request, ServletResponse response) dan include(ServletRequest request, ServletResponse response),Untuk detail dapat dibaca disini.

  • Method forward(ServletRequest request, ServletResponse response) : Mengalihkan sebuah request ke resource lain seperti html, jsp dan servlet.
  • Method include(ServletRequest request, ServletResponse response) : Menambahkan content resource lain seperti html, jsp dan servlet kedalam response.

Berikut ini contoh penggunaan RequestDispatcher interface.

File : index.jsp

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>
        <form action="Login" method="post">
        <table>
            <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>
        </table>
        <input type="submit" value="Input">
        </form>
    </body>
</html>

File : Login.java ( Servlet )



import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 *
 * @author Administrator
 */
public class Login extends HttpServlet {

    /**
     * Processes requests for both HTTP
     * <code>GET</code> and
     * <code>POST</code> methods.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
  
 
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        //Do Nothing
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        String username = request.getParameter("username");
        String password = request.getParameter("password");
       
        response.setContentType("text/html");
        PrintWriter out = response.getWriter();
        if(username.equals("Ren") && password.equals("Ren")){
            RequestDispatcher rd = request.getRequestDispatcher("/Dispatch");
            rd.forward(request, response);
        } else {
            out.println("Username and/or Password wrong");
            RequestDispatcher rd = request.getRequestDispatcher("/index.jsp");
            rd.include(request, response);
        }
    }
}

File : Dispatch.java ( Servlet )

import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 *
 * @author Administrator
 */
public class Dispatch extends HttpServlet {

    /**
     * Processes requests for both HTTP
     * <code>GET</code> and
     * <code>POST</code> methods.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        //Do Nothing
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html");
        PrintWriter out = response.getWriter();
        
        String username = request.getParameter("username");
        out.println("Welcome"+username);
    }

}

File : web.xml ( Add config )


 

......
<servlet>
<servlet-name>Login</servlet-name>
<servlet-class>ServletPackage.Login</servlet-class>
</servlet>
<servlet>
<servlet-name>Dispatch</servlet-name>
<servlet-class>ServletPackage.Dispatch</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Login</servlet-name>
<url-pattern>/Login</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>Dispatch</servlet-name>
<url-pattern>/Dispatch</url-pattern>
</servlet-mapping>
......

Contoh merupakan case login, jika usernama= “Ren” dan Passwor=”Ren” maka RequestDispatcher akan memforward request ke servlet dispatch, jika salah maka RequestDispatcher akan men-include response “Username and/or Password wrong” kedalam resource index.jsp.

Halaman login :

Login

Login

Login berhasil :

Login Berhasil

Login Berhasil

Login gagal:

Login Gagal

Login Gagal

Semoga bermanfaat.

Java Servlet [ Part 4 ]

July 21, 2013 Leave a comment
  • ServletContext Interface

Object dari ServletContext dibuat oleh web container saat deploy project. Object ini digunakan untuk memperoleh nilai konfigurasi yang terdapat pada file web.xml . Object dari ServletContext hanya ada satu untuk setiap web-app. Berikut ini method yang terdapat pada ServletContext interface :

String getInitParameter(String name)

Enumeration getInitParameterNames()

String getContextPath()

ServletContext getContext()

void setAttribute(String name, Object object)

Untuk lebih detail tentang ServletContext Interface dapat dibaca disini.

  • ServletConfig Interface

Object dari ServletContext dibuat oleh web container untuk setiap servlet. Object ini digunakan untuk memperoleh nilai konfigurasi yang terdapat pada file web.xml  sehingga jika nilai konfigurasi diubah kita tidak perlu mengubah servlet. Berikut ini method yang terdapat pada ServletConfig interface:

String getInitParameter(String name)

Enumeration getInitParameterNames()

ServletContext getServletContext()

String getServletName()

Untuk lebih detail tentang ServletConfig Interface dapat dibaca disini.

Semoga bermanfaat.

Referensi : Dari berbagai sumber.

Java Servlet [ Part 3 ]

July 14, 2013 Leave a comment

Berikut ini interface dan class fundamental servlet ( Pendapat saya 🙂 ).

  • Servlet ( interface )

Servlet interface menyediakan semua behaviour  untuk semua servlet yang dibuat. Dalam membuat servlet, harus mengimplemtasikan semua method pada interface servlet tersebut ( directly / indirectly ). Berikut ini method pada interface Servlet.

  1. void destroy()
  2. ServletConfig getServletConfig()
  3. String getServletInfo()
  4. void service(ServletRequest request, ServletResponse response)
  5. void init(ServletConfig config)

Untuk lebih detail tentang interface Servlet dapat dibaca disini.

  • GenericServlet ( abstract class )

GenericServlet merupakan abstract class yang mengimplementasikan interface Servlet, ServletConfig dan Serializable. Class GenericServlet menyediakan semua implementasi method pada interface diatas kecuali method service()

  1. void destroy()
  2. String getServletInfo()
  3. ServletConfig getServletConfig()
  4. abstract void service(ServletRequest request, ServletResponse response)
  5. void init(ServletConfig config)
  6. ServletContext getServletContext()
  7. String getServletName()
  8. void Log(String message, Throwable t)
  9. String getServletInfo()
  10. Enumeration getInitParameterNames()
  11. String getInitParameter(String name)
  12. void init()

Untuk lebih detail tentang class GenericServlet dapat dibaca disini.

  • HttpServlet ( abstract class )

HttpServlet merupakan abstract class yang meng-extends GenericClass dan mengimplementasikan interface Serializable.

Berikut ini method pada class HttpServlet

  1. doPost ( HttpServletRequest req, HttpServletResponse res )
  2. doGet ( HttpServletRequest req, HttpServletResponse res )
  3. doDelete (HttpServletRequest req, HttpServletResponse res)
  4. doOption (HttpServletRequest req, HttpServletResponse res)
  5. doHead (HttpServletRequest req, HttpServletResponse res)
  6. doPut (HttpServletRequest req, HttpServletResponse res)
  7. doTrace (HttpServletRequest req, HttpServletResponse res)
  8. Long doLastModified( HttpServletRequest req )
  9. void service(HttpServletRequest req, HttpServletResponse res)
  10. void service(ServletRequest req, ServletResponse res)

Untuk lebih detail tentang class HttpServlet dapat dibaca sini.

Semoga bermanfaat. 🙂
Referensi : Dari berbagai sumber.

Java Servlet [ Part 2 ]

July 14, 2013 Leave a comment

Pada part 2 tentang Java servlet, akan berisi contoh sederhana tentang servlet. Seperti pada post sebelumnya

ada 3 method yang di-handle oleh servlet container yaitu method init(). service() dan destroy(). Berikut ini contohnya.

  • Buat New Project -> Java Web ( Saya editor NetBeans )
  • Buat servlet, ExampleServlet.java


import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 *
 * @author Ren
 */
public class ExampleServlet extends HttpServlet {

    
    @Override
    public void init(){
      System.out.println("Method init() is called");
    }
    
    @Override
    public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html");
        
        PrintWriter out = response.getWriter();
        out.println("<html><body>");
        out.println("<b>Method service() is called</b>");
        out.println("</body></html>");
    }
    
    @Override
    public void destroy(){
       System.out.println("Method destroy is called");
    }

}

  • Edit web.xml pada project yang telah dibuat, tambahkan konfigurasi sebagai berikut :


 <servlet>
         <servlet-name>ExampleServlet</servlet-name>
         <servlet-class>ExampleServlet</servlet-class>
    </servlet>
  <servlet-mapping>
        <servlet-name>ExampleServlet</servlet-name>
        <url-pattern>/ExampleServlet</url-pattern>
  </servlet-mapping>

  • Run project yang telah dibuat. lalu hit pattern sesuai dengan konfigurasi yang telah dibuat misal untuk project yang telah saya buat http://localhost:8095/FirstServlet/ExampleServlet .
  • Setelah kita hit url tersebut maka method init() akan dijalankan, kemudian method service(). Berikut ini screen capture pada console servlet container.

    Method init

    Method init

    Screen capture method service() pada browser.

    Method service

    Method service

    Screen capture method destroy() pada console setelah servlet container unloaded servlet yang kita buat.

    Method destroy

    Method destroy

    Semoga bermanfaat. 🙂

    Referensi : Dari berbagai sumber.

    Java Servlet [ Part 1 ]

    July 7, 2013 Leave a comment

    Java servlet adalah object Java yang merespon terhadap HTTP Request. Java servlet berjalan di Java web server ( GlashFish, Tomcat ). Java servlet merupakan salah satu bagian dari Java web application. Sebuah Java web server dan servlet container dapat menjalankan beberapa aplikasi web pada saat yang sama, dengan masing-masing dapat memiliki beberapa servlet berjalan di dalam aplikasi web tersebut. Cara kerja dari Java servlet kurang lebih sebagai berikut :

    • Browser mengirim HTTP Request ke Java web server
    •  Java web server melakukan pengecekan apakah request tersebut untuk servlet
    •  Jika request tersebut untuk servlet, maka servlet container akan mencari servlet yang sesuai request dan mengaktifkan servlet
    • Servlet memproses request dan menghasilkan respond
    • Respond di kirim kembali browser

    Servlet mempunyai daur hidup yang diatur oleh servlet container sebagai berikut :

    • Load servlet class
    • Create object  dari servlet class
    • Panggil method init () dari servlet object untuk melakukan inisialisasi object servlet
    • Panggil method service() dari servlet object untuk setiap HTTP Request
    • Panggil method destroy() dari servlet object

    Ilustrai daur hidup servlet.

    Daur Hidup Servlet

    Daur Hidup Servlet

    Daur hidup servlet untuk point 1, 2, 3 dan 5 hanya dieksekusi satu kali sedangkan point 4 dilakukan lebih dari sesui dengan jumlah HTTP Request.

    Semoga bermanfaat.

    Referensi : Dari Berbagai Sumber.