# Eigener Webserver + Eigener Webbrowser



## Bizarrus (10. Jul 2010)

Huhu.

Bin zurzeit ein kleines Webentwickler-Tool am schreiben:
Der "Editor" hat einen kleinen Webserver Implementiert, besizt einen Quellcodeeditor mit Syntax-highlighting, etc.

Ich habe gestern versucht einen Webserver zu implementieren.
Relativ einfach, wenn man dies einmal verstanden hat.

Der Webserver spuckt z.B. diverse Errors aus, sofern diese verursacht werden (404 - Nicht gefunden, 500 - Servererror, 200 - OK, etc), Directorylisting eingebaut, selbst PHP habe ich dort implementiert.

Alles soweit so gut.
Über jedem Webbrowser (Firefox, IE, etc.) ist der Webserver auch über localhost erreichbar - HTML-Files werden ausgegeben, Bilder auch, PHP wird ausgeführt und macht seine Ausgaben, und so weiter und so fort.

*Ich habe mir jezt folgendes Gedacht:*
Neben dem Quelltext-Editor möchte ich dort noch eine "Preview" einbauen, sodass z.B. PHP-Dateien über den Webserver angesprochen werden.
Eigendlich etwas nettes. So sieht man beim Programmieren direkt das Resultat (Beispielsweise bei PHP).

Da ich der Absolute PHP-Freak bin, und auch schon über 5 Jahre lang damit arbeite, möchte ich nun meine Programmierkünste vereinfachen. Es ist nämlich hin und wieder sehr lästig, wenn man ein Editor offen hat (beispielsweise Notepad++), dann noch ein FTP Programm (Ich arbeite meist über SSH mit WinSCP) und gleichzeitig noch einen Webbrowser, wo man ständig hin und Her wurschteln muss.

Das möchte ich mit meinem Toolbewerkstelligen möchte.

*Nun zum Hauptthema:*
Der Editor besizt einen Eingebauten Webserver (der über einer socket-connection arbeitet, natürlich Multithreaded) - Dieser ist erreichbar und dieser ist auch soweit fertiggestellt, das man sagen kann "OK, Geil - Es läuft so wie ich es mir vorstelle".

Jezt möchte ich zum Editor noch einen kleinen Webbrowser implementieren.
Gut - Nehmen wir nen JEditorPanel und lassen ihn mit dem Webserver (Domain ist reserviert) verbinden und z.B. eine index.html ausgeben.

Genau dies bereitet mir schwierigkeiten, wobei ich nicht weiß ob dies an meinem kleinen Webserver liegt.
Google & Co (wie auch andere Seiten) gibt er richtig aus. Die Seiten werden dort 1a Angezeigt.
Sobald ich aber versuche den Inhalt von meinem kleinen Webserver anzeigen zu lassen, so bekomme ich nur den quelltext ausgegeben anstatt der seite.
*
Jezt zu meiner Frage:*
Was muss ich generell bei der Implementierung eines Webservers beachten, damit ich eine gezielte ausgabe habe? (diverse eigenschaften wie Dateilänge, Mime-Type, etc werden übermittelt)
Wie visualisiere ich den "Browser" so, das er die Seite richtig ausgibt (Muss ich einen HTML-Parser benutzen?)?

*
Infos zu meinem Webserver:*
> Socket wird auf definiertem Port aufgebaut
> Bei Client-Connect neuer Thread
> Lese "Root-dir"
> Lese angeforderte Datei ein (beispielsweise index.html)
> angeforderte Datei als text/html-Mime Type erkannt, setze dies im Header-request
> Contentlänge im Header-request setzen
> Sende Datei an Client
--> Ausgabe der Datei im Browser

Das so kurz und knapp zur arbeitsweise.

Habe schon einige "Java Browser" beispiele angeschaut, alles das selbe Prinzip, selber aufbau.
Aber irgendwie will der nur den Quelltext der Datei ausgeben ^^

Sry das ich momentan keinen Code posten kann.
Bin gerade nach hause gekommen und habe die Source vom Editor leider im Büro.

Ich danke euch für Infos


----------



## Noctarius (10. Jul 2010)

Warum nutzt du keinen embedded Jetty als Webserver?


----------



## earlgrey_tea (10. Jul 2010)

Huhu zurück, 

ich kann dir deine Fragen zwar nicht direkt beantworten, kann dir aber auf jeden Fall zwei Bücher empfehlen in denen deine Fragen verständlich mit Beispielquelltexten geklärt werden (beide Bücher sind "open-books"):


Addison-Wesley eBook zum Download: Java EE 5 - Master Class - Thomas Stark --> in diesem Buch wird ein eigener Chatserver zusammengehackt, sollte also auch was für dich dabeisein. 
www.javabuch.de - Das Handbuch der Java-Programmierung --> hier gibt es ein eigenes Kapitel zu einem selbstgebastelten Webserver (ziemlich weit hinten)

Ich hoffe die Bücher helfen dir weiter. 
Viele Grüße
earlgrey_tea

Ps.: Solltest du das erste Buch niicht herunterladen können..... PM an mich


----------



## Bizzi (10. Jul 2010)

Jetty? Noch nie benuzt.

Ich will keine 5.000 verschiedenen Software-Systeme benutzensondern ein Editor schaffen, der alles in einem besizt.
Was nüzt es, wenn der Endbenutzer später 10 Programme Installieren muss, um mein Editor benutzen zu können?

Deswegen habe ich geschaut, das ich im Editor einen kleinen Webserver implementiere.
Funktioniert ja auch.

Nur ich habe probleme mit dem "Browser".
Internetseiten wie google.de gibt er aus, nur mein localhost als Quelltext...

Aber danke erstmal für die Informationen


----------



## Frod0 (10. Jul 2010)

Wenn er Jetty nehmen würde, könnte er auch direkt Xampp benutzen xD


----------



## Noctarius (10. Jul 2010)

Frod0 hat gesagt.:


> Wenn er Jetty nehmen würde, könnte er auch direkt Xampp benutzen xD



Ziemlich sinnlos der Kommentar. Wieso sollte es vergleichbar sein, zumal XAMPP auch MySQL und PHP installiert. Einfach nur dumm dahingesagt.


----------



## musiKk (10. Jul 2010)

Bizzi hat gesagt.:


> Jetty? Noch nie benuzt.



Dann ist das ja jetzt eine gute Gelegenheit. 



> Ich will keine 5.000 verschiedenen Software-Systeme benutzensondern ein Editor schaffen, der alles in einem besizt.
> Was nüzt es, wenn der Endbenutzer später 10 Programme Installieren muss, um mein Editor benutzen zu können?



Das erste schließt sich ja nicht aus. Wenn Du alles in einem auslieferst, muss der Anwender auch nur Dein Programm installieren und nicht mehrere.



> Internetseiten wie google.de gibt er aus, nur mein localhost als Quelltext...



Naja, das kann sicher viele Ursachen haben. Grob gesagt müsstest Du die beteiligten RFCs lesen und entsprechend umsetzen. Die "quick and dirty"-Lösung ist, ein paar Requests im Wireshark (oder mit entsprechenden Browser-Tools) anzusehen und sich danach zu richten.
Ich bin auch ein Freund davon, Dinge selbst zu implementieren. Man lernt etwas über das Thema und mehr Spaß macht es sowieso. Aber wenn es einfach darum geht, ein relativ komplexes Feature X als Teil einer Anwendung zu nutzen, nehme ich lieber Bibliotheken.


----------



## Noctarius (10. Jul 2010)

Bizzi hat gesagt.:


> nternetseiten wie google.de gibt er aus, nur mein localhost als Quelltext...



Fehlt eventuell der Content-Type? Ohne diesen mit HTML zu beschreiben interpretiert der Browser diesen als Text. Thema Mime-Type


----------

