Avatar billede bamse2000 Nybegynder
20. august 2003 - 03:36 Der er 15 kommentarer og
1 løsning

Webserver - html-integrering

Hej eksperter!

Når man har oprettet en webserver, som denne på sun's side:

http://developer.java.sun.com/developer/technicalArticles/Networking/Webserver/WebServercode.html

loader den automatisk 'index.html' frem, eller en angivet fil.

Kan man ikke skrive html-koden direkte i java-programmet?
Avatar billede bamse2000 Nybegynder
20. august 2003 - 03:37 #1
Avatar billede Slettet bruger
20. august 2003 - 04:01 #2
Den loader ikke noget "automatisk".

Prøv at telnet til den (port 8080) og skriv
GET /index.html HTTP/1.0

Så skulle den gerne vise indholdet af index.html (som skal være placeret i dit working directory (user.dir)).

Det er iøvrigt meningen at man i en fil www-server.properties kan specificere diverse system properties. Blandt andet roden for dine .html filer.
Avatar billede Slettet bruger
20. august 2003 - 04:04 #3
Jeg har lige testet det, og ovenstående virker fint her.
Avatar billede arne_v Ekspert
20. august 2003 - 10:37 #4
Jeg hører dig sige at du vil have web-serveren til at sende HTML uden at
læse det fra fil.

Så skal du og rette i handleClient metoden og fjerne
input streamen og erstatte den af din kode.
Avatar billede bamse2000 Nybegynder
20. august 2003 - 15:10 #5
arne_v >> ja.. hvad skal jeg helt præcis skrive i stedet for input streamen? Da ikke direkte koden?
Avatar billede arne_v Ekspert
20. august 2003 - 15:20 #6
Det er vist iøvrigt ikke i handleClient men i sendFile at det skal gøres.
Avatar billede bamse2000 Nybegynder
20. august 2003 - 15:21 #7
okay.. øh.. men hvad skal der skrives?
Avatar billede arne_v Ekspert
20. august 2003 - 15:23 #8
Hvis du erstatter:

    void sendFile(File targ, PrintStream ps) throws IOException {
        InputStream is = null;
        ps.write(EOL);
        if (targ.isDirectory()) {
            listDirectory(targ, ps);
            return;
        } else {
            is = new FileInputStream(targ.getAbsolutePath());
        }

        try {
            int n;
            while ((n = is.read(buf)) > 0) {
                ps.write(buf, 0, n);
            }
        } finally {
            is.close();
        }
    }

med:

    void sendFile(File targ, PrintStream ps) throws IOException {
        String m = "123<BR>Dette er en prøve";
        ps.write(EOL);
        ps.write(m.getBytes(), 0, m.length());
    }

så har du jordens mest kedelige web-server.

Uanset hvilken URL du requester skriver den:

123
Dette er en prøve
Avatar billede arne_v Ekspert
20. august 2003 - 15:24 #9
Det besvarer vel egentligt dit spørgsmål.

Men hvis du forklarer hvad du virkeligt vil, så kan du muligvis
få nogle tips.

(det er ikke almindeligt at skrive sin egen web-server, normalt
skriver man Java servlets og kører dem i en servlet engine)
Avatar billede bamse2000 Nybegynder
20. august 2003 - 15:28 #10
okay, det er fordi jeg har en distribueret webserver, som skal forwarde en klient videre til en anden maskine. Jeg har fået at vide at det var nemmest at sende klienten videre vha. html-forwarding. Problemet af at jeg ikke kan skrive filen på forhånd, da jeg ikke kender evt. andre maskiner! Derfor tænkte jeg på at skrive html direkte i java-koden, da jeg her kan tilføje evt. maskiner!

(Skriv lige hvis det er uklart, takker for hjælpen!)
Avatar billede bamse2000 Nybegynder
20. august 2003 - 15:34 #11
Forresten, denne webserver er ret stor! Har du ikke en lille liggende som kan gøre det jeg har brug for?? :-)
Avatar billede arne_v Ekspert
20. august 2003 - 15:35 #12
Hvordan skal opdateringen af hvilke andre maskiner der skal forwardes til
ske ?

Det er jo noget nemmere at rette i et HTML dokument med en editor end det
er at rette i noget Java kode, compile og genstarte serveren.
Avatar billede arne_v Ekspert
20. august 2003 - 15:36 #13
Jeg synes at den er meget lille af en web-server at være.

:-)
Avatar billede arne_v Ekspert
20. august 2003 - 15:37 #14
Umiddelbart synes jeg at det lyder nemmer med en eksisterende web-server
som f.eks. Apache og et lille script der forwarder f.eks. ud fra en
konfigurations-fil.
Avatar billede bamse2000 Nybegynder
20. august 2003 - 15:41 #15
Der kommunikeres med de andre lokalt.

F.eks. kører 2 servere.
1) Modtager requests og sender klienten videre til server 2 vha:

<meta http-equiv="refresh" content="1;url=http://80.90.100.110:12345">

2) Modtager request alm.

Okay, til det sidste der, kan du hjælpe mig med det? Har aldrig lavet en webserver før og ved faktisk ikke hvad Apache er..
Avatar billede bamse2000 Nybegynder
20. august 2003 - 16:00 #16
tror bare at jeg eksperiementer med dit første svar.. tror det vil virke..
tak!

>>Bamse
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester