Server web juga disebut server protokol transfer hiperteks. Mereka menggunakan HTTP untuk berkomunikasi dengan klien mereka. Server web berbasis Java akan menggunakan dua kelas penting.
kelas java.net.socket dan kelas java.net.serversocket, dan berkomunikasi berdasarkan pengiriman pesan http.
Server web sederhana ini akan memiliki tiga kelas berikut:
*Httpserver
*Meminta
*Tanggapan
Entri aplikasi di kelas httpserver, metode main() membuat instance httpserver, dan kemudian memanggil metode waait (). Seperti namanya, metode await() akan menunggu permintaan HTTP pada port yang ditentukan, memprosesnya, dan kemudian mengirim pesan respons kembali ke klien. Itu akan tetap menunggu sampai perintah shutdown diterima.
Aplikasi hanya mengirimkan permintaan sumber daya statis yang terletak di direktori yang ditentukan, seperti file dan gambar HTML, dan juga dapat menampilkan aliran byte permintaan HTTP yang masuk ke konsol, tetapi tidak mengirim informasi header apa pun ke browser, seperti tanggal atau cookie, dll.
Meminta:
Paket cn.com.server; impor java.io.inputStream; permintaan kelas publik {inputsstream input private; string private uri; permintaan publik (inputStream input) {this.input = input;} public void parse () {// baca satu set karakter dari socket StringBuffer permintaan = new stringBuffer (204) {// baca satu set karakter dari socket stringBuffer permintaan = new stringBuffer (204) {204 (204 (204) dari Socket StringBuffer permintaan = New StringBuffer (204) {204) dari Socket StringBuFFer = New StringBuffer (204 (204) {204) dari Socket StringBuFFer = New StringBuffer (204) {204) {i = input.read (buffer);} catch (Exception e) {e.printstacktrace (); i = -1;} untuk (int j = 0; j <i; j ++) {request.append ((char) buffer [j]);} system.out.print (request.tostring (); uRri (j]);} System.out.print (request.ToString (); Urri; parseuri (String requestString) {int index1, index2; index1 = requestString.indexof (""); if (index1! =-1) {index2 = requestString.indexof ("", index1+1); if (index2> index1) {return questString.substring (index1+1, index2) {index2> index1) {return} {} {} {} {{index1) {indeks2) {{index2) {{index2) {{index2) {indexs1; this.uri;}} Kelas permintaan mewakili permintaan HTTP. Objek InputStream dapat diteruskan untuk membuat objek permintaan. Metode read() dalam objek InputStream dapat dipanggil untuk membaca data asli dari permintaan HTTP.
Metode parse() dalam kode sumber di atas digunakan untuk menguraikan data asli dari permintaan HTTP. Metode parse () akan memanggil metode pribadi parseUrI() untuk menguraikan http yang diminta URI. Terlepas dari ini, tidak ada banyak pekerjaan. Metode parseUri() menyimpan URI di URI variabel, dan memanggil metode publik getUri() akan mengembalikan URI yang diminta.
Tanggapan:
Paket cn.com.server; impor java.io.file; impor java.io.fileInputStream; impor java.io.ioException; impor java.io.outputStream;/** * http respons = crlf-head-header * crins * crins * crins * cr crlf * cr crlf * cr crlf * crins * Status-Code SP Reason-Phrase Crlf * */Respons Kelas Publik {private static final int buffer_size = 1024; permintaan permintaan; outputStream output; respons publik (outputStream output) {this.output = output;} public void setRequest (permintaan permintaan) {this.request = request;} public void public kREPREQUST (permintaan permintaan) {this.request = request;} public void public kREPREXED (request) {this.request = request;} public void public kREPREQUS bytes = byte baru [buffer_size]; FileInputStream fis = null; coba {file file = file baru (httpserver.web_root, request.geturi ()); if (file.exists ()) {fis = fileInputStream baru (file); int); ch = fis.read (bytes, 0, buffer_size); while (ch! =-1) {output.write (byte, 0, buffer_size); ch = fis.read (bytes, 0, buffer_size);} {4 404 {// File tidak ditemukan string errormessage = "http/http/ "Tipe konten: teks/html/r/n"+ "panjang konten: 23/r/n"+ "/r/n"+ "<h1> file tidak ditemukan </h1>"; output.write (errorMessage.getbytes ());}} (pengecualian e) {System.out.println (E.ToString (); akhirnya {if (fis! = null) {fis.close ();}}}} Objek respons dibuat dalam metode await() dari kelas HTTPSERVER dengan melewati outputStream yang diperoleh di soket.
Kelas respons memiliki dua metode publik: setRequest() dan sendStaticResource() . Metode setRequest() akan menerima objek permintaan sebagai parameter. Metode sendStaticResource() digunakan untuk mengirim sumber daya statis ke browser, seperti file HTML.
Httpserver:
Paket cn.com.server; impor java.io.file; import java.io.inputstream; import java.io.outputstream; import java.net.inetaddress; class public httpserver {landas. * Untuk paket ini, Web_root adalah direktori "Webroot" di bawah direktori * yang berfungsi. * Direktori yang berfungsi adalah lokasi dalam sistem file * dari mana perintah java dipanggil. */string akhir statis public web_root = system.getProperty ("user.dir")+file.separator+"webroot"; string final private statis shutdown_command = "/shutdown"; private boolean shutdown = false public static void main (string [] args) {httpserver server = https = https public https (string [] args) {httpserver server = httserver = https public https server (httpserver = httpserver server = httpserver public; wait () {serversocket serversocket = null; int port = 8080; coba {serversocket = server new (port, 1, inetaddress.getbyname ("127.0.0.1");} catch (exception e) {e.printstackrace (); System.exit (0); input = null; outputStream output = null; coba {socket = serversocket.accept (); input = socket.getInputStream (); output = socket.getoutputStream (); // buat objek permintaan dan permintaan parse = input baru); request.parse (); // Buat respons respons respons = baru permintaan = input); request.parse (); // Buat respons respons respons = new = Respons (output); response.setRequest (request); response.sendstaticResource ();} catch (exception e) {e.printstacktrace (); lanjutkan;}}}} Kelas ini mewakili server web yang dapat menangani permintaan sumber daya statis dari direktori yang ditentukan, termasuk direktori yang ditentukan oleh final variabel statis publik web_root dan semua subdirektori.
Sekarang buat halaman HTML di webroot, bernama index.html, kode sumbernya sebagai berikut:
<! Doctype html> <html> <head> <meta charset = "utf-8"> <title> masukkan judul di sini </itement> </head> <hod> <h1> halo dunia! </h1> </body> </html>
Sekarang mulailah server web dan minta halaman statis index.html.
Output dari konsol yang sesuai:
Dengan cara ini, server HTTP sederhana selesai.
Di atas adalah semua tentang implementasi Java dari analisis instance server web sederhana, saya harap ini akan membantu semua orang. Teman yang tertarik dapat terus merujuk ke topik terkait lainnya di situs ini. Jika ada kekurangan, silakan tinggalkan pesan untuk menunjukkannya. Terima kasih teman atas dukungan Anda untuk situs ini!