Frage zur Verarbeitung einer JSP
Hansi
- java
0 dave0 Biesterfeld0 Hansi
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);
%>
}
}
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 :)
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
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>
Hab noch was vergessen...
Die JSP heißt "selectLang.jsp". Damit handelt es sich um einen rekursiven Aufruf.
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
Hallo,
Wäre dieser Code lauffähig?
Nein.
Was willst du eigentlich machen?
Gruß
Slyh