تسمى خوادم الويب أيضًا خوادم بروتوكول نقل النص التشعبي. يستخدمون HTTP للتواصل مع عملائهم. ستستخدم خوادم الويب المستندة إلى Java فئتين مهمتين.
java.net.socket فئة وفئة java.net.serversocke ، والتواصل بناءً على إرسال رسائل http.
سيحتوي خادم الويب البسيط هذا على الفئات الثلاثة التالية:
*httpserver
*طلب
*إجابة
يقوم إدخال التطبيق في فئة HTTPServer ، الطريقة main() بإنشاء مثيل httpserver ، ثم يستدعي طريقة AWAIT (). كما يوحي الاسم ، ستنتظر طريقة await() طلب HTTP على المنفذ المحدد ، ومعالجته ، ثم إرسال رسالة استجابة إلى العميل. سيبقى ينتظر حتى يتم استلام أمر الإغلاق.
يرسل التطبيق فقط طلبات للموارد الثابتة الموجودة في الدليل المحدد ، مثل ملفات وصور HTML ، ويمكنه أيضًا عرض دفق بايت HTTP الوارد إلى وحدة التحكم ، لكنه لا يرسل أي معلومات رأس إلى المتصفح ، مثل التواريخ أو ملفات تعريف الارتباط ، إلخ.
طلب:
package cn.com.server ؛ import java.io.inputstream ؛ طلب الفئة العامة {private inputstream input ؛ string private uri ؛ request public (inputStream input) {this.input = input ؛} public void parse () {i = input.read (buffer) ؛} catch (استثناء e) {e.printStackTrace () ؛ i = -1 ؛} لـ (int j = 0 ؛ j <i ؛ j ++) {request.append ((char) buffer [j]) ؛ requestString) {int index1 ، index2 ؛ index1 = requestString.indexof ("") ؛ if (index1! =-1) {index2 = requestString.Indexof ("" ، index1+1) ؛ if (index2> index1) {return requestString.SubString (index1+1 ، index2) ؛}} يمثل فئة الطلب طلب HTTP. يمكن تمرير كائن InputStream لإنشاء كائن طلب. يمكن استدعاء طريقة read() في كائن inputStream لقراءة البيانات الأصلية لطلب HTTP.
يتم استخدام طريقة parse() في رمز المصدر أعلاه لتحليل البيانات الأصلية لطلب HTTP. ستستدعي طريقة Parse () الطريقة الخاصة parseUrI() لتحليل HTTP المطلوب URI. بصرف النظر عن هذا ، لا يوجد الكثير من العمل. تقوم طريقة parseUri() بتخزين URI في URI المتغير ، وسيعيد استدعاء الطريقة العامة getUri() URI المطلوبة.
إجابة:
package cn.com.server ؛ import java.io.file ؛ import java.io.fileInputStream ؛ import java.ioexception ؛ import java.io.outputstream ؛/** * http response = status-line * * ((header general | reponse-header | intity-header) sp assor-phrase-phrase crlf * */public class response {private static final int buffer_size = 1024 ؛ request request ؛ outputstream outpurn byte [buffer_size] ؛ fileInputStream fis = null ؛ جرب {file file = ملف جديد (httpserver.web_root ، request.geturi ()) ؛ if (file.exists ()) 0 ، buffer_size) ؛ ch = fis.read (bytes ، 0 ، buffer_size) ؛}} آخر {// لم يتم العثور على سلسلة errormessage = "http/1.1 404 لم يتم العثور على ملف/r/n"+ " تم العثور على </h1> "؛ output.write (errormessage.getbytes ()) ؛}} catch (استثناء e) {system.out.println ( يتم إنشاء كائن الاستجابة في طريقة await() لفئة HTTPSERVER عن طريق تمرير OutputStream الذي تم الحصول عليه في المقبس.
يحتوي فئة الاستجابة على طريقتان عامتان: setRequest() و sendStaticResource() . ستتلقى طريقة setRequest() كائن طلب كمعلمة. يتم استخدام طريقة sendStaticResource() لإرسال مورد ثابت إلى المتصفح ، مثل ملف HTML.
httpserver:
package cn.com.server ؛ import java.io.file ؛ import java.io.inputStream ؛ import java.io.outputstream ؛ import java.net.inetaddress ؛ import java.net.serversoctouck ؛ * بالنسبة لهذه الحزمة ، فإن Web_Root هو دليل "Webroot" ضمن دليل العمل *. * دليل العمل هو الموقع في نظام الملفات * من حيث تم استدعاء أمر Java. */public static final string web_root = system.getProperty ("user.dir")+file.separator+"Webroot" ؛ private Static Final String stowdown_command = "/stakendown" ؛ private boolean sthowddown = false ؛ static static void main (string [] anhait () {serversocket ServersOctocket = null ؛ int port = 8080 ؛ حاول {serversocket = new serversocket (port ، 1 ، inetaddress.getByName ("127.0.1 input = null ؛ outputStream output = null ؛ try {socket = serversite.accept () ؛ input = socket.getInputStream () ؛ output = socket.getOutputStream () ؛ // إنشاء كائن طلب وطلب parse = طلب جديد (input) ؛ request.parse () (استثناء E) {E.PrintStackTrace () ؛ متابعة ؛}}}} تمثل هذه الفئة خادم ويب يمكنه التعامل مع طلبات الموارد الثابتة لدليل محدد ، بما في ذلك الدلائل المحددة من قبل المتغير الثابت العام ويب و Web_Root وجميع الدلائل الفرعية.
الآن قم بإنشاء صفحة HTML في Webroot ، المسماة index.html ، رمز المصدر هو كما يلي:
<! doctype html> <html> <head> <meta charset = "utf-8"> <title> إدراج العنوان هنا </title> </head> <body> <h1> Hello World! </h1> </body> </html>
ابدأ الآن خادم الويب واطلب صفحة index.html الثابتة.
إخراج وحدة التحكم المقابلة:
وبهذه الطريقة ، يتم إجراء خادم HTTP بسيط.
ما سبق هو كل شيء عن تنفيذ Java لتحليل مثيل خادم الويب البسيط ، وآمل أن يكون مفيدًا للجميع. يمكن للأصدقاء المهتمين الاستمرار في الرجوع إلى الموضوعات الأخرى ذات الصلة على هذا الموقع. إذا كانت هناك أي أوجه قصور ، فيرجى ترك رسالة لإشارةها. شكرا لك يا أصدقائك لدعمكم لهذا الموقع!