Sabtu, 14 Februari 2015

Servlet Filter dan Listener

Tugas Servlet Filter dan Listener

Filter Login

1.index.html

2.Loginservlet.java


3.Loginsuccess.jsp

5.Logoutservlet.java


6.RequestLoggingFilter.java


7.AuthenticationFilter.java



8.Web.xml






Servlet Context dan Listener


ServletContext adalah suatu interface yang digunakan untuk berkomunikasi dengan servletcontainer.
Dalam sebuah aplikasi web hanya terdapat satu ServletContext saja, dan seluruh
komponen aplikasi web dapat saling menggunakannya. Berikut ini adalah daftar method yang
sering digunakan yang berada di interface ServletContext :
setAttribute (String name, Object object) Berfungsi untuk membuat suatu attribute dengan
nama dan object tertentu.
getAttribute(String name) Berfungsi untuk mengembalikan nilai dari suatu attribute
tertentu.
getAttributeNames() Berfungsi untuk mengembalikan nama2 semua attribute yang ada dalam
ServletContext.
removeAttribute(String name). Berfungsi untuk mengahapus suatu attribute tertentu.
getServletContextName() Berfungsi untuk mengambil nilai yang berada di dalam elemen yang
berada di file web.xml.
getInitParameter(String name) Berfungsi untuk mengambil nilai paramater yang sudah
diinisaliasikan di file web.xml.
getInitParameterNames() Berfungsi untuk mengambil semua nama parameter yang ada.
getServerInfo() Berfungsi untuk mengambil nama dan versi dari servlet-container.
Formatnya adalah servername/versionnumber.
getRealPath(String path) Berfungsi untuk mengambil real path dari suatu aplikasi web.
Real path disini maksudnya letak direktori file2 aplikasi web tersebut.
log(String log) Berfungsi untuk menulis suatu pesan/log. Log yang kita buat ini bisa
dilihat di Apache Tomcat xxx.Log (Jika menggunakan netbeans, terletak di bagian output).
Sedangkan ContextListener berfungsi seperti listener di java yaitu mendeteksi suatu
event dan memberikan respons terhadap event tersebut. Di dalam servlet, jika kita
mendeklarasikan sebuah listener pada objek tertentu, maka servlet-container akan
menghasilkan event yang sesuai pada saat terjadi perubahan dalam objek tersebut. Berikut
ini adalah beberapa interface listener bisa digunakan di servlet:
ServletContextListener
ServletContextAttributeListener
ServletRequestListener
ServletRequestAttributeListener
HttpSessionListener
HttpSessionAttributeListener
Sekarang langsung saja buat sebuah project java web baru dengan nama MyServletListener
menggunakan IDE kalian (saya menggunakan netbeans), lalu tambahkan code berikut di file
index.jsp/ index.html
<a href="getServletContext.do">view servlet context</a>

kemudian buat servlet baru dengan nama ServletContextClass seperti gambar berikut :






setelah itu jangan lupa centang add information to deployment description



lalu ubah file ServletContextClass.java menjadi seperti berikut :






setelah itu buat class untuk mengimplementasikan setiap interface listenernya.
Tambahkan file listener baru dengan nama ServletContextListenerClass. dan berikut 
langkah langkahnya :






Setelah itu ubah kode yang ada pada file ServletContextListenerClass.java menjadi
seperti ini berikut :


ServletContextAttributeListener
Selanjutnya buat file ServerListener dengan nama ServletContextAttributeListenerClass,
pada bagian Interfaces to Implement, pilih Context Attribute Listener


Kemudian ubah kode file class tersebut menjadi sepserti ini :


Ketika ada suatu attribute baru yang ditambahkan ke dalam servlet-context maka fungsi attributeAdded akan dijalankan, ketika suatu attribute dihapus maka fungsi attributeRemoved dijalankan, dan ketika suatu attribute diubah nilainya maka fungsi attributeReplaced dijalankan.

ServletRequestListener
Selanjutnya buat file ServerListener dengan nama ServletRequestListenerClass, pada kolom
Interfaces to Implement pilih Request Listener :


Kemudian ubah kode file class tersebut menjadi sepserti ini:


ServletRequestAttributeListener

