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

Iklan

Servlet 3 – Upload File


Pada artikel ini saya akan membahas tentang cara upload file (berkas) menggunakan Servlet 3. Saat ini upload file selalu digunakan pada jenis website apapun, seperti upload gambar photo profile, upload dokumen, dan lain-lain.

Untuk melakukan upload, kita perlu membuat sebuah halaman dengan form input yang menggunakan metode POST dan enctype-nya multipart/form-data, contoh :

<!doctype html>
<html>
    <head>
        <title>Upload File</title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    </head>
    <body>
        <form name="uploadform" action="UploadFile" method="POST" enctype="multipart/form-data">
            <input type="file" name="upload"/>
            <input type="submit" value="Upload"/>
        </form>
    </body>
</html>

Setelah itu, kita dapat membuat halaman Servlet 3 untuk menangani upload data file tersebut :

package khannedy.web.servlet;

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
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.Part;

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

    private static final long serialVersionUID = 1L;

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

        Part part = req.getPart("upload");

        String temp = part.getHeader("content-disposition").split(";")[2].trim();
        String filename = temp.substring("filename=\"".length(), temp.length() - 1);

        InputStream inputStream = part.getInputStream();
        FileOutputStream stream = new FileOutputStream(getServletContext().getRealPath("upload") + "/" + filename);

        int i = -1;
        while ((i = inputStream.read()) != -1) {
            stream.write(i);
        }

        stream.close();
        inputStream.close();

        resp.setContentType("text/html;charset=UTF-8");
        PrintWriter out = resp.getWriter();
        try {
            out.println("<html>");
            out.println("<head>");
            out.println("<title>Servlet SayHelloServlet</title>");
            out.println("</head>");
            out.println("<body>");
            out.println("<a href=\"upload/" + filename + "\">");
            out.println("Download Here");
            out.println("</a>");
            out.println("</body>");
            out.println("</html>");
        } finally {
            out.close();
        }
    }
}

hasilnya :

Screenshot-Upload File - Google Chrome

Screenshot-Upload File - Google Chrome

Screenshot-Servlet SayHelloServlet - Google Chrome

Screenshot-Servlet SayHelloServlet - Google Chrome

Servlet 3 – Contoh Parameter Menggunakan Metode POST


Pada artikel ini, saya akan membuat contoh tentang penggunaan parameter dan metode POST pada servlet. Hal pertama yang perlu dilakukan adalah membuat halaman HTML yang berisikan input form yang akan di berikan ke servlet. Pada halaman HTML, kita akan membuat input berupa name yang harus diisi oleh pengguna.

<html>
    <head>
        <title>Say Hello</title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    </head>
    <body>
        <form action="SayHello" method="post">
            <label for="name">Name :</label>
            <input id="name" name="name"/>
            <input type="submit" value="Say Hello"/>
        </form>
    </body>
</html>

Setelah itu buatlah servlet, pada servlet kita akan menampilkan tulisan Hello 'nama'.

package khannedy.web.servlet;

import java.io.IOException;
import java.io.PrintWriter;
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 = "SayHello", urlPatterns = {"/SayHello"})
public class SayHelloServlet extends HttpServlet {

    private static final long serialVersionUID = 1L;

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        resp.setContentType("text/html;charset=UTF-8");
        PrintWriter out = resp.getWriter();
        try {
            out.println("<html>");
            out.println("<head>");
            out.println("<title>Servlet SayHelloServlet</title>");
            out.println("</head>");
            out.println("<body>");
            out.println("<h1>Hello " + req.getParameter("name") + "</h1>");
            out.println("</body>");
            out.println("</html>");
        } finally {
            out.close();
        }
    }
}

Hasilnya seperti pada gambar dibawah ini :

Screenshot-Say Hello - Google Chrome

Screenshot-Say Hello - Google Chrome

Screenshot-Servlet SayHelloServlet - Google Chrome

Screenshot-Servlet SayHelloServlet - Google Chrome

Selamat mencoba 😀

Servlet 3 – Contoh Hello World


Project Servlet 3 ini membutuhkan Java Enterprise Edition versi 3, Anda perlu menggunakan Application Server atau Web Server yang sudah mendukung Servlet 3, seperti Glassfish 3, JBoss 6 atau Apache Tomcat 7.

package khannedy.web.servlet;

import java.io.IOException;
import java.io.PrintWriter;
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 = "HelloWorld", urlPatterns = {"/HelloWorld"})
public class HelloWorldServlet extends HttpServlet {

    private static final long serialVersionUID = 1L;

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        PrintWriter writer = resp.getWriter();
        writer.write("Hello World");
        writer.close();
    }
}

Hasilnya :

Screenshot-localhost:8080-WebApplication-HelloWorld - Google Chrome

Screenshot-localhost:8080-WebApplication-HelloWorld - Google Chrome

Selamat mencoba 😀