30. Juli 2010  
  Suche:
 
  Basics
  Code-Galerie
  Forum
  FAQ
  Tipps & Tricks
  Literatur
  Knowledge Base
  Workshops
  JSP-Hosting
  JSP-Engines
  Jobbörse
  Links
  JSP-Sites
  Newsletter
  JSP-Test
  Impressum
  Username:
  
  Passwort:
  
  

  Jetzt registrieren
  Warum registrieren?

  Valid HTML 4.01!
  Valid CSS!

JSP & JavaScript

von shark,  20.10.2001 21:01:43  (16 votes) Kommentare (1)  [vote]
JavaScript bietet viele Funktionen, die das Entwickeln von Web-Anwendungen vereinfachen. Die Kombination von JSP + JavaScript bringt häufig folgende Fragestellung ans Tageslicht: Wie kann man JSP-Variablen im JavaScript-Code ansprechen?

Die Antwort auf diese Frage ist nicht trivial. JSP-Seiten werden auf dem Server ausgeführt, JavaScript hingegen wird auf dem Client im Browser ausgeführt. Client und Server können Informationen nur über HTTP-Parameter und erzeugte Web-Seiten austauschen. Es besteht aufgrund dieser Restriktionen keine Möglichkeit JSP-Methoden und Attribute direkt im JavaScript Code anzusprechen!

Die einzige Möglichkeit in diesem Kontext ist: Daten in die Web-Seite zu schreiben und über JavaScript zuzugreifen. Für diesen Fall verwendet man die "<%= %>" Tags, um die Daten in die Web-Seite zu schreiben und um auf dem Client die Daten mit JavaScript zu verarbeiten.

Beispiel einer JSP-Seite die mit JavaScript angereichert ist:

<%@page language="java" contentType="text/html"%>
<html>
<head>
<%
  // JSP-Variable definieren und Text zuweisen
  String strText = "Some Text";
%>

<script language="javascript">

<!-- JavaScript Code fuer Browser, die kein Scripting
    unterstuetzen ausblenden

// JSP-Variable der JavaScript-Variablen zuweisen
var jsText = "<%=strText%>";

// JavaScript Funktion zum Anzeigen des Textes
function showText()
{
  alert("Text: " + jsText);
}

// Ende der JavaScript Sektion -->
</script>
/head>
<body onload = "showText()">
</body>
</html>

Verwendet man JavaScript in JSP- bzw. HTML-Seiten, sollte man beachten, das Benutzer im Browser die Ausführung von JavaScript unterbinden können. Man sollte deshalb in seiner JSP-Seite prüfen, ob der Browser JavaScript unterstützt und wenn nicht, das Problem auf dem Server lösen.

Alternativ kann man durch HTML-Kommentare auch den JavaScript Code einfach ausblenden. Für Funktionen, die nicht unbedingt benötigt werden, macht das durchaus Sinn. Um den JavaScript Code auszublenden umschliesst man diesen nach dem <script> Tag mit einem HTML-Kommentar (siehe Beispiel). Der Browser ignoriert im Falle der Unterstützung von JavaScript den HTML-Kommentar nach dem <script> Tag und führt den JavaScript Code aus. Wird JavaScript nicht unterstützt, ignoriert der Browser den mit dem HTML-Kommentar umschlossenen JavaScript Code.
[Druckansicht]    [Beitrag versenden]
<< zurück  Kommentieren

Kommentare zu diesem Eintrag
Re: JSP & JavaScript
tanja, 10.08.2004 16:20:14

ich war froh endlich etwas.... gut formuliertes, und verständliches zu diesem thema zu finden.
allerdings stellt sich mir das problem genau andersherum. ich möchte einen wert, der aus javascript kommt (navigator.appName), in meine String appName "hineinbekommen"....

hast du eine ahnung, wie das gehen könnte?

lieben gruß

tanja

Re: JSP & JavaScript
submeric, 10.08.2004 19:21:05

tanja blöd das geht nicht du müstest den wert wenn dan über get/post an die jsp senden

JSP works on the server and not on the client all who think like that schould work with javascript

Re: JSP & JavaScript
berox, 07.09.2004 21:02:34

@ Tanja:
Du kannst in der jsp-Seite ein Formular mit einem verstecktem Feld vorsehen, dem du dann per Javascript einen Wert zuweist. Wird dies über den Submit-Button (lässt sich als Grafik "tarnen") abgeschickt, hast du deinen Wert, den du serverseitig weiterverarbeiten kannst.

Re: JSP & JavaScript
drumstick, 24.01.2006 18:58:44

Hi!

Wie kann ich in einer JSP-Datei auf JavaScript-Unterstützung prüfen?

Danke vorab!

Re: JSP & JavaScript
KartoffelKiffer, 14.05.2007 10:29:02

"hast du eine ahnung, wie das gehen könnte?"

Hallo,

ich hatte selbiges Problem zu lösen. Geschafft habe ich es wiefolgt:

var temp = "<%= KLASSE.methode("+_platzhalter_+") %>";

Die Variable temp ist nun also mit dem Rückgabestring aus methode gefüllt. Dieser String beinhaltet irgendwo den obig-deklarierten Platzhalter, welcher mit temp.replace("+_platzhalter_+", javasciptVariable) ersetzt werden kann.

So habe ich also imaginär eine JavaScript-Variable in meine JSP-Methode eingepflanzt.



Mfg Tom

Re: JSP & JavaScript
KartoffelKiffer, 14.05.2007 10:44:01

//Edit:

Der Platzhalter +_platzhalter_+ ist unglücklich gewählt. Durch replace wird lediglich das erste Vorkommen des regulären Ausdruckes ersetzt. Mit /zeichenfolge/g kann jedes Vorkommen der "zeichenfolge" ersetzt werden.

http://de.selfhtml.org/javascript/objekte/string.htm#replace

Allerdings kommt JavaScript mit der Zeichenfolge /+_platzhalter_+/g nicht zurecht, es wäre daher sinnvoller, wenn alle vorkommenden Ausdrücke ersetzt werden sollen, einen anderen Platzhalter zu wählen: /__platzhalter__/g funktioniert zB.



Mfg Tom


<< zurück


Hinweis: Auf dieser Seite liegen Links zu anderen Seiten im Internet. Für alle diese Links gilt: Wir betonen ausdrücklich, daß wir keinerlei Einfluß auf die Gestaltung und die Inhalte der gelinkten Seiten haben. Deshalb distanzieren wir uns hiermit ausdrücklich von allen Inhalten aller gelinkten Seiten auf dieser Homepage und machen uns ihre Inhalte nicht zueigen. Diese Erklärung gilt für alle auf unserer Homepage angebrachten Links

Redaktion/Betreiber von JSP-Develop übernehmen keinerlei Gewährleistung und Verantwortung für die Richtig- und/oder Vollständigkeit von den auf den Webseiten JSP-Develop veröffentlichten Source Codes. Die Verantwortung der Verwendung/Anwendung sowie etwaige Modifikation der hier veröffentlichten Sourcen obliegt einzig dem Benutzer der Webseite, welche die veröffentlichten Sourcen in einer Applikation/Anwendung einsetzt. Durch das Kopieren und/oder Benutzen der Sourcen in einer Applikation/Anwendung bzw. etwaigen Abschriften wird dieser Rechtshinweis anerkannt.

Java, JSP, JavaServer Pages, J2EE, EJB, JDBC, JNDI, JTA, Sun, Sun Microsystems are trademarks or registered trademarks of Sun Microsystems, Inc. in the United States and in other countries. IBM, WebSphere are trademarks or registered trademarks of International Business Machines Corporation. Other trademarks and registered trademarks are the property of their respective owners.