Selanjutnya buat file ServerListener dengan nama ServletRequestAttributeListenerClass, pada kolom
Interfaces to Implement pilih Servlet Request Attribute Listener:


Kemudian ubah kode file class tersebut menjadi sepserti ini:


HttpSessionListener
Selanjutnya buat file ServerListener dengan nama HttpSessionListenerClass, pada kolom


Kemudian ubah kode file class tersebut menjadi sepserti ini:


HttpSessionAttributeListener
Selanjutnya buat file ServerListener dengan nama HttpSessionAttributeListenerClass, pada
kolom Interfaces to Implement pilih HTTP Session Attribute Listener:


Kemudian ubah kode file class tersebut menjadi sepserti ini:



Sekarang daftarkan class ServletContextClass sebagai sebuah servlet dan keenam class di
atas sebagai sebuah listener. Konfigurasinya kita lakukan di file web.xml, seperti ini:





ServletContext dan Listener-DB

Silakan rubah kode file-file tersebut dengan kode berikut ini :

DBConectionManager.java


MyServlet.java



AppContextListener.java



AppContextAttributeListener.java



MySessionListener.java



MyServletRequestListener.java



Jumat, 05 Desember 2014

Tutorial Create, Update dan Delete (CRUD) Menggunakan Hash Table Pada Java Servlet


Seperti pada judulnya kita akan membuat CRUD menggunakan hast table pada java servlet
berikut adalah tahapannya :

1. Jalankan netbean
2. Klik file - new project - categories : java - project : java aplication
3. Kemudian klik tombol next seperti gambar dibawah ini :















4.ketik nama project yang anda inginkan
5.kemudian klik tombol finish

setelah tahap pembuatan project selesai, tahap selanjutnya adalah scripting atau pembuatan code untuk CRUD.
pada tahap ini pertama kita akan membuat form login dan berikut adalah script untuk membuat halaman login :

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

import java.io.IOException;
import java.io.PrintWriter;
import java.util.Enumeration;
import java.util.Hashtable;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

/**
 *
 * @author Yuhando
 */
@WebServlet(urlPatterns = {"/UTS"})
public class Login extends HttpServlet {

    final String VALID_NAME = "YuhandoCharlilio";
    final String PASSWORD = "005131121105";
    final String CODE_VALID = "YuhandoCharlilio";
    String sesslog;
    /**
     * 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
     */
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        HttpSession session = request.getSession(true); //buat cek session
        if (request.getParameter("logout") != null) {
            session.removeAttribute("login");
            response.sendRedirect("Login"); //redirect ke alamat login
        }
        response.setContentType("text/html;charset=UTF-8");
        try (PrintWriter out = response.getWriter()) {
            /* TODO output your page here. You may use following sample code. */

            //form login
            out.println("<!DOCTYPE html>");
            out.println("<html>");
            out.println("<head>");
            out.println("<title>Login</title>");
            out.println("</head>");
            out.println("<body>");

            //ambil parameter user dan password
            String username = request.getParameter("username");
            String password = request.getParameter("password");
            String login = request.getParameter("login");
            boolean valid = false;
            if (login == null) {
                out.println("<h1 align='center'>Login</h1>"
                        + "<form name='login' action='' method='POST'>"
                        + "<table align='center'>"
                        + "<tr>"
                        + "<td>Username</td>"
                        + "<td> : </td>"
                        + "<td><input type='text' name='username'/></td>"
                        + "</tr>"
                        + "<tr>"
                        + "<td>Password</td>"
                        + "<td> : </td>"
                        + "<td><input type='password' name='password'/></td>"
                        + "</tr>"
                        + "<tr align='right'>"
                        + "<td colspan='3'><input type='submit' value='Login' name='login'/>&nbsp;"
                        + "<input type='reset' value='Reset' name='reset'/></td>"
                        + "</table>"
                        + "</form>");
            } else {
                if ((username.equalsIgnoreCase(VALID_NAME)) && (password.equalsIgnoreCase(PASSWORD))) {
                    valid = true;
                }
                if (username.equals("") || password.equals("")){
                    out.println("<script>alert('Silahkan Isi Username dan Password!');document.location.href=''</script>");
                }else if (!valid) {
                    out.println("<script>alert('Username atau Password Salah!');document.location.href=''</script>");
                    return;
                }
                    sesslog = "123";
                session.setAttribute("login", username);
                //link ke halaman content
                out.println("<script>alert('Selamat Datang " + session.getAttribute("login") + "!');document.location.href='Home'</script>");
            }
            out.println("</body>");
            out.println("</html>");
            out.close();
        }
    }  // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">

    /**
     * Handles the HTTP <code>GET</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 doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * 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 {
        processRequest(request, response);
    }

    /**
     * Returns a short description of the servlet.
     *
     * @return a String containing servlet description
     */
    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>
}

