Avatar billede mik28 Seniormester
21. marts 2003 - 00:14 Der er 23 kommentarer og
1 løsning

StringBuffer og servlet

Hej Eksperter,

Jeg kan ikke se hvorfor det her er forkert. Det er tilsyneladende scriptet som kokser. Det virker i øvrigt fint hvis jeg dropper Stringbuffer og bare bruger out.println

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.sql.*;

public class Start extends HttpServlet
{
       
        public void doGet (HttpServletRequest request,
                      HttpServletResponse response)
        throws ServletException, IOException
        {
        PrintWriter        out;
     
    //    response.setContentType("text/html; charset=ISO-8859-1");

        out = response.getWriter();
        StringBuffer buffer = new StringBuffer();
           
            buffer.append("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">");
           
            buffer.append("<html><head><title>Start</title>");
            buffer.append("<link rel=\"stylesheet\" type=\"text/css\" href=\"../style/styles.css\">");
              buffer.append("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=ISO-8859-1\">");
            buffer.append("</head>");

            buffer.append("<body onload=\"self.focus();\">");
           
       
            buffer.append("<table style=\"width:700px;height:400px;background-image: url(../jpg-filer/basis.jpg);margin: auto;\">");
           
            buffer.append("<tr>");
            buffer.append("<td style=\"height:77px;\">");
            buffer.append("</td>");
            buffer.append("</tr>");
           
            buffer.append("<tr>");
            buffer.append("<td style=\"height:33px;text-align:left;\">");
            buffer.append("<table style=\"width:100%;\"><tr><td>");
           
            buffer.append("<script type=\"text/javascript\"><!--");
            buffer.append("            var width  = window.screen.availWidth -10;");
            buffer.append("            var height = window.screen.availHeight -150;");
           
            buffer.append("document.write(\"<input type=\\\"button\\\" style=\\\"width:165px;background-color:transparent;border:0;cursor:hand;\\\" onClick=\\\"window.open('../servlet/Startbeauty','Beauty' ,'toolbar=yes,location=yes,directories=no,status=no,menubar=yes,scrollbars=yes,resizable=yes,copyhistory=yes,width=\"+width+\",height=\"+height+\",top=0,left=0')\\\">\");");
            buffer.append("--></script>");
            buffer.append("</td>");
        //    buffer.append("<td><input type=\"button\" style=\"width:165px;background-color:transparent;border:0;cursor:hand;\" onClick=\"window.open('../servlet/Startbeauty','Beauty')\"></td>");   
           
           
            buffer.append("<td style=\"width:50px;\"></td>");
            buffer.append("<td><input type=\"button\" style=\"width:75px;\" class=\"button\" name=\"News\" value=\"News\" onmouseover=\"this.className = 'buttonHover';\" onmouseout=\"this.className = 'button';\" onclick=\"parent.frames['content'].location.href='Showdata?pageID=news'\"></td>");
            buffer.append("<td><input type=\"button\" style=\"width:75px;\" class=\"button\" name=\"Mrtlz\" value=\"Mrtlz\" onmouseover=\"this.className = 'buttonHover';\" onmouseout=\"this.className = 'button';\" onclick=\"parent.frames['content'].location.href='Showdata?pageID=mrtlz'\"></td>");
            buffer.append("<td><input type=\"button\" style=\"width:100px;\" class=\"button\" name=\"Credits\" value=\"Credits\" onmouseover=\"this.className = 'buttonHover';\" onmouseout=\"this.className = 'button';\" onclick=\"parent.frames['content'].location.href='Showdata?pageID=credit'\"></td>");
            buffer.append("<td><input type=\"button\" style=\"width:100px;\" class=\"button\" name=\"Contact\" value=\"Contact\"  onmouseover=\"this.className = \'buttonHover';\" onmouseout=\"this.className = 'button';\" onclick=\"parent.frames['content'].location.href='Showdata?pageID=contact'\"></td>");
            buffer.append("<td><input type=\"button\" style=\"width:135px;\" class=\"button\" name=\"Community\" value=\"Community\" onmouseover=\"this.className = \'buttonHover';\" onmouseout=\"this.className = 'button';\" onclick=\"parent.frames['content'].location.href='Showdata?pageID=community'\"></td>");
            buffer.append("</tr></table>");
            buffer.append("</td></tr>");
           
           
            buffer.append("<tr><td style=\"vertical-align:top;height:250px;;\">");
            buffer.append("<iframe name=\"content\" src =\"Showdata\" frameborder=\"0\" scrolling=\"auto\" style=\"width:100%;height:100%\">");
            buffer.append("</iframe>");
            buffer.append("</td></tr>");
            buffer.append("<tr><td style=\"height:40px;\"></td></tr></table>");
               
            buffer.append("<script type=\"text/javascript\">");
            buffer.append("ie6 = (navigator.appVersion.indexOf(\"MSIE 6\") != -1) ? true : false;");
            buffer.append("ns6 = (document.getElementById && !document.all) ? true : false;");
            buffer.append("ns4 = (document.layers) ? true : false;");
            buffer.append("ie5 = (!ie6 && document.getElementById && document.all) ? true : false;");
            buffer.append("ie4 = (!ie5 && document.all) ? true : false;");
            buffer.append("op  = (navigator.appName == \"Opera\") ? true : false;");
           
            buffer.append("if ((ie6 == true) || (ie5 == \"true\") || (ie4 == \"true\")){");
            buffer.append("document.all.content.allowTransparency = true;");
            buffer.append("}");
            buffer.append("</script>");
            buffer.append("</body>");
            buffer.append("</html>");
           
           
            out.println(buffer.toString());
            out.close();
            }       
       
}
Avatar billede disky Nybegynder
21. marts 2003 - 06:39 #1
hvis du bytter alle:
buffer.append(
ud med
out.println(

Så virker det ?

Det er temmeligt underligt.

Men i dit tilfælde gør det egentligt ingen forskel om du out.println'er det eller laver det i en StringBuffer først.

Så jeg ville bare skifte tilbage til out.println().

Men personligt ville jeg anvende JSP til det istedet, eller endda rå html da du ikke laver noget data begandling, så vidt jeg lige kan se.
Avatar billede arne_v Ekspert
21. marts 2003 - 08:02 #2
Jeg har lige prøvet.

Og hos mig virker det i både NS 7 og MSIE 5.5 !?
Avatar billede arne_v Ekspert
21. marts 2003 - 08:02 #3
Hvad browser bruger du ?
Avatar billede arne_v Ekspert
21. marts 2003 - 08:04 #4
Men den eneste forskel mellem buffer.append og out.println
er linieskiftene.

Så prøv med:

buffer.append("...\n");

alle steder !
Avatar billede mik28 Seniormester
21. marts 2003 - 10:21 #5
disky --> Ja det er lidt mærkeligt at det skulle gøre en forskel, i hvert tilfælde for mig :-)Det er vel rigtigt at jeg lige så godt kunne lave det her i ren html, det kunne jeg bare ikke lige overskue den gang jeg startede.
Avatar billede mik28 Seniormester
21. marts 2003 - 10:26 #6
arne_v --> Nu ved jeg jo ikke helt hvad du mener med prøvet. Har du været inde på min side og kigge, eller har du kørt det hos dig selv? Jeg har desværre ikke mulighed for at tilgå min server herfra hvor jeg sidder nu :-( så jeg kan ikke rigtigt arbejde med det. Jeg vil lige så snart jeg får mulighed prøve dit forslag (søndag)
Avatar billede mik28 Seniormester
21. marts 2003 - 10:31 #7
Jeg tester i IE6.0 og Mozilla. Jeg ville også gerne have sitet til at køre i Opera, med der har jeg flere problemer. Jeg har faktiskt ikke prøvet at løbe det igennem i NS
Avatar billede arne_v Ekspert
21. marts 2003 - 10:44 #8
Jeg tog servletten og kørte den i Tomcat på min PC.

Og jeg kunne altså godt få siden frem.
Avatar billede arne_v Ekspert
21. marts 2003 - 10:46 #9
Hvilken fejl får du helt præcist ?
Avatar billede mik28 Seniormester
21. marts 2003 - 11:06 #10
Det er den knap helt til venstre som ikke kommer frem. Den er usynlig og passer ud over :To mortal love eller :To All The Beauty alt efter hvor du er. Lige nu er det ændret tilbage til out.println.

buffer.append("<script type=\"text/javascript\"><!--");
            buffer.append("            var width  = window.screen.availWidth -10;");
            buffer.append("            var height = window.screen.availHeight -150;");
           
            buffer.append("document.write(\"<input type=\\\"button\\\" style=\\\"width:165px;background-color:transparent;border:0;cursor:hand;\\\" onClick=\\\"window.open('../servlet/Startbeauty','Beauty' ,'toolbar=yes,location=yes,directories=no,status=no,menubar=yes,scrollbars=yes,resizable=yes,copyhistory=yes,width=\"+width+\",height=\"+height+\",top=0,left=0')\\\">\");");
Avatar billede mik28 Seniormester
21. marts 2003 - 11:08 #11
Avatar billede arne_v Ekspert
21. marts 2003 - 11:54 #12
Hm.

Måske virker det ikke hos mig heller. Jeg talte ikke antallet af knapper.
Jeg checkede kun om siden kunne vises uden fejl.
Avatar billede mik28 Seniormester
21. marts 2003 - 12:08 #13
Det er sådan her det er meningen det skal se ud, altså lige på nær at knappen skal være usynlig.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/strict.dtd">
           
            <html><head><title>Start</title>
            <link rel="stylesheet" type="text/css" href="../style/styles.css">
              <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
            </head>

            <body onload="self.focus();">
           
       
            <table style="width:700px;height:400px;background-image: url(../jpg-filer/basis.jpg);margin: auto;">
           
            <tr>
            <td style="height:77px;">
            </td>
            </tr>
           
            <tr>
            <td style="height:33px;text-align:left;">
            <table style="width:100%;"><tr><td>
           
            <script type="text/javascript"><!--
                        var width  = window.screen.availWidth -10;
                        var height = window.screen.availHeight -150;
           
            document.write("<input type="button" style="width:165px;background-color:transparent;color:blue;border:0;cursor:hand;" onClick="window.open('../servlet/Startbeauty','Beauty' ,'toolbar=yes,location=yes,directories=no,status=no,menubar=yes,scrollbars=yes,resizable=yes,copyhistory=yes,width="+width+",height="+height+",top=0,left=0')">
            --></script>
            <input type="button" style="width:165px;background-color:654321;color:#123456;border:0;cursor:hand;" onClick="window.open('../servlet/Startbeauty','Beauty' ,'toolbar=yes,location=yes,directories=no,status=no,menubar=yes,scrollbars=yes,resizable=yes,copyhistory=yes,width="+width+",height="+height+",top=0,left=0')">
        </td>
       
           
           
            <td style="width:50px;"></td>
            <td><input type="button" style="width:75px;" class="button" name="News" value="News" onmouseover="this.className = 'buttonHover';" onmouseout="this.className = 'button';" onclick="parent.frames['content'].location.href='Showdata?pageID=news'"></td>
            <td><input type="button" style="width:75px;" class="button" name="Mrtlz" value="Mrtlz" onmouseover="this.className = 'buttonHover';" onmouseout="this.className = 'button';" onclick="parent.frames['content'].location.href='Showdata?pageID=mrtlz'"></td>
            <td><input type="button" style="width:100px;" class="button" name="Credits" value="Credits" onmouseover="this.className = 'buttonHover';" onmouseout="this.className = 'button';" onclick="parent.frames['content'].location.href='Showdata?pageID=credit'"></td>
            <td><input type="button" style="width:100px;" class="button" name="Contact" value="Contact"  onmouseover="this.className = 'buttonHover';" onmouseout="this.className = 'button';" onclick="parent.frames['content'].location.href='Showdata?pageID=contact'"></td>
            <td><input type="button" style="width:135px;" class="button" name="Community" value="Community" onmouseover="this.className = 'buttonHover';" onmouseout="this.className = 'button';" onclick="parent.frames['content'].location.href='Showdata?pageID=community'"></td>
            </tr></table>
            </td></tr>
           
           
            <tr><td style="vertical-align:top;height:250px;;">
            <iframe name="content" src ="Showdata" frameborder="0" scrolling="auto" style="width:100%;height:100%">
            </iframe>
            </td></tr>
            <tr><td style="height:40px;"></td></tr></table>
               
            <script type="text/javascript">
            ie6 = (navigator.appVersion.indexOf("MSIE 6") != -1) ? true : false;
            ns6 = (document.getElementById && !document.all) ? true : false;
            ns4 = (document.layers) ? true : false;
            ie5 = (!ie6 && document.getElementById && document.all) ? true : false;
            ie4 = (!ie5 && document.all) ? true : false;
            op  = (navigator.appName == "Opera") ? true : false;
           
            if ((ie6 == true) || (ie5 == "true") || (ie4 == "true")){
            document.all.content.allowTransparency = true;
            }
            </script>
            </body>
            </html>
Avatar billede arne_v Ekspert
21. marts 2003 - 12:26 #14
Jeg har lige prøvet igen.

Jeg kan se alle knapper.

Der er dog lidt forskel i udseendet.

Skal de være helt ens ?
Avatar billede arne_v Ekspert
21. marts 2003 - 12:30 #15
Jeg prøvede lige at sætte de \n ind og så kom servlet versionen
faktisk til at ligne HTML versionen rigtigt meget.

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.sql.*;

public class Start extends HttpServlet
{
       
        public void doGet (HttpServletRequest request,
                      HttpServletResponse response)
        throws ServletException, IOException
        {
        PrintWriter        out;
     
    //    response.setContentType("text/html; charset=ISO-8859-1");

        out = response.getWriter();
        StringBuffer buffer = new StringBuffer();
           
            buffer.append("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n");
           
            buffer.append("<html><head><title>Start</title>\n");
            buffer.append("<link rel=\"stylesheet\" type=\"text/css\" href=\"../style/styles.css\">\n");
              buffer.append("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=ISO-8859-1\">\n");
            buffer.append("</head>\n");

            buffer.append("<body onload=\"self.focus();\">\n");
           
       
            buffer.append("<table style=\"width:700px;height:400px;background-image: url(../jpg-filer/basis.jpg);margin: auto;\">\n");
           
            buffer.append("<tr>\n");
            buffer.append("<td style=\"height:77px;\">\n");
            buffer.append("</td>\n");
            buffer.append("</tr>\n");
           
            buffer.append("<tr>\n");
            buffer.append("<td style=\"height:33px;text-align:left;\">\n");
            buffer.append("<table style=\"width:100%;\"><tr><td>\n");
           
            buffer.append("<script type=\"text/javascript\"><!--\n");
            buffer.append("            var width  = window.screen.availWidth -10;\n");
            buffer.append("            var height = window.screen.availHeight -150;\n");
           
            buffer.append("document.write(\"<input type=\\\"button\\\" style=\\\"width:165px;background-color:transparent;border:0;cursor:hand;\\\" onClick=\\\"window.open('../servlet/Startbeauty','Beauty' ,'toolbar=yes,location=yes,directories=no,status=no,menubar=yes,scrollbars=yes,resizable=yes,copyhistory=yes,width=\"+width+\",height=\"+height+\",top=0,left=0')\\\">\");\n");
            buffer.append("--></script>\n");
            buffer.append("</td>\n");
        //    buffer.append("<td><input type=\"button\" style=\"width:165px;background-color:transparent;border:0;cursor:hand;\" onClick=\"window.open('../servlet/Startbeauty','Beauty')\"></td>\n");   
           
           
            buffer.append("<td style=\"width:50px;\"></td>\n");
            buffer.append("<td><input type=\"button\" style=\"width:75px;\" class=\"button\" name=\"News\" value=\"News\" onmouseover=\"this.className = 'buttonHover';\" onmouseout=\"this.className = 'button';\" onclick=\"parent.frames['content'].location.href='Showdata?pageID=news'\"></td>\n");
            buffer.append("<td><input type=\"button\" style=\"width:75px;\" class=\"button\" name=\"Mrtlz\" value=\"Mrtlz\" onmouseover=\"this.className = 'buttonHover';\" onmouseout=\"this.className = 'button';\" onclick=\"parent.frames['content'].location.href='Showdata?pageID=mrtlz'\"></td>\n");
            buffer.append("<td><input type=\"button\" style=\"width:100px;\" class=\"button\" name=\"Credits\" value=\"Credits\" onmouseover=\"this.className = 'buttonHover';\" onmouseout=\"this.className = 'button';\" onclick=\"parent.frames['content'].location.href='Showdata?pageID=credit'\"></td>\n");
            buffer.append("<td><input type=\"button\" style=\"width:100px;\" class=\"button\" name=\"Contact\" value=\"Contact\"  onmouseover=\"this.className = \'buttonHover';\" onmouseout=\"this.className = 'button';\" onclick=\"parent.frames['content'].location.href='Showdata?pageID=contact'\"></td>\n");
            buffer.append("<td><input type=\"button\" style=\"width:135px;\" class=\"button\" name=\"Community\" value=\"Community\" onmouseover=\"this.className = \'buttonHover';\" onmouseout=\"this.className = 'button';\" onclick=\"parent.frames['content'].location.href='Showdata?pageID=community'\"></td>\n");
            buffer.append("</tr></table>\n");
            buffer.append("</td></tr>\n");
           
           
            buffer.append("<tr><td style=\"vertical-align:top;height:250px;;\">\n");
            buffer.append("<iframe name=\"content\" src =\"Showdata\" frameborder=\"0\" scrolling=\"auto\" style=\"width:100%;height:100%\">\n");
            buffer.append("</iframe>\n");
            buffer.append("</td></tr>\n");
            buffer.append("<tr><td style=\"height:40px;\"></td></tr></table>\n");
               
            buffer.append("<script type=\"text/javascript\">\n");
            buffer.append("ie6 = (navigator.appVersion.indexOf(\"MSIE 6\") != -1) ? true : false;\n");
            buffer.append("ns6 = (document.getElementById && !document.all) ? true : false;\n");
            buffer.append("ns4 = (document.layers) ? true : false;\n");
            buffer.append("ie5 = (!ie6 && document.getElementById && document.all) ? true : false;\n");
            buffer.append("ie4 = (!ie5 && document.all) ? true : false;\n");
            buffer.append("op  = (navigator.appName == \"Opera\") ? true : false;\n");
           
            buffer.append("if ((ie6 == true) || (ie5 == \"true\") || (ie4 == \"true\")){\n");
            buffer.append("document.all.content.allowTransparency = true;\n");
            buffer.append("}\n");
            buffer.append("</script>\n");
            buffer.append("</body>\n");
            buffer.append("</html>\n");
           
           
            out.println(buffer.toString());
            out.close();
            }       
       
}
Avatar billede mik28 Seniormester
23. marts 2003 - 17:21 #16
Så har jeg sat det ind med \n og det virker som det skal. Jeg kan bare ikke se hvad problemet var ??
Avatar billede arne_v Ekspert
23. marts 2003 - 17:24 #17
Jeg tror er eller andet sted er der en max. linie-længde som er
blevet overskredet.
Avatar billede mik28 Seniormester
23. marts 2003 - 17:25 #18
Det lyder sandsynligt
Avatar billede mik28 Seniormester
23. marts 2003 - 17:31 #19
Vil jeg så ikke rende ind i det samme problem når der er pludeselig er mange entries i min gæstebog. Der appender jeg jo også i en uendelighed for at udskrive til sidst
Avatar billede arne_v Ekspert
23. marts 2003 - 17:34 #20
Måske.

Kan du ikke sætte nogle linie-skift ind hist og pist ?

[sådan i parantes bemærker gør det også HTML'en nemmere
at debugge i "view source"]
Avatar billede mik28 Seniormester
23. marts 2003 - 17:34 #21
Det er jo helt rigtigt :-)
Avatar billede mik28 Seniormester
23. marts 2003 - 17:41 #22
Det virker som om siden loader hurtigere nu, men det er nok bare noget jer forestiller mig :-)
Avatar billede arne_v Ekspert
23. marts 2003 - 17:49 #23
Hvis det kun er en enkelt request, så tror jeg ikke på, at du
kan registrere nogen forskel.

Hvis du laver en lille app med 50 threads som alle requester
siden 10000 gange og du tager tid på det, så har du en måling.
Avatar billede mik28 Seniormester
23. marts 2003 - 17:58 #24
Så tror jeg jeg er ved at være færdig med det site. Endnu engang tak for hjælpen :-)))) Jeg vender sikkert tilbage med flere "dumme" spørgsmål senere :-)))
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