Avatar billede mik28 Seniormester
20. marts 2003 - 16:46 Der er 37 kommentarer og
1 løsning

script i servlet

Her er total ping forviring, HJÆLP!!!

buffer.append("<script type=\"text/javascript\"><!--");
            buffer.append("            var width  = window.screen.availWidth;");
            buffer.append("            var height = window.screen.availHeight;");
            buffer.append("document.write("<td><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')\"></td>");
            buffer.append("--></script>");
Avatar billede arne_v Ekspert
20. marts 2003 - 17:00 #1
Bedste råd er at skifte fra servlet til JSP !

Så vil det se meget pænere ud.

Hvad er det konkrete problem ?  Virker det ikke ? Og hvad sker der ?
Avatar billede mik28 Seniormester
20. marts 2003 - 17:07 #2
Problemet er at jeg ikke kan se hvordan jeg skal sætte mine pinger.

I min servlet har jeg

out = response.getWriter();
StringBuffer buffer = new StringBuffer();

så appender jeg på buffer og til sidst

out.println(buffer.toString());
Avatar billede mik28 Seniormester
20. marts 2003 - 17:08 #3
Kønt er det ikke, men jeg har fået at vide at det er meget effektivt
Avatar billede mik28 Seniormester
20. marts 2003 - 17:11 #4
Det er her problemet er

buffer.append("document.write("<td><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')\"></td>");

Jeg vil jo gerne sætte de to variable ind i udtrykket som opener vinduet
Avatar billede arne_v Ekspert
20. marts 2003 - 17:11 #5
" skal prefixes med \ til \"
' kan bare bruges uændret
\" skal (hvis \ skal med over i JS) dobbelt prefixes \\\"
Avatar billede arne_v Ekspert
20. marts 2003 - 17:13 #6
buffer.append("document.write(\"<td><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')\\\"></td>");

*tror* jeg nok !
Avatar billede mik28 Seniormester
20. marts 2003 - 17:15 #7
det virkede ikke
Avatar billede mik28 Seniormester
20. marts 2003 - 17:16 #8
Det er de to js variable som kokser
Avatar billede arne_v Ekspert
20. marts 2003 - 17:16 #9
Hvis du brugte JSP ville du bare skrive:

document.write("<td><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')\"></td>)

og så sørger JSP compileren for resten.
Avatar billede mik28 Seniormester
20. marts 2003 - 17:17 #10
Jeg ved det godt :-) men nu har jeg lavet det i servlets. Problemet er at jeg prøver at sætte et script ind og ikke kan finde ud af hvordan jeg skal sætte pingerne.

Jeg har min
Avatar billede mik28 Seniormester
20. marts 2003 - 17:18 #11
hov, hvad skete der lige der *lol*
Avatar billede arne_v Ekspert
20. marts 2003 - 17:18 #12
Ah. Det er JS variable ikke servlet variable.

Så må det være:

buffer.append("document.write(\"<td><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')\\\"></td>");
Avatar billede arne_v Ekspert
20. marts 2003 - 17:20 #13
Og i JSP:

document.write("<td><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')\"></td>)
Avatar billede mik28 Seniormester
20. marts 2003 - 17:21 #14
Det kikser altså stadigvæk
Avatar billede arne_v Ekspert
20. marts 2003 - 17:21 #15
Hm. Jeg er ikke sikker på at det sidste er rigtigt.

Men ihvertfald er hemligheden at få sat nok backslasher ind.
Avatar billede mik28 Seniormester
20. marts 2003 - 17:22 #16
jepper, og let er det ikke :-)
Avatar billede arne_v Ekspert
20. marts 2003 - 17:24 #17
Gå systematisk til værks:
  - ret en ting af gange
  - hvis det ikke compiler så rettes det
  - hvis det compiler så deployes og resultatet checkes med view source
    (slå f.eks. JavaScript fra i browseren så du slipper for diverse
    fejl mens du debugger JavaScript outputtet)
  - og til sidste fittes JavaScript funktionaliteten til
Avatar billede mik28 Seniormester
20. marts 2003 - 17:24 #18
outputtet ser således ud

<script type="text/javascript"><!--
            var width  = window.screen.availWidth;
            var height = window.screen.availHeight;
document.write("<td><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')\"></td>
--></script>
Avatar billede arne_v Ekspert
20. marts 2003 - 17:24 #19
til sidste pind skal JavaScript selvfølgelig være slået til igen.
Avatar billede mik28 Seniormester
20. marts 2003 - 17:25 #20
ikke forstået
Avatar billede arne_v Ekspert
20. marts 2003 - 17:30 #21
Umiddelbart ser det ud til at være galt til sidst.

Måske:
,\"></td>
skal erstattas af:
')\"></td>");

Hvilket i Java betyder at:
,\\\"></td>");
erstattes af:
')\\\"></td>\"););
Avatar billede arne_v Ekspert
20. marts 2003 - 17:31 #22
sidste pind var sidste - i min 17:24:04 kommentar.
Avatar billede mik28 Seniormester
20. marts 2003 - 17:35 #23
out.println("<script type=\"text/javascript\"><!--");
            out.println("            var width  = window.screen.availWidth;");
            out.println("            var height = window.screen.availHeight;");
            out.println("document.write(\"<td><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')\\\"></td>");
            out.println("--></script>");
Avatar billede mik28 Seniormester
20. marts 2003 - 17:40 #24
det er da til at blive rundtosset af :-)
Avatar billede mik28 Seniormester
20. marts 2003 - 17:43 #25
nu virker det lige pludeligt
Avatar billede mik28 Seniormester
20. marts 2003 - 17:46 #26
Der var jeg lige lidt for hurtig. Det virker stadig ikke
Avatar billede mik28 Seniormester
20. marts 2003 - 18:20 #27
Hvad er der galt med det her output

<script type="text/javascript"><!--
            var width  = window.screen.availWidth;
            var height = window.screen.availHeight;
document.write("<td><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')\"></td>");
--></script>
Avatar billede arne_v Ekspert
20. marts 2003 - 19:12 #28
Hmm.

Jeg brygger lige på noget.
Avatar billede mik28 Seniormester
20. marts 2003 - 19:13 #29
Det her virkede. Hvis jeg bruger buffer.append firker det ikke. Det er vel fordi det hele står på en linie

    out.println("<script type=\"text/javascript\"><!--");
            out.println("            var width  = window.screen.availWidth;");
            out.println("            var height = window.screen.availHeight;");
           
            out.println("document.write(\"<td><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')\\\"></td>\");");
            out.println("--></script>");
Avatar billede mik28 Seniormester
20. marts 2003 - 19:14 #30
Jeg er meget interesseret i at finde ud af hvordan det løses rigtigt
Avatar billede mik28 Seniormester
20. marts 2003 - 19:16 #31
Det her virker :-)

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

            out.println("<body onload=\"self.focus();\">");
           
       
            out.println("<table style=\"width:700px;height:400px;background-image: url(../jpg-filer/basis.jpg);margin: auto;\">");
           
            out.println("<tr>");
            out.println("<td style=\"height:77px;\">");
            out.println("</td>");
            out.println("</tr>");
           
            out.println("<tr>");
            out.println("<td style=\"height:33px;text-align:left;\">");
            out.println("<table style=\"width:100%;\"><tr>");
           
            out.println("<script type=\"text/javascript\"><!--");
            out.println("            var width  = window.screen.availWidth;");
            out.println("            var height = window.screen.availHeight;");
           
            out.println("document.write(\"<td><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')\\\"></td>\");");
            out.println("--></script>");
        //    out.println("<td><input type=\"button\" style=\"width:165px;background-color:transparent;border:0;cursor:hand;\" onClick=\"window.open('../servlet/Startbeauty','Beauty')\"></td>");   
           
           
            out.println("<td style=\"width:50px;\"></td>");
            out.println("<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>");
            out.println("<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>");
            out.println("<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>");
            out.println("<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>");
            out.println("<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>");
            out.println("</tr></table>");
            out.println("</td></tr>");
           
           
            out.println("<tr><td style=\"vertical-align:top;height:250px;;\">");
            out.println("<iframe name=\"content\" src =\"Showdata\" frameborder=\"0\" scrolling=\"auto\" style=\"width:100%;height:100%\">");
            out.println("</iframe>");
            out.println("</td></tr>");
            out.println("<tr><td style=\"height:40px;\"></td></tr></table>");
               
            out.println("<script type=\"text/javascript\">");
            out.println("ie6 = (navigator.appVersion.indexOf(\"MSIE 6\") != -1) ? true : false;");
            out.println("ns6 = (document.getElementById && !document.all) ? true : false;");
            out.println("ns4 = (document.layers) ? true : false;");
            out.println("ie5 = (!ie6 && document.getElementById && document.all) ? true : false;");
            out.println("ie4 = (!ie5 && document.all) ? true : false;");
            out.println("op  = (navigator.appName == \"Opera\") ? true : false;");
           
            out.println("if ((ie6 == true) || (ie5 == \"true\") || (ie4 == \"true\")){");
            out.println("document.all.content.allowTransparency = true;");
            out.println("}");
            out.println("</script>");
            out.println("</body>");
            out.println("</html>");
           
           
        //    out.println(buffer.toString());
            out.close();
            }       
       
}
Avatar billede arne_v Ekspert
20. marts 2003 - 19:16 #32
Har du prøvet at sætte linie-skift ind i den StringBuffer append
svarende til out.println'erne ?'
Avatar billede mik28 Seniormester
20. marts 2003 - 19:17 #33
Avatar billede arne_v Ekspert
20. marts 2003 - 19:19 #34
Måske er det det som gør forskellen.