setelah proses scripting selesai jalankan file trus dengan cara klik kanan nama_file.java kemudian klik run file setelah itu tampilan form login akan tampil pada browser seperti pada gambari berikut ini :










Setelah membuat form login tahap selanjutnya adalah membuat form input dan tampilan gridnya berikut adalah scriptnya :

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

import java.io.IOException;
import java.io.PrintWriter;
import java.util.Enumeration;
import java.util.Hashtable;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

/**
 *
 * @author Yuhando
 */
@WebServlet(urlPatterns = {"/Home"})
public class Home extends HttpServlet {
    private Hashtable data = new  Hashtable();
    private String nimnya, namanya, jknya, jklaki, jkperem, tempatnya, tanggalnya, goldarnya, jurusannya, jrsA, jrsB, alamatnya, telpnya, emailnya;
        int jumlahData = 0;
        class dataL {

            String NIM, Nama, JK, TempatLahir, TanggalLahir, GolDarah, Jurusan, Alamat, Telp, Email;
            
            dataL(String nim, String nama, String jk, String tmptlhr, String tgl, String goldar, String jurus, String almt, String tel, String mail) {
                NIM = nim;
                Nama = nama;
                JK = jk;
                TempatLahir = tmptlhr;
                TanggalLahir = tgl;
                GolDarah = goldar;
                Jurusan = jurus;
                Alamat = almt;
                Telp = tel;
                Email = mail;
            }
        }
    /**
     * 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
     */
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        
        HttpSession session = request.getSession(true); //buat cek session

        if (request.getParameter("logout") != null) {
            session.removeAttribute("login");
            response.sendRedirect("Login"); //redirect ke alamat login
        }
        
        response.setContentType("text/html;charset=UTF-8");
        try (PrintWriter out = response.getWriter()) {
            /* TODO output your page here. You may use following sample code. */
                String delete = request.getParameter("del");
                String update = request.getParameter("upd");

                if(delete != null){
                    Enumeration en = data.keys();
                    Integer idnya = Integer.parseInt(delete);
                    data.remove(idnya);
                }
                if(update != null){
                    Enumeration en = data.keys();
                    Integer idnya = Integer.parseInt(update);
                    Home.dataL listnya = (Home.dataL) data.get(idnya);
                    nimnya = listnya.NIM;
                    namanya = listnya.Nama;
                    jknya = listnya.JK;
                    tempatnya = listnya.TempatLahir;
                    tanggalnya = listnya.TanggalLahir;
                    goldarnya = listnya.GolDarah;
                    alamatnya = listnya.Alamat;
                    telpnya = listnya.Telp;
                    emailnya = listnya.Email;
                    jurusannya = listnya.Jurusan;

                    if(jknya.equalsIgnoreCase("Laki-laki")){
                        jklaki = "checked='checked'";
                        jkperem = "";
                    }else if(jknya.equalsIgnoreCase("Perempuan")){
                        jklaki = "";
                        jkperem = "checked='checked'";
                    }else{
                        jklaki = "";
                        jkperem = "";
                    }
                    
                    if(jurusannya.equalsIgnoreCase("TI")){
                        jrsA = "checked='checked'";
                        jrsB = "";
                    }else if(jurusannya.equalsIgnoreCase("SI")){
                        jrsA = "";
                        jrsB = "checked='checked'";
                    }else{
                        jrsA = "";
                        jrsB = "";
                    }
                }else{
                    nimnya = "";
                    namanya = "";
                    jknya = "";
                    tempatnya = "";
                    tanggalnya = "";
                    goldarnya = "";
                    jurusannya = "";
                    alamatnya = "";
                    telpnya = "";
                    emailnya = "";
                }

                out.println("<!DOCTYPE html>");
                out.println("<html>");
                out.println("<head>");
                out.println("<title>Form Input Data</title>");            
                out.println("</head>");
                out.println("<body>");
                out.println("<form action='secretServlet' method='POST'>"
                        + "<p><a href='?logout'>Logout</a></form>");
                out.println("<h1>Form Input Data</h1>");
                out.println("<form name='Simpan' method='POST'>");
                out.println("<table>"
                        + "<tr>"
                        + "<td>NIM*</td>"
                        +"<td> : </td>"
                        +"<td><input type='text' name='nim' value='" + nimnya + "'/></td>"
                        + "</tr>"
                        + "<tr>"
                        + "<td>Nama*</td>"
                        + "<td> : </td>"
                        + "<td><input type='text' name='nama' value='" + namanya + "'/></td>"
                        + "</tr>"
                        + "<tr>"
                        + "<td>Jenis Kelamin*</td>"
                        + "<td> : </td>"
                        + "<td><input type='radio' name='JenisKelamin' value='L' " + jklaki + "/>Laki-laki"
                        + "<input type='radio' name='JenisKelamin' value='P' " + jkperem + "/>Perempuan</td>"
                        + "</tr>"
                        + "<tr>"
                        + "<td>Tempat, Tanggal Lahir*</td>"
                        + "<td> : </td>"
                        + "<td><input type='text' name='tempatlahir' value='" + tempatnya + "'/>"
                        + "<input type='text' name='tgllahir' value='" + tanggalnya + "'/></td>"
                        + "</tr>"
                        + "<tr>"
                        + "<td>Golongan Darah</td>"
                        + "<td> : </td>"
                        + "<td><select name='goldarah'>"
                        + "<option value='" + goldarnya + "' selected>" + goldarnya + "</option>"
                        + "<option value='A' selected> A </option>"
                        + "<option value='B' selected> B </option>"
                        + "<option value='AB' selected> AB </option>"
                        + "<option value='O' selected> O </option>"
                        + "</select></td>"
                        + "</tr>"
                        + "<tr>"
                        + "<td>Jurusan*<br><h5>(**pilih salah satu</h5></td>"
                        + "<td> : </td>"
                        + "<td><input type='checkbox' name='Jurusan' value='TI'" + jrsA + ">TI"
                        + "<input type='checkbox' name='Jurusan' value='SI'" + jrsB + ">SI</td>"
                        + "</tr>"
                        + "<tr>"
                        + "<tr>"
                        + "<td>Alamat*</td>"
                        + "<td> : </td>"
                        + "<td><textarea name='alamat'>" + alamatnya + "</textarea></td>"
                        + "</tr>"
                        + "<tr>"
                        + "<td>Telepon</td>"
                        + "<td> : </td>"
                        + "<td><input type='text' name='tel' value='" + telpnya + "'/></td>"
                        + "</tr>"
                        + "<tr>"
                        + "<td>Email*</td>"
                        + "<td> : </td>"
                        + "<td><input type='email' name='surat' value='" + emailnya + "'/></td>"
                        + "</tr>"
                        + "<tr>"
                        + "<td colspan='3' align='right'><input type='submit' value='Simpan' name='Simpan'/>"
                        + "<input type='reset' value='Reset' name='Reset'/></td>" 
                        +"</tr>");
                out.println("</table>");
                out.println("</form>");
                out.println("</body>");
                out.println("</html>");

                String jkString = null;
                String jrsString = null;
                String Simpan = request.getParameter("Simpan");
                String nim = request.getParameter("nim");
                String nama = request.getParameter("nama");
                String jk = request.getParameter("JenisKelamin");
                String tmplhr = request.getParameter("tempatlahir");
                String tgl = request.getParameter("tgllahir");
                String goldarah = request.getParameter("goldarah");
                String jurusan = request.getParameter("Jurusan");
                String alamat = request.getParameter("alamat");
                String tel = request.getParameter("tel");
                String mail = request.getParameter("surat");

                out.println("<br><br>");
                out.println("<table border='1' width='1000px'"
                        + "<tr>"
                        + "<td align='center'>No</td>"
                        + "<td align='center'>NIM</td>"
                        + "<td align='center'>Nama</td>"
                        + "<td align='center'>Jenis Kelamin</td>"
                        + "<td align='center'>Tempat, Tanggal Lahir</td>"
                        + "<td align='center'>Golongan Darah</td>"
                        + "<td align='center'>Jurusan</td>"
                        + "<td align='center'>Alamat</td>"
                        + "<td align='center'>Telepon</td>"
                        + "<td align='center'>Email</td>"
                        + "<td colspan=2 align='center'>Action</td>"
                        + "</tr>");

                if(Simpan != null){  
                    if(nim.equals("")){
                        out.print("<script>alert('NIM tidak boleh kosong!')</script>");
                    }else if(nama.equals("")){
                        out.print("<script>alert('Nama tidak boleh kosong!')</script>");
                    }else if(jk.equals("")){
                        out.print("<script>alert('Jenis Kelamin tidak boleh kosong!')</script>");
                    }else if(tmplhr.equals("")){
                        out.print("<script>alert('Tempat Lahir tidak boleh kosong!')</script>");
                    }else if(tgl.equals("")){
                        out.print("<script>alert('Tanggal lahir tidak boleh kosong!')</script>");
                    }else if(jurusan.equals("")){
                        out.print("<script>alert('Jurusan tidak boleh kosong!')</script>");
                    }else if(alamat.equals("")){
                        out.print("<script>alert('Alamat tidak boleh kosong!')</script>");
                    }else if(mail.equals("")){
                        out.print("<script>alert('Email tidak boleh kosong!')</script>");
                    }

                    if(jk.contains("P")){
                        jkString = "Perempuan";
                    }else{
                        jkString = "Laki-laki";
                    }
                    
                    if(jurusan.contains("TI")){
                        jrsString = "Teknik Informatika";
                    }else{
                        jrsString = "Sistem Informasi";
                    }

                    final Home.dataL LIST[]={
                        new Home.dataL(nim, nama, jkString, tmplhr, tgl, goldarah, jrsString, alamat, tel, mail)
                    };
                    for (int i = 0; i < LIST.length; i++) {  
                        jumlahData +=1;
                        if(update != null){
                            data.put(Integer.valueOf(update), LIST[i]);
                        }else{
                            data.put(new Integer(jumlahData), LIST[i]);
                        }

                    }

                }

                Enumeration en = data.keys();
                while (en.hasMoreElements()){
                    Integer key = (Integer) en.nextElement();
                    Home.dataL itemnya = (Home.dataL) data.get(key);   
                    String id_mahasiswa = key.toString();

                    String urlUpdate = "Home?upd=" + id_mahasiswa;
                    urlUpdate = response.encodeURL(urlUpdate);
                    String urlDelete = "Home?del=" + id_mahasiswa;
                    urlDelete = response.encodeURL(urlDelete);

                    out.println("<tr>");
                    out.println("<td align='center'>" + id_mahasiswa + "</td>");
                    out.println("<td align='center'>" + itemnya.NIM + "</td>");
                    out.println("<td align='center'>" + itemnya.Nama + "</td>");
                    out.println("<td align='center'>" + itemnya.JK + "</td>");
                    out.println("<td align='center'>" + itemnya.TempatLahir + ", " + itemnya.TanggalLahir + "</td>");
                    out.println("<td align='center'>" + itemnya.GolDarah + "</td>");
                    out.println("<td align='center'>" + itemnya.Jurusan + "</td>");
                    out.println("<td align='center'>" + itemnya.Alamat + "</td>");
                    out.println("<td align='center'>" + itemnya.Telp + "</td>");
                    out.println("<td align='center'>" + itemnya.Email + "</td>");
                    out.println("<td align='center'><a href='" + urlDelete + "'>Delete</a></td>");
                    out.println("<td align='center'><a href='" + urlUpdate + "'>Edit</a></td></tr>");

                }

                out.println("</table>");

        }
    }

    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /**
     * Handles the HTTP <code>GET</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 doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * 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 {
        processRequest(request, response);
    }

    /**
     * Returns a short description of the servlet.
     *
     * @return a String containing servlet description
     */
    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>

}

Setelah selesai scipting jalankan filenya dan berikut adalah tampilan form input beserta gridnya :


Sekian tutorial CURD menggunakan hast table pada java servlet, mohon maaf bila ada banyak kekurangan pada pembuatan tutorial ini, see u next time :D