Kommunikation Java und Javascript

Jungspund

Mitglied
Hallo,
ich versuche gerade verzweifelt eine Lösung für mein Problem zu finden, und zwar besteht dieser in der Kommunikation
zwischen Java und Javascript. Da sich das ganze Projekt um eine JSP Datei dreht ist hierbei Java die Logik und HTML die Visuelle Darstellung des Prokektes. Nun möchte ich, dass diese beiden Elemente miteinander Kommunizieren können, ohne jeweils über Java request Controller gehen zu müssen, da diese die aktuelle Seite immer erneut laden.

Bei der Kommunikation von Java in eine Javascript Variable besteht ja nun folgende Möglichkeit:

Code:
var scriptZahl= <%=int javaZahl= 1%>;

nun Möchte ich aber auch den umgekehrten weg einschlagen können in dem ich eine Javascript Variable in Java speichere.
Code:
<%int javaZahl%> = scriptZahl;

Das ganze hin und her wechseln der Variablen zwischen den zwei Sprachen passiert, da diese beiden Arten in einer Javascript Methode benötigt werden. Hoffe es gibt da eine Abhilfe und auch, dass ich hier im richtigem Forum dafür bin
 
Das Problem ist das Java ja Serverseitig ist und JavaScript erst beim Clienten ausgeführt wird.
Code:
var scriptZahl= <%=int javaZahl= 1%>;
kannst du Problemlos eine JS Variable befüllen da der Java Code vor dme bzw. während dem sendne ausgeführt wird. Der JS Code aber nicht weswegen du nicht einfach die JS Variable an Java weitergeben lassen kannst.

Um das zu bewerkstelligen ist ein kleines Workaround nötig. Hast du schon mal was von Ajax gehört?
Wenn nciht solltest du dringend danach Googeln da du damit das Problem lösen kannst.
Mit Ajax kannst du daten vom Clienten zurück an den Server sendne. Allerdings ist zu dem Zeitpunkt natürlich auch das "richtige" Java-Programm längst zuende, und es wird automatishc ein neues gestartet.

Ich hoffe ich konnte dir helfen!
 
ok Danke für den Hinweis, hatte schon fast befürchtet, dass das ganze nur mit Ajax zu lösen ist...
werd es mir mal angucken und auf die Zustimmung vom Chef warten.
 
Wieso befürchtet? :)
Ajax ist wirklich nicht schwer zu verstehn bzw. anzuwenden. Man erstellt ein XMLHttpRequest Objekt (bzw. bei Microsoft IE gibt es zwei weitere ActiveX Objekte die dafür nötig sind) und mit diesem kann man dann iene verbindung öffnen und per get oder post daten senden.

Wenn es nun aber aus irgendwelchen gründen garnicht geht könnte man aber auch die JS variablen per POST oder GET senden (Post nur bei Formularen oder Ajax). Das kann man z.B. mit dem location Objekt machen. Allerdings wird dabie die Seite immer neu geladen was natürlich nicht schön und ggf. auch zu langsam sein. Zumindestens für den User. Ausserdem geht es natürlich nicht wirklich wenn man 1 Anfrage in der Sekunde schiken will da dann der User natürlich vollkommen blockiert wäre.
 
Den Wartungsaufwand für das Projekt, welches ich gerade erstelle, weil ich hier der einzige sein werde, der mit AJAX PHP Javascript Java und HTML arbeitet ;) sprich wenn ich nicht da bin, wird der Aufwand das Projekt zu warten ziemlich groß werden.
 
Wenn es dein Chef so übel sieht, kannst du ihn ja mit ordentlich dokumentiertem Quelltext locken. Und wenn du dir ein wenig mühe gibst findet man auch einige interessante Projekte die sogar mithilfe deiner Kommentare eine ganze Dokumentation erstellen. Für CSS gab es auf jedenfall was...

UNd wie sheel schon geschrieben hat, mit jQuery erleichterst du dir die Arbeit und machst deinen Code besar lesbar. Ok, XMLHttpRequest hört sich für den lain nicht unbedingt gleich nach Ajax an, $.ajax() dagegen schon :)
 
Naja, das Erstellen der ganzen Sache ist jetzt auch nicht so das Problem, aber welche Entwicklungsumgebung besitzt denn alle diese Features? In Eclipse hatte ich es Probiert, aber der Interne Browser hatte alles verbuggt dargestellt.

Mal ne Frage zu AJAX. Wäre es Theoretisch möglich Ajax im Zusammenhang mit Java Servlets zu nutzen und nicht nur mit php oder asp?
 
ok dann könnte ich die datei doch wie folgt in der Web.xml hinterlegen :
XML:
<servlet>
    <description>Handles the login of the user.</description>
    <display-name>LoginController</display-name>
    <servlet-name>LoginController</servlet-name>
    <servlet-class>controller.LoginController</servlet-class>
    <init-param>
      <param-name>jdbc</param-name>
      <param-value>jdbc/eventmanagerDB</param-value>
    </init-param>
  </servlet>
  <servlet-mapping>
    <servlet-name>LoginController</servlet-name>
    <url-pattern>/login</url-pattern>
  </servlet-mapping>

und dann per Javascript auf folgende Art aufrufen? :

Javascript:
function log() {
        
        xmlhttp=GetXmlHttpObject();
        
        var url="login";
        url=url+"?q=test";
        
        
        
        
        xmlhttp.onreadystatechange=getOutput;
        xmlhttp.open("GET",url,true);
        xmlhttp.send(null);
        alert('test');  
        
    }
    
    function GetXmlHttpObject()
    {
        if (window.XMLHttpRequest)
            {
               return new XMLHttpRequest();
            }
        if (window.ActiveXObject)
            {
              return new ActiveXObject("Microsoft.XMLHTTP");
            }
        return null;
    }
 
Zuletzt bearbeitet von einem Moderator:

Neue Beiträge

Zurück