HTTP Grundlagen um einen Webserver zu erstellen

iChaos

Aktives Mitglied
Hi zusammen

Ich habe den Auftrag einen WebServer zu erstellen. Funktionalitäten sind freigestellt.
Ich habe bis jetzt keine Erfahrung mit Webservern, deshalb fange ich bei 0 an.
Hat irgendwer Anfänger Tipps? Was sind Grundlagen für einen Webserver?

Bis jetzt kann ich genau per Browser auf den Server verbinden und mir einen Text anzeigen lassen. Wie kann ich nun vom Client einen Request an den Server schicken?

Wäre froh wenn ich ein paar Antworten bekäme!
 

DerEisteeTrinker

Bekanntes Mitglied
Also wenn du wirklich den Auftrag hast einen WebServer zu erstellen, dann hau deinem Kunden die Anfrage um die Ohren und verweise ihn an Google. Da gibt es freie Implementierung und auch kommerzielle (z. B. JBoss oder Websphere)

Ansonsten musst du dich nur für ein Framework entscheiden für das dynamische Web-Projekt. Von denen gibt es auch soviele wie Sand am Meer. Sollte die Wahl gefallen sein, dann entweder noch ne Schulung oder ab an die Tasten.
 

iChaos

Aktives Mitglied
Da ich ein Lehrling bin und den Auftrag von meinen Ausbildner erhalten habe, kann ich ihn nicht zurückweisen :p

Der Auftrag besteht darin einen Webserver in Java zu programmieren. Mehr hab ich Informationen gab es noch nicht.
 

ARadauer

Top Contributor
Hypertext Transfer Protocol ? Wikipedia

Ich denke nicht, dass es eine Kundenanforderung für ein kommerzielles Projekt ist.
Ein Simpler Echo http Server ist in Java unter 10 Zeilen geschrieben, ein einfacher Threadfähiger der Textfiles ausliefert unter 100 Zeilen... Natürlich Server der sich perfekt an den Standard hällt ist etwas aufwändiger, aber auch keine hexerei...


Google einfach mal nach Webserver in Java, da gibts einige nette Beispiele...
 
Zuletzt bearbeitet:

homer65

Top Contributor
[
Ein Simpler Echo http Server ist in Java unter 10 Zeilen geschrieben, ein einfacher Threadfähiger der Textfiles ausliefert unter 100 Zeilen... Natürlich Server der sich perfekt an den Standard hällt ist etwas aufwändiger, aber auch keine hexerei...

Nöh, ne Hexerei ist das nicht, aber es braucht Jahre und sicherlich mehr als eine Person um auch nur was einigermaßen brauchbares auf die Beine zu stellen.
Ich denke der TO hatt nur die Aufgabenstellung falsch verstanden. Er sollte mal nachfragen, was er denn überhaupt tun soll.
 
T

tuxedo

Gast
Nöh, ne Hexerei ist das nicht, aber es braucht Jahre und sicherlich mehr als eine Person um auch nur was einigermaßen brauchbares auf die Beine zu stellen.

So ein Blödsinn. "Brauchbar" hängt immer davon ab was man damit machen will. Als "Lehr-Aufgabe" finde ich das eigentlich ganz geschickt.

Ein Anhaltspunkt oder Ausgangspunkt für ne eigene kleine aber feine Implementierung findet sich hier (und ja, bei mir fällt das unter den gegebenen vorraussetzungen unter "brauchbar"):

NanoHTTPD

- Alex
 

Wildcard

Top Contributor
Nimm einen Jetty und mach was nettes damit, das zeigt deinem Ausbilder das du in der Lage bist die richtigen Werkzeuge für eine Aufgabe auszuwählen.
 
T

tuxedo

Gast
Er hat geschrieben: "Ich habe den Auftrag einen WebServer zu erstellen."
Und nicht: "Ich habe den Auftrag einen WebServer zu installieren."
 
G

Gast2

Gast
Er hat geschrieben: "Ich habe den Auftrag einen WebServer zu erstellen."
Und nicht: "Ich habe den Auftrag einen WebServer zu installieren."

Es reicht schon einen Buchstaben zu ändern:

"Nimm einen Netty und mach was nettes damit, das zeigt deinem Ausbilder das du in der Lage bist die richtigen Werkzeuge für eine Aufgabe auszuwählen."

Das nimmt zum mindest schon mal die zugrundelegenden Netzwerk-Operationen ab und bietet ein gutes Framework darauf nur noch das HTTP Protokoll zu implementieren.
 

Wildcard

Top Contributor
Er hat geschrieben: "Ich habe den Auftrag einen WebServer zu erstellen."
Und nicht: "Ich habe den Auftrag einen WebServer zu installieren."
Das ist was ich erwarten würde: Lernen die richtigen Werkzeuge zu suchen und einzusetzen anstatt ständig das Rad neu zu erfinden. Das ist der wesentlich wichtigere Skill.
Ausserdem, was sieht besser aus:
-Auszubildender A schreibt einen 5 Zeiler für einen Hello World 'Webserver'
-Auszubildender B nimmt einen leichtgewichtigen Servletcontainer wie Jetty, setzt sich kurz mit dem Framework auseinander und zeigt dann etwas sinnvolles

Wer von beiden hat mehr dabei gelernt und sich mehr Gedanken gemacht?
 

Sagovana

Mitglied
Das ist was ich erwarten würde: Lernen die richtigen Werkzeuge zu suchen und einzusetzen anstatt ständig das Rad neu zu erfinden. Das ist der wesentlich wichtigere Skill.
Ausserdem, was sieht besser aus:
-Auszubildender A schreibt einen 5 Zeiler für einen Hello World 'Webserver'
-Auszubildender B nimmt einen leichtgewichtigen Servletcontainer wie Jetty, setzt sich kurz mit dem Framework auseinander und zeigt dann etwas sinnvolles

Wer von beiden hat mehr dabei gelernt und sich mehr Gedanken gemacht?

B wäre schlicht bei der Aufgabe durchgefallen. Die Aufgabe ist eindeutig. Und B passt als Lösung nicht dazu.
 
M

maki

Gast
Es reicht schon einen Buchstaben zu ändern:

"Nimm einen Netty und mach was nettes damit, das zeigt deinem Ausbilder das du in der Lage bist die richtigen Werkzeuge für eine Aufgabe auszuwählen."

Das nimmt zum mindest schon mal die zugrundelegenden Netzwerk-Operationen ab und bietet ein gutes Framework darauf nur noch das HTTP Protokoll zu implementieren.
Netty an sich ist IMHO komplexer als einen HTTP 1.0 Server selber zu schreiben ;)
HTTP 1.1 ist nicht so einfach, aber HTTP 1.0 ist wirklich nicht schwer.
 

Sagovana

Mitglied
Netty an sich ist IMHO komplexer als einen HTTP 1.0 Server selber zu schreiben ;)
HTTP 1.1 ist nicht so einfach, aber HTTP 1.0 ist wirklich nicht schwer.

Aber eben das selbst schreiben ist ja die Aufgabe. Es geht darum, zu verstehen, wie man so etwas macht. Und nicht darum nen fertigen Server auf die Maschine zu knallen und zu konfigurieren.

Für den TO.

Den Programm sollte einfach nen tcp-Port 80 auf der Maschine oeffnen und lauschen, wenn sich jemand verbindet. Danach macht es (wenn es besser ist) nen Thread pro Connection auf. Im Thread liest es die Eingaben und erzeugt die benötigten ausgaben.

Cleinet sagt z.B. "get index.html" und Du lieferst eine angepasste Startseite.
 

Wildcard

Top Contributor
B wäre schlicht bei der Aufgabe durchgefallen. Die Aufgabe ist eindeutig. Und B passt als Lösung nicht dazu.

Aber eben das selbst schreiben ist ja die Aufgabe. Es geht darum, zu verstehen, wie man so etwas macht. Und nicht darum nen fertigen Server auf die Maschine zu knallen und zu konfigurieren.
Sehe ich völlig anders. Das Ziel ist ein Webserver. Einen Jetty zu benutzen und es richtig zu machen beweißt ergebnisorientieres Denken und Eigeninitiative. Die anderen kopieren 10 Zeilen aus dem Internet und das wars.
IMO ist es nicht immer ratsam strikt nach den Buchstaben zu gehen, lieber ein Alleinstellungsmerkmal entwickeln.
Ausserdem geht es ja nicht nur ums Konfigurieren, das Ding sollte auch irgendetwas sinnvolles tun und damit hat man dann deutlich bessere Arbeit geleistet als alle anderen.
Wer das als durchgefallen bezeichnet ist vielleicht nicht die beste Wahl für einen Ausbilder...
 