[jeg har ikke meget forstand på JavaScript]
Avatar billede mik28 Seniormester
20. marts 2003 - 19:25 #35
Jeg kan ikke få det til at virke med buffer.append
Avatar billede arne_v Ekspert
20. marts 2003 - 19:30 #36
Men prøv og se følgende !

Der er slet ikke noget Java i det stykke HTML/JavaScript - korrekt ?

Hvis du nu flytter det over i en separat fil js.html som du smider
i roden af din web app.

Og så inkluderer du filen med:

getServletContext().getRequestDispatcher("/js.html").include(request, response);

i din servlet.

Derved opnår du mange fordele:

1)  Du undgår en million \

2)  Du kan rette i js.html uden at recompile servlet

3)  Du får en pæn separation mellem server side logik i Java
    og client side logik HTML/JS

4)  Hvis JavaScript koden driller så poster du bare den
    her på Eksperten i JavaScript kategorien

    [Java folkene er sjældent skrappe tiL JavaScript og JavaScript
    folkene er sjældent gode til Java]
Avatar billede mik28 Seniormester
20. marts 2003 - 19:36 #37
Du har sikkert ret :-)
Avatar billede mik28 Seniormester
20. marts 2003 - 19:36 #38
Det virker sådan set som det skal. Det er sikkert ikke kønt, men hvad :-)
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