Hallo Forum
In meiner neuen Version eines Webservers, werden Bilder vom Browser nicht gefunden, obwohl die Angabe der Pfade relativ zum HTML Dokument sind. Woran kann das liegen? Die Index.html wird aus einem Byte-Array an die Ausgabe geleitet. Mein Browser zeigt eine identische HTML Datei an, jedoch werden weder die CSS Datei, die im selben Verzeichnis liegt, wie die index.html, als auch die Bilder in einem Ordner, nicht gezeigt. Um nicht zu sagen, sämtliche verlinkten Dateien, werden vom Browser nicht benutzt...
Hier ist mein Webserver:
Kann mir jemand erklären, warum das nicht geht? Müssen externe Dateien: Bilder, Stylesheets eine gesonderte Behandlung erfahren?
Viele Grüße,
Semo
P.S. Anbei die Demo-Site
EDIT:
Ok. Ich habe eine Idee. Es liegt meiner Meinung nach daran, daß ich dem Browser nur die reinen HTML Daten liefere, die dargestellt werden, worüber hinaus ich dem Browser aber nicht mitteile, wie Pfadanfragen (beim Bilder abholen) vom Webserver behandelt werden sollen. Somit weiß der Browser zwar, daß die Dateien im gleichen Ordner wie die index.html liegen, bzw. im image Ordner, jedoch wird die relative Pfadangabe nicht durch den Webserver abgefangen, der daraus einen harten Pfad liefert. So oder so ähnlich. Ich brauche ein File Objekt, daß da auf magische Weise eingepflanzt werden muß... Hmmm...
Nur weiß ich nicht recht auf welche Weise die Bilder übertragen werden können - als Byte Array? Hat jemand Ahnung wie ich das machen sollte?
Viele Grüße und Danke,
Semo
In meiner neuen Version eines Webservers, werden Bilder vom Browser nicht gefunden, obwohl die Angabe der Pfade relativ zum HTML Dokument sind. Woran kann das liegen? Die Index.html wird aus einem Byte-Array an die Ausgabe geleitet. Mein Browser zeigt eine identische HTML Datei an, jedoch werden weder die CSS Datei, die im selben Verzeichnis liegt, wie die index.html, als auch die Bilder in einem Ordner, nicht gezeigt. Um nicht zu sagen, sämtliche verlinkten Dateien, werden vom Browser nicht benutzt...
Hier ist mein Webserver:
Java:
package iserve;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.ByteArrayOutputStream;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class WebServer implements Runnable {
private boolean killswitch = true;
private byte[] content;
private int port = 80;
public Socket connection;
WebServer(byte[] data, int port) {
this.content = data;
this.port = port;
}
/*
* Thread Handler mit der Kernausfuehrung des Webservers
*
* @see java.lang.Runnable#run()
*/
@Override
public void run() {
try {
ServerSocket server = new ServerSocket(this.port);
System.out.println("Akzeptiere Verbindung auf Port: "
+ server.getLocalPort());
while (killswitch) {
try {
connection = server.accept();
System.out
.println("Server ist bereit und wartet auf Anfrage.");
OutputStream out = new BufferedOutputStream(connection
.getOutputStream());
out.write(content);
out.flush();
System.out.println(server.getLocalSocketAddress());
} catch (Exception e) {
System.out.println(e);
} finally {
if (connection != null)
connection.close();
}
}
} catch (Exception e) {
System.err.println(e);
}
}
public static void main(String[] args) {
try {
BufferedReader br = new BufferedReader(
new InputStreamReader(
new FileInputStream(
"/home/user/workspace/WebSurf/bin/iserve/demosite/index.htm")));
ByteArrayOutputStream out = new ByteArrayOutputStream();
int b;
while ((b = br.read()) != -1)
out.write(b);
int port = 5000;
byte[] data = out.toByteArray();
Thread t = new Thread(new WebServer(data, port));
t.start();
} catch (Exception e) {
System.err.println(e);
}
}
}
Kann mir jemand erklären, warum das nicht geht? Müssen externe Dateien: Bilder, Stylesheets eine gesonderte Behandlung erfahren?
Viele Grüße,
Semo
P.S. Anbei die Demo-Site
EDIT:
Ok. Ich habe eine Idee. Es liegt meiner Meinung nach daran, daß ich dem Browser nur die reinen HTML Daten liefere, die dargestellt werden, worüber hinaus ich dem Browser aber nicht mitteile, wie Pfadanfragen (beim Bilder abholen) vom Webserver behandelt werden sollen. Somit weiß der Browser zwar, daß die Dateien im gleichen Ordner wie die index.html liegen, bzw. im image Ordner, jedoch wird die relative Pfadangabe nicht durch den Webserver abgefangen, der daraus einen harten Pfad liefert. So oder so ähnlich. Ich brauche ein File Objekt, daß da auf magische Weise eingepflanzt werden muß... Hmmm...
Nur weiß ich nicht recht auf welche Weise die Bilder übertragen werden können - als Byte Array? Hat jemand Ahnung wie ich das machen sollte?
Viele Grüße und Danke,
Semo
Anhänge
Zuletzt bearbeitet: