Hansi: Frage zur Verarbeitung einer JSP

Die Variable "zuSetzenderWert" wird von der JavaScript-Methode wertSetzen gesetzt. Nach dem Setzen wird die Callback-Methode "callbackSuccess" aufgerufen. Die Methode enthält als Parameter die nun gesetzte Variable "zuSetzenderWert". Dieser wird nun der Java-Methode "setStaticWert" übergeben.

Nun zu meiner Frage:

Was wird zuerst aufgeführt? Der Code innerhalb von <% %> oder der andere Code. Wenn zuerst der Code innerhalb von <% %> ausgeführt wird, dann wäre die variable "zuSetzenderWert" noch leer.

Könnt ihr mir erklären wie diese JSP verarbeitet wird?

<script type="text/javascript">
    wertSetzen(callbackSuccess);

function callbackSuccess(zuSetzenerderWert)
    {
        <%
            Variablen.setStaticWert(zuSetzenerderWert);
        %>
    }
}

  1. zuerst das in den <% %>

    erklärung:

    JSP ist Serverseitig, JavaScript Clientseitig

    Das heist, wenn irgendein Client deine Seite aufruft dann nimmt der Server die Seite die angefragt wurde und geht Sie durch.
    alles was in <% %> steht weis er muss er ausführen und macht das
    das so entstanden dokument in dem jetzt kein einziges <% %> mehr steht (hat der server ja alles schon gemacht) sendet er an den client

    beim client werden dann javascript funktionen ausgeführt
    der client kennt also die Methode "Variablen.setStaticWert()" nicht da diese ja innerhalb der <% %> steht

    wenn ich richtig verstehe was du machen willst brauchst du ajax, da kannst du dann dem server mittels javascript in deiner "callbackSuccess()" funktion die variable "zuSetzenderWert" schicken und dann kann sie der server verarbeitenn

    du musst immer im hinterkopf behalten das bei websiten keine verbindung zum server besteht, es ist nur ein simples "schick mir was" vom client und die entsprechende antwort vom server, dabei wird an keiner stelle eine feste verbindung aufgebaut

    diese erklärung ist nur schematisch da soweit ich weis JSP compeliert wird und nicht nur interpretiert, da ist das ganze technisch bisschen anders tut aber nichts zur sache

    hoffe ist verständlich :)

  2. Hej,

    Könnt ihr mir erklären wie diese JSP verarbeitet wird?

    <script type="text/javascript">
        wertSetzen(callbackSuccess);

    function callbackSuccess(zuSetzenerderWert)
        {
            <%
                Variablen.setStaticWert(zuSetzenerderWert);
            %>
        }
    }

    Ja, und es dürfte nichtmal korrekt verarbeitet werden, wenn die Variable zuSetzenderWert nicht an einer vorangestellten Stelle im JSP-Kontext deklariert und ggf. auch initialisiert wurde.

    Der Server übersetzt die JSP in ein Servlet, wobei der gesamte Inhalt der Ressource in den Ausgabestrom der ServletResponse geschrieben wird. Vorher noch werden die JSP-Ausdrücke verarbeitet. Ein <% %> ist ein Scriptlet und hat somit keine Ausgabe, sondern wird nur serverseitig verarbeitet. Der Client erhält also die Response, und _frühestens_ nachdem diese Response ausgeliefert wurde besteht die Möglichkeit die Methode callbackSuccess(zuSetzenderWert) auszuführen. Zum Zeitpunkt der Ausführung sieht ein Javascript also so aus:

      
    <script type="text/javascript">  
        wertSetzen(callbackSuccess);  
      
        function callbackSuccess(zuSetzenerderWert)  
        {  
        }  
    }  
    
    

    Beste Grüße
    Biesterfeld

    --
    Art.1: Et es wie et es
    Art.2: Et kütt wie et kütt
    Art.3: Et hätt noch immer jot jejange
    Das Kölsche Grundgesetz
  3. Wäre dieser Code lauffähig?

    <script type="text/javascript">
        <%
            if (request.getParameter("wert") == null)
            {
        %>
            wertSetzen(callbackSuccess);
        <%
            }
        %>

    function callbackSuccess(wert)
        {
            <%
                Variablen.setSeriennummerMFP(wert);
            %>

    window.location.href = "selectLang.jsp?wert=" + wert
        }
    </script>

    1. Hab noch was vergessen...

      Die JSP heißt "selectLang.jsp". Damit handelt es sich um einen rekursiven Aufruf.

      1. Hej,

        Wäre dieser Code lauffähig?

        <script type="text/javascript">
            <%
                if (request.getParameter("wert") == null)
                {
            %>
                wertSetzen(callbackSuccess);
            <%
                }
            %>

        function callbackSuccess(wert)
            {
                <%
                    Variablen.setSeriennummerMFP(wert);
                %>

        window.location.href = "selectLang.jsp?wert=" + wert
            }
        </script>

        Die JSP heißt "selectLang.jsp". Damit handelt es sich um einen rekursiven Aufruf.

        Ahhh, jetzt wird es etwas klarer. Also Vergiss bitte den gesamten Javascript-Krempel, erstmal muss das was du vorhast, solange wir nicht über eine Ajax-basierte Technik sprechen auch ohne Javascript lauffähig sein!

        Ich könnte mir vorstellen, dass deine Seite ein Element in dieser Form enthalten könnte:

          
        <ul>  
          <li><a href="index.jsp?lang=de">Deutsch</a></li>  
          <li><a href="index.jsp?lang=en">English</a></li>  
        </ul>  
        
        

        Serverseitig wird also eine beliebig jsp, in diesem Fall index.jsp, mit dem Parameter lang=de aufgerufen. Innerhalb der JSP kannst du nun auf die Request reagieren:

          
        <p>  
          <% if(request.getParameter("lang").equals("de")) { %>  
            Willkommen!  
          <% } else if( request.getParameter("lang").equals("en") ) { %>  
            Welcome!  
          <% } %>  
        </p>  
        
        

        Natürlich, ist das nur ein prinzipieller und nicht besonders sauberer Aufbau, aber ist es vielleicht das was du möchtest?

        In deinem Beispiel vermischst du serverseitiges Java mit clientseitigem Javascript, versuchst aus Javascript auf eine JSP-Variable zuzugreifen und berücksichtigst wenn ichs recht gesehen habe nicht die Reihenfolge! Irgendwie hab ich den Eindruck, du möchtest dass das Javascript serverseitig ausgeführt werden soll, wohingegen Java auf eine clientseitige Interaktion hin reagieren soll. Erstes erfordert SSJS und ich kann mir keinen sinnvollen Grund einfallen lassen, warum man das wollen würde. Zweiteres erfordert Ajax und setzt einen sicheren Umgang mit Javascript und einer serverseitigen Programmiersprache deiner Wahl voraus.

        Beste Grüße
        Biesterfeld

        --
        Art.1: Et es wie et es
        Art.2: Et kütt wie et kütt
        Art.3: Et hätt noch immer jot jejange
        Das Kölsche Grundgesetz
    2. Hallo,

      Wäre dieser Code lauffähig?

      Nein.
      Was willst du eigentlich machen?

      Gruß
      Slyh