M

maki

Gast
Aber eben das selbst schreiben ist ja die Aufgabe. Es geht darum, zu verstehen, wie man so etwas macht. Und nicht darum nen fertigen Server auf die Maschine zu knallen und zu konfigurieren.
Ich hab nie etwas anderes behauptet sondern nur darauf hingewiesen dass Netty wohl komplexer ist als ein HTTP 1.0 Server ;)
 

ARadauer

Top Contributor
-Auszubildender A schreibt einen 5 Zeiler für einen Hello World 'Webserver'
-Auszubildender B nimmt einen leichtgewichtigen Servletcontainer wie Jetty, setzt sich kurz mit dem Framework auseinander und zeigt dann etwas sinnvolles

Wer von beiden hat mehr dabei gelernt und sich mehr Gedanken gemacht?
Aber wenn der Ausbilder aber will, dass sie einen 5 zeiler Hello World Sever schreiben? Damit sie lernen, dass das Web eigentlich ganz simpel ist und sie sich einwenig mit Sockt Programmierung beschäftigen..

Ausbilder will dass die Azubis eine doppelt verkette Liste programmieren..
-Auszubildender A implementiert selber die Datenstruktur
-Auszubildender B nimmt die java.util.LinkedList

???:L klar mann muss nicht das Rad neuerfinden, aber man kann Schülern schon beibringen wie grundsätzlich so ein Rad erfunden wird...
 
T

tuxedo

Gast
???:L klar mann muss nicht das Rad neuerfinden, aber man kann Schülern schon beibringen wie grundsätzlich so ein Rad erfunden wird...

Das bringt die Sache wohl auf den Punkt.

Und nebenbei (das wäre owhl ein eigener Diskussionspfad):

Es ist oftmals gar nicht schlecht wenn man genau weiß wie etwas intern funktioniert. Klar, solange alles wie erwartet funktioniert und es keine Probleme gibt kann es einem schnuppe sein wie eine Library oder ein Tool intern funktioniert. Aber beim ersten Problem wird man sich schnell wünschen man hätte das Wissen. Aber gut, diese Meinung mag wohl nicht jeder teilen.

- Alex
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
B FTP Grundlagen; API Netzwerkprogrammierung 4
B Grundlagen. Netzwerkprogrammierung 2
F http Post auf einen Grafana Server Netzwerkprogrammierung 3
izoards Mehrere TCP Verbindungen auf einen Server [alles Local] Netzwerkprogrammierung 2
S Java: Anbindung an einen realen Server? (+ Portfreigabe) Netzwerkprogrammierung 8
X Kann ich einen Client/Server verbindung hinkriegen die mir alle paar Sekunden die aktuellen Daten per Realtime zuschickt ? Netzwerkprogrammierung 9
E Kurze Textnachrichten über einen Server von meinem Handy auf den Computer laden. Netzwerkprogrammierung 9
D Socket Message an einen Server senden? Netzwerkprogrammierung 8
C Inhalt einer .JPG Datei in einen OutputStream schreiben? Netzwerkprogrammierung 10
M jsf-seite beim hinzufügen einer csv-datei in einen ordner aktualiseren Netzwerkprogrammierung 0
C Client connection per Portforwarding auf einen lokalen Serverport Netzwerkprogrammierung 3
P Wie spreche ich einen Thread an? Netzwerkprogrammierung 20
P Was brauche ich alles / wo sollte ich einen Blick drauf werfen? Netzwerkprogrammierung 17
E Wie kann man einen einfachen E-Mail Server schreiben Netzwerkprogrammierung 2
T HTTP Einen HTTP Server erstellen Netzwerkprogrammierung 20
Z Socket [Chatprogramm] Mehrere Clients an einen Server Netzwerkprogrammierung 10
N Einen Server als ausführbare Datei exportieren Netzwerkprogrammierung 15
C Socket Probleme beim Lesen und Schreiben aus/in einen Socket Netzwerkprogrammierung 2
M Socket JavaProg über einen Clienten steuern Netzwerkprogrammierung 5
C An WebDAV einen "MKCOL" Befehl versenden Netzwerkprogrammierung 4
D Schreiben auf einen TCP/IP Socket Netzwerkprogrammierung 2
K HTTP-Anfrage an einen Server wird nicht beantwortet Netzwerkprogrammierung 3
H String Array durch einen Stream schicken. Netzwerkprogrammierung 4
L Mit Java auf Forum einloggen und dann einen Threat erstellen Netzwerkprogrammierung 4
R Mehrere Dateien über einen Socket senden Netzwerkprogrammierung 2
L mehrere Streams über einen Socket? Netzwerkprogrammierung 8
A Wichtig für einen Chat? Netzwerkprogrammierung 4
V Mehrere Streams durch einen Stream senden Netzwerkprogrammierung 14
V PC der an einen Router angeschlossen ist aus dem... Netzwerkprogrammierung 13
V Einen Eintrag aus einer Zip Datei von einem Server laden Netzwerkprogrammierung 2
M Wie programmiere ich einen FTP - Server Netzwerkprogrammierung 2
André B. In einen InputStream schreiben? Netzwerkprogrammierung 6
T Html-Source über URL in einen String speichern? Netzwerkprogrammierung 16
P Verschiedene Daten über einen Stream Netzwerkprogrammierung 4
U Einen HandlerThread, der mehrere Verbindungen verwaltet? Netzwerkprogrammierung 2
T Mit FTP verbinden, einen Ordner erstellen und Datei löschen Netzwerkprogrammierung 3
M Socket Verbindungen für einen Chat Netzwerkprogrammierung 10
T file auf einen server laden Netzwerkprogrammierung 4
A Zugriff auf einen fremden Monitor im lan Netzwerkprogrammierung 3
J Webserver mit Java schreiben? Netzwerkprogrammierung 4
S Socket Webserver mit SSLSocket geht nicht Netzwerkprogrammierung 1
B HTML mit Webserver und Datenbank verbinden Netzwerkprogrammierung 2
Z Debug-Info einer JavaSE Applikation auf Webserver Netzwerkprogrammierung 0
K Webserver mit Ethernet-Device verbinden Netzwerkprogrammierung 0
S Webserver für Jar File Netzwerkprogrammierung 4
F Java App mit Webserver Netzwerkprogrammierung 4
L Webserver pingen Netzwerkprogrammierung 5
Semox HTTP Webserver: Externe Dateien werden nicht verwendet. Netzwerkprogrammierung 10
TiME-SPLiNTER HTTP User Authentication: Java Client -> Webserver Netzwerkprogrammierung 7
Semox Socket Selbstgeschriebenen Webserver im lokalen Netzwerk publizieren? Netzwerkprogrammierung 4
L Javaprogramm auf Webserver Netzwerkprogrammierung 5
M Java-Programm als Webserver erzeugt HTML Netzwerkprogrammierung 8
S Verständnisproblem concurrent - iterativer Webserver Netzwerkprogrammierung 2
D "FileChooser" auf einem Webserver Netzwerkprogrammierung 5
F Empfehlung für embedded Webserver Netzwerkprogrammierung 10
F Webserver Zugriff per Java Netzwerkprogrammierung 3
sparrow Connection Reset bei Webserver, Java WebStart als Client Netzwerkprogrammierung 9
H Webserver mit PHP als Java-Programm, gibt es schon so etwas? Netzwerkprogrammierung 12
C Socketkommunikation mit Webserver Netzwerkprogrammierung 5
J Webserver auf einem Pocket PC Netzwerkprogrammierung 2
M sessionhandling beim webserver Netzwerkprogrammierung 5
B Laden einer *.csv Datei von einem Webserver (http-request) Netzwerkprogrammierung 8
A Webserver - Bild senden Netzwerkprogrammierung 2

Ähnliche Java Themen

Neue Themen


Oben