11 April 2013

Membuat Web Server Sendiri dengan Java



Kita sudah tahu mengenai Apache yang merupakan web server paling populer. Namun, sebernarnya kita bisa membuat web server sederhana dengan meggunakan bahasa java.
Web server yang akan kita buat nantinya akan melakukan listening terus menerus sampai ada request di port 8080, kemudian akan menampilkan sebuah halaman web.

Pertama, import semua package yang diperlukan

import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;



Kita buat class WebServer

public class WebServer {

    protected void start() {
    ServerSocket s;

    System.out.println("Webserver starting up on port 9090");
    System.out.println("(press ctrl-c to exit)");
 
start() adalah method yang akan dipanggil untuk menjalankan web server.
Sedangkan s adalah sebuah Server Socket, yaitu Socket khusus yang akan bertindak sebagai penerima request dari luar.

Lalu kita buta inisialisasinya

try {
      s = new ServerSocket(8080); 
    } catch (Exception e) {
      System.out.println("Error: " + e);
      return;
    }
System.out.println("Waiting for connection");

s akan melakukan listening di port 8080.
Kemudian kita buat loop utama yang akan dilakukan terus menerus.

for (;;) {
      try {
          
        Socket remote = s.accept();

Variabel remote adalah socket yang akan menerima dan mengirim dari/ke koneksi luar yang sudah diterima s.

        System.out.println("Connection, sending data.");
        BufferedReader in = new BufferedReader(new InputStreamReader(
            remote.getInputStream()));
        PrintWriter out = new PrintWriter(remote.getOutputStream());

Variabel in adalah sebuah buffered reader yang bertugas menerima data dari socket remote. Sedangkan out adalah sebuah Print Writer yang bertugas menampilkan data yang dikirimkan remote.

Lalu, kita buat variabel bertipe string yang bertugas menerima dan menerjemahkan stream dari in menjadi string.

        String str = ".";
        while (!str.equals(""))
          str = in.readLine();

Kemudian Server akan melakukan instruksi ke browser bahwa data yang dikirimkan adalah berupa HTML.
 
        out.println("HTTP/1.0 200 OK");
        out.println("Content-Type: text/html");
        out.println("Server: Bot");
        out.println("");

Definisikan halaman yang akan kita coba buka beserta stream-stream yang diperlukan.

        FileInputStream fis = new FileInputStream("test.html");
    BufferedInputStream bis = new BufferedInputStream(fis);
    DataInputStream dis = new DataInputStream(bis);

Buat string yang akan membaca sebuah halaman html, kemudian tutup semua stream.

String show;
        while ((show = dis.readLine()) != null)
        {
            out.println(show);
        }
        fis.close();
        out.flush();
        remote.close();
      } catch (Exception e) {
        System.out.println("Error: " + e);
      }
    }
  }
}

Pembuatan kelas WebServer sudah selesai, sekarang kita buat kelas utamanya

package javawebserver;

public class JavaWebServer {

    public static void main(String[] args) {

        WebServer ws = new WebServer();
        ws.start();
    }
}

Nah, sekarang coba jalankan program kita, kemudian buka sebuah browser dan masukkan alamat : localhost:8080
Maka akan tampil halaman web yang sudah kita definisikan tadi (test.html).

0 Comments:

Post a Comment

Popular Posts