Menginstall Play Framework


Play Framework

Play Framework

Play Framework adalah web framework untuk Scala dan Java. Saat ingin membuat website menggunakan play framework, kita bisa pilih mau pake Java atau mau pake Scala sebagai bahasa pemrograman utamanya. Kali ini kita akan mencoba menginstall dan membuat project menggunakan play framework.

1. Download Typesafe Activator

Pertama download dulu Tyfesafe Activator, ini adalah platform yang bisa kita gunakan untuk membuat project play framework dan menjalankan project play framework. Silahkan download typesafe activator di halaman berikut (http://typesafe.com/activator) Baca lebih lanjut

Servlet 3 – Menambahkan Data ke Session


Session merupakan tempat yang dapat kita gunakan untuk menyimpan data, namun data yang ada dalah Session tidaklah permanen, data tersebut akan hilang secara otomatis ketika pengguna menutup aplikasi perambah yang digunakan atau jika pengguna lama tidak melakukan interaksi dengan website, misal selama 30 menit. Session biasa digunakan untuk menyimpan data sementara, contohnya dalam ecommerce biasanya terdapat keranjang belanja, dan biasanya keranjang belanja di simpan dalam sebuah session. Dan contoh-contoh yang lainnya. Kali ini kita akan mencoba melakukan proses penambahan data yang disimpan dalam session menggunakan Servlet 3.

Pertama kita buat halaman HTML untuk menampilkan form input data, misal data orang dengan input data “nama depan”, “nama belakang”, “tanggal lahir” dan “email”.

<!doctype html>
<html>
    <head>
        <title>Session</title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    </head>
    <body>
        <h1>Input Data</h1>
        <form action="Session" method="post">
            <table>
                <tbody>
                    <tr>
                        <td>Nama Depan :</td>
                        <td><input type="text" name="nama_depan"/></td>
                    </tr>
                    <tr>
                        <td>Nama Belakang :</td>
                        <td><input type="text" name="nama_belakang"/></td>
                    </tr>
                    <tr>
                        <td>Tanggal Lahir :</td>
                        <td><input type="text" name="tanggal_lahir"/></td>
                    </tr>
                    <tr>
                        <td>Email :</td>
                        <td><input type="text" name="email"/></td>
                    </tr>
                    <tr>
                        <td></td>
                        <td><input type="submit" value="Simpan"/></td>
                    </tr>
                </tbody>
            </table>
        </form>
    </body>
</html>

Setelah itu kita buat Servlet untuk menampung data yang dimasukkan dari halaman HTML yang telah dibuat :

package khannedy.web.servlet;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet(name = "Session", urlPatterns = {"/Session"})
public class SessionServlet extends HttpServlet {

    private static final long serialVersionUID = 1L;

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        @SuppressWarnings("unchecked")
        List<Object[]> list = (List<Object[]>) request.getSession().getAttribute("data");

        if (list == null) {
            list = new ArrayList<Object[]>();
            request.getSession().setAttribute("data", list);
        }

        Object[] objects = new Object[4];
        objects[0] = request.getParameter("nama_depan");
        objects[1] = request.getParameter("nama_belakang");
        objects[2] = request.getParameter("tanggal_lahir");
        objects[3] = request.getParameter("email");

        list.add(objects);

        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        try {
            out.println("<html>");
            out.println("<head>");
            out.println("<title>Servlet SessionServlet</title>");
            out.println("</head>");
            out.println("<body>");
            out.println("<h1>Daftar Data</h1>");
            out.println("<table border='1'>");
            out.println("<thead>");
            out.println("<tr>");
            out.println("<td>Nama Depan</td>");
            out.println("<td>Nama Belakang</td>");
            out.println("<td>Tanggal Lahir</td>");
            out.println("<td>Email</td>");
            out.println("</tr>");
            out.println("</thead>");
            out.println("<tbody>");

            for (Object[] data : list) {
                out.println("<tr>");
                out.println("<td>" + data[0] + "</td>");
                out.println("<td>" + data[1] + "</td>");
                out.println("<td>" + data[2] + "</td>");
                out.println("<td>" + data[3] + "</td>");
                out.println("</tr>");
            }

            out.println("</tbody>");
            out.println("</table>");
            out.println("</body>");
            out.println("</html>");
        } finally {
            out.close();
        }
    }
}

Hasilnya :

Screenshot-Session - Google Chrome

Screenshot-Session - Google Chrome

Screenshot-Servlet SessionServlet - Google Chrome

Screenshot-Servlet SessionServlet - Google Chrome

Servlet 3 – Penggunaan RequestDispatcher untuk Melakukan Forward Request


Dalam javadoc, RequestDispatcher merupakan :

Defines an object that receives requests from the client and sends them to any resource (such as a servlet, HTML file, or JSP file) on the server. The servlet container creates the RequestDispatcher object, which is used as a wrapper around a server resource located at a particular path or given by a particular name.

Dengan begitu, RequestDispatcher dapat kita gunakan untuk memforward request ke halaman lain, contohnya misal saat ini kita akan memcoba membuat sebuah halaman untuk manipulasi data Person, dimana hanya menggunakan sebuah Servlet. Misal saat pengguna membuka halaman :

Jika untuk melakukan render halaman dilakukan, maka hal ini akan sangat menyulitkan, oleh sebab itu ada baiknya jika kita membuat halaman daftar person dan create person pada file yang berbeda, misal kita membuat halaman list.html untuk menampilkan data seluruh person.

<!doctype html>
<html>
    <head>
        <title>List of Person</title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    </head>
    <body>
        <table border="1">
            <thead>
                <tr>
                    <th>Id</th>
                    <th>First Name</th>
                    <th>Last Name</th>
                    <th>Birthday</th>
                </tr>
            </thead>
            <tbody>
                <tr>
                    <td>1</td>
                    <td>Eko Kurniawan</td>
                    <td>Khannedy</td>
                    <td>29 Desember 1988</td>
                </tr>
                <tr>
                    <td>1</td>
                    <td>Eko Kurniawan</td>
                    <td>Khannedy</td>
                    <td>29 Desember 1988</td>
                </tr>
                <tr>
                    <td>2</td>
                    <td>Eko Kurniawan</td>
                    <td>Khannedy</td>
                    <td>29 Desember 1988</td>
                </tr>
                <tr>
                    <td>3</td>
                    <td>Eko Kurniawan</td>
                    <td>Khannedy</td>
                    <td>29 Desember 1988</td>
                </tr>
                <tr>
                    <td>4</td>
                    <td>Eko Kurniawan</td>
                    <td>Khannedy</td>
                    <td>29 Desember 1988</td>
                </tr>
                <tr>
                    <td>5</td>
                    <td>Eko Kurniawan</td>
                    <td>Khannedy</td>
                    <td>29 Desember 1988</td>
                </tr>
            </tbody>
        </table>
    </body>
</html>

dan membuat halaman create.html untuk menampilkan form halaman input data person.

<!doctype html>
<html>
    <head>
        <title>Create New Person</title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    </head>
    <body>
        <h1>Create New Person</h1>
        <form method="POST">
            <table>
                <tbody>
                    <tr>
                        <td>First Name :</td>
                        <td><input type="text" name="first_name"/></td>
                    </tr>
                    <tr>
                        <td>Last Name :</td>
                        <td><input type="text" name="last_name"/></td>
                    </tr>
                    <tr>
                        <td>Birthday :</td>
                        <td><input type="text" name="birthday"/></td>
                    </tr>
                    <tr>
                        <td></td>
                        <td><input type="submit" value="Create"/></td>
                    </tr>
                </tbody>
            </table>
        </form>
    </body>
</html>

setelah itu baru buat servlet untuk menangani request browser.

package khannedy.web.servlet;

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

@WebServlet(name = "Person", urlPatterns = {"/Person"})
public class PersonServlet extends HttpServlet {

    private static final long serialVersionUID = 1L;

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

        String action = request.getParameter("action");
        if (action == null) {
            action = "list";
        }

        if (action.equals("create")) {
            request.getRequestDispatcher("/WEB-INF/page/create.html").forward(request, response);
        } else if (action.equals("list")) {
            request.getRequestDispatcher("/WEB-INF/page/list.html").forward(request, response);
        } else {
            response.sendError(HttpServletResponse.SC_NOT_FOUND);
        }

    }
}

hasilnya adalah :

Screenshot-List of Person - Google Chrome

Screenshot-List of Person - Google Chrome

Screenshot-Create New Person - Google Chrome

Screenshot-Create New Person - Google Chrome

Servlet 3 – Penggunaan Redirect


Redirect adalah salah satu yang dapat dilakukan untuk memaksa browser untuk membuka halaman yang telah ditentukan. Misal saat orang mengakses halaman http://www.contoh.com/admin/, dikarenakan orang tersebut belum melakukan proses autentikasi, maka browser dipaksa untuk membuka halaman http://www.contoh.com/login untuk melakukan autentikasi terlebih dahulu. Hal ini dapat kita lakukan di Servlet, contoh :

package khannedy.web.servlet;

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

@WebServlet(name = "Redirect", urlPatterns = {"/Redirect"})
public class RedirectServlet extends HttpServlet {

    private static final long serialVersionUID = 1L;

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String url = request.getParameter("redirect_to");
        
        if(url == null){
            url = "http://www.google.co.id";
        }
        
        response.sendRedirect(url);
    }
}

Hasilnya saat pengguna membuka halaman http://localhost:8080/WebApplication/Redirect?redirect_to=http://www.facebook.com/ maka browser akan membuka halaman Facebook, atau jika pengguna membuka halaman http://localhost:8080/WebApplication/Redirect maka browser akan membuka halaman Google.

Servlet 3 – Menyimpan Data ke Database MySQL Menggunakan JDBC


Pada artikel ini, saya menulis artikel tentang cara menyimpan data ke database MySQL menggunakan JDBC melalui servlet 3. Hal pertama yang perlu dilakukan adalah membuat database dan tabel di MySQL.

create database belajar;

use belajar;

create table barang(
     id integer primary key auto_increment,
     nama varchar(100) not null,
     harga_beli integer not null,
     harga_jual integer not null
)type=InnoDB;

Selanjutnya buatlah koneksi ke database yang telah dibuat, kita akan menggunakan WebListener untuk membuat koneksi tersebut.

package khannedy.web.listener;

import java.sql.Connection;
import java.sql.DriverManager;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;

@WebListener
public class ConnectionListener implements ServletContextListener {

    public static final String CONNECTION_KEY = "your_connection_key";

    @Override
    public void contextInitialized(ServletContextEvent sce) {
        try {
            Class.forName("com.mysql.jdbc.Driver").newInstance();
            Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/belajar", "root", "root");
            sce.getServletContext().setAttribute(CONNECTION_KEY, connection);
        } catch (Throwable t) {
            t.printStackTrace();
        }
    }

    @Override
    public void contextDestroyed(ServletContextEvent sce) {
        try {
            Connection connection = (Connection) sce.getServletContext().getAttribute(CONNECTION_KEY);
            connection.close();
        } catch (Throwable t) {
            t.printStackTrace();
        }
    }
}

Setelah itu buat halaman HTML untuk menampung input data yang akan dikirim ke servlet

<!doctype html>
<html>
    <head>
        <title>Menambah Data</title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    </head>
    <body>
        <h1>Tambah Data Barang</h1>
        <form method="post" action="SaveData">
            <table>
                <tbody>
                    <tr>
                        <td>Nama</td>
                        <td><input type="text" name="nama"/></td>
                    </tr>
                    <tr>
                        <td>Harga Beli</td>
                        <td><input type="text" name="harga_beli"/></td>
                    </tr>
                    <tr>
                        <td>Harga Jual</td>
                        <td><input type="text" name="harga_jual"/></td>
                    </tr>
                    <tr>
                        <td></td>
                        <td><input type="submit" value="Process"/></td>
                    </tr>
                </tbody>
            </table>
        </form>
    </body>
</html>

Setelah itu, buat servlet dimana digunakan untuk melakukan proses simpan data ke database MySQL.

package khannedy.web.servlet;

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
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 khannedy.web.listener.ConnectionListener;

@WebServlet(name = "SaveData", urlPatterns = {"/SaveData"})
public class SaveDataServlet extends HttpServlet {

    private static final long serialVersionUID = 1L;

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

        try {
            Connection connection = (Connection) getServletContext().getAttribute(ConnectionListener.CONNECTION_KEY);

            String sql = "insert into barang (nama, harga_beli, harga_jual) values (?, ?, ?);";

            PreparedStatement statement = connection.prepareStatement(sql);
            statement.setString(1, request.getParameter("nama"));
            statement.setInt(2, Integer.parseInt(request.getParameter("harga_beli")));
            statement.setInt(3, Integer.parseInt(request.getParameter("harga_jual")));
            statement.executeUpdate();
            statement.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }

        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        try {
            out.println("<html>");
            out.println("<head>");
            out.println("<title>Servlet SaveDataServlet</title>");
            out.println("</head>");
            out.println("<body>");
            out.println("<h1>Berhasil Menambah Data Barang</h1>");
            out.println("</body>");
            out.println("</html>");
        } finally {
            out.close();
        }
    }
}

Hasilnya :

Screenshot-Menambah Data - Google Chrome

Screenshot-Menambah Data - Google Chrome

Screenshot-Servlet SaveDataServlet - Google Chrome

Screenshot-Servlet SaveDataServlet - Google Chrome

Screenshot-echo@echo-ubuntu: ~ - Terminal

Screenshot-echo@echo-ubuntu: ~ - Terminal

Custom Validator dalam Java Server Faces 2


Java

Java

Salah satu hal yang sangat memudahkan untuk para pengguna Java Server Faces adalah kemudahan ketika melakukan proses validasi terhadap input yang dimasukkan oleh pengguna website. JSF mendukung pembuatan custom validator, dimana kita dapat membuat validator yang sesuai dengan yang kita inginkan.

Secara default, JSF memiliki validator untuk melakukan validasi seperti angka, tanggal, panjang input, dan lain-lain. Namun JSF tidak memiliki validator untuk melakukan proses validasi terhadap hal yang spesifik, misal validator untuk memvalidasi bahwa input masuk NIM harus sesuai dengan ketentuan Universitas 😀 Oleh karena itu, mau tidak mau, kita harus membuatnya secara manual. Namun pembuatan validator di Java Server Faces sangatlah mudah.

Membuat Kelas Validator

Validator dalam JSF direpresentasikan oleh sebuah interface Validator (javax.faces.validator.Validator), sehingga jika kita akan membuat Validator baru, maka kita harus membuat kelas yang mengimplementasi interface Validator tersebut. Misal saya akan membuat Validator untuk melakukan validasi Nim : Baca lebih lanjut

Servlet sebagai Controller dan JSP sebagai View


pada tulisan ini saya akan membahas tentang cara develop web yang baik jika menggunakan servlet + jsp. hampir mirip dengan konsep model view controller, dimana disini controller dibuat menggunakan servlet, view dibuat menggunakan jsp dan model nya adalah terserah anda, yang penting dia merepresentasikan sebuah data 😀

pertama, buatlah project java web application menggunakan netbeans. disini saya menggunakan glassfish versi 3, karena tomcat belum mendukung servlet 3.

kedua, karena saya menggunakan database, jadi saya buat koneksi ke database menggunakan jdbc, sengaja saya menggunakan jdbc, tidak menggunakan hibernate atau jpa, karena banyak temen-temen yang menyarankan untuk menggunakan jdbc saja, karena banyak yang belum mengerti jpa atau hibernate.

ketiga, saatnya membuat controller. seperti saya bilang sebelumnya, kalau controller menggunakan servlet, jadi disini anda perlu membuat servlet. servlet ini berguna untuk mengambil data dari database dan menyimpannya dalam model, dimana setelah itu data dalam model akan ditampilkan menggunakan jsp.

keempat, setelah data diambil dari database lewat servlet, tampilkan data tersebut menggunakan jsp, sehingga jsp disini berperan sebagai view.

terakhir, setelah semuanya selesai, saatnya menjalankan java web application tersebut.

teknik ini sangat baik digunakan, sehingga kode yang kita buat tidak bercampur aduk antar view dan controller. karena kebanyakan biasanya seseorang menumpuk proses bisnis logic seperti load data dalam jsp, sehingga kodenya akan bertumpuk seluruhnya di jsp. hal ini bisa dilakukan namun tidak direkomendasikan, karena jika web aplikasi sudah besar, maka hal ini akan membuat kode yang kita buat sulit dimengerti. oleh karena ini diperlukan pemisahan antara bisnis logic dan antarmuka, dimana bisnis logic dilakukan di servlet dan antarmuka dilakukan di jsp 😀

silahkan download sourcecodenya disini :

http://swing-usu.googlecode.com/files/hr.sql
http://swing-usu.googlecode.com/files/servlet-jsp.zip

Project Hello World Google Web Toolkit Menggunakan Eclipse


artikel sebelumnya saya membahas tentang cara membuat project hello world google web toolkit tanpa menggunakan integrated development environment. dan pada artikel sekarang ini, saya akan membahas cara menggunakan eclipse ide sebagai ide untuk membangun aplikasi google web toolkit.

sebelumnya pastikan eclipse ide sudah terinstall plugin google, jika belum silahkan install menggunakan google plugin yang bisa anda lihat cara menginstallnya disini :

http://code.google.com/intl/id/webtoolkit/usingeclipse.html

setelah eclipse terinstall plugin google, saatnya membuat project google web tookit.

saya membuat project gwt menggunakan terminal, hal ini dikarenakan jika anda membuatnya menggunakan eclipse, maka project gwt yang dibuat tidak langsung terintegrasi dengan ant. sehingga supaya bisa langsung terintegrasi dengan ant, anda perlu membuat project gwt lewat terminal.

setelah membuat project lewat terminal, sekarang import projectnya ke dalam eclipse, sehingga kita dapat melakukan manipulasi isi project tersebut menggunakan eclipse, caranya :

setelah selesai project ada dalam eclipse, saatnya menjalankan project gwt yang telah dibuat. caranya sangat mudah.

mudah bukan? 😀