Datenaustausch zwischen Applet und JSP

Status
Nicht offen für weitere Antworten.

Kaan

Bekanntes Mitglied
Hallo!

Ich hab' grad folgendes Problem: Ich hab ein Applet programmiert, das mittels URL, URLConnection und ObjectInputStream/ObjectOutputStream eine serialisierte ArrayList von einem JSP entgegennimmt. Das funktioniert soweit einwandfrei.

Hier der vereinfachte Code:

Die HTML-Datei (readapplet.html):

Code:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
		<title>Applet / JSP Communication</title>
	</head>
	
	<body>
		<h1>Read data from a JSP</h1>
		<applet code="ReadApplet.class" width="640" height="480">
			Applet can not be showed!
		</applet>
	</body>
</html>

Die JSP-Datei (readdata.jsp):

Code:
<%@ page import="java.io.*" %><%@ 
	page import="java.util.*" %><%
	
	// imports done
	
	// define ArrayList with some data
	ArrayList<String> data = new ArrayList<String>();
	
	data.add("John McClane");
	data.add("John Rambo");
	data.add("Jason Bourne");
	data.add("Rocky Balboa");
	data.add("Kaan (haha)");
	
	if (request.getParameter("name") != null) {
		data.add(request.getParameter("name"));
	}
	
	
	
	// set content type
	String contentType = "application/x-java-serialized-object";
	response.setContentType(contentType);
	
	// wrap the OutputStream into an ObjectOutputStream
	ObjectOutputStream oos = new ObjectOutputStream(response.getOutputStream());
	
	// write ArrayList into the ObjectOutputStream
	oos.writeObject(data);
	
	// flush and close ObjectOutputStream
	oos.flush();
	oos.close();
%>

Die Java Applet Klasse (ReadApplet.java):

Code:
import java.io.*;
import java.net.*;
import java.util.*;
import javax.swing.*;

public class ReadApplet extends JApplet {
	private JTextArea textArea = new JTextArea();
	
	public void init() {
		// create a new JScrollPane which embeds the JTextArea
		JScrollPane scrollPane = new JScrollPane(textArea, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
		
		// add the JScrollPane to the content pane
		add(scrollPane);
	}
	
	public void start() {
		// define ArrayList for the data to retrieve
		ArrayList<String> data = new ArrayList<String>();
		
		try {
			// define the source URL
			URL urlJsp = new URL(getDocumentBase(), "readdata.jsp?name=Stefan");
			
			// open an URL connection to the source
			URLConnection connection = urlJsp.openConnection();
			
			// we don't want to send any data, but we want to get some
			connection.setDoInput(true);
			connection.setDoOutput(false);
			
			// don't use a cached version of URL connection
			connection.setUseCaches(false);
			connection.setDefaultUseCaches(false);
			
			// get an ObjectInputStream
			ObjectInputStream ois = new ObjectInputStream(connection.getInputStream());
			
			// read data
			data = (ArrayList<String>) ois.readObject();
			
			// close ObjectInputStream
			ois.close();
		} catch (MalformedURLException ex) {
			System.err.println(ex.getMessage());
		} catch (ClassNotFoundException ex) {
			System.err.println(ex.getMessage());
		} catch (IOException ex) {
			System.err.println(ex.getMessage());
		}
		
		// print the content of the ArrayList into the JTextArea
		Iterator<String> it = data.iterator();
		
		while (it.hasNext()) {
			textArea.append(it.next());
			textArea.append("\n");
		}
	}
	
	public void stop() {
		// do nothing
	}
	
	public void destroy() {
		// do nothing
	}
}

Wie gesagt, der Code oben funktioniert einwandfrei!

Aber ich muss auch die Möglichkeit haben, dass das Applet ein Objekt serialisiert und dieses an eine JSP sendet.

Hier der vereinfachte Code:

Die HTML-Datei (writeapplet.html):

Code:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
		<title>Applet / JSP Communication</title>
	</head>
	
	<body>
		<h1>Write data to a JSP</h1>
		<applet code="WriteApplet.class" width="640" height="480">
			Applet can not be showed!
		</applet>
	</body>
</html>

Die Java Applet Klasse (WriteApplet.java):

Code:
import java.io.*;
import java.net.*;
import java.util.*;
import javax.swing.*;

public class WriteApplet extends JApplet {
	public void init() {
		add(new JLabel("WriteApplet"));
	}
	
	public void start() {
		try {
			// define the destination URL
			URL urlJsp = new URL(getDocumentBase(), "writedata.jsp");
			
			// open an URL connection to the destination
			URLConnection connection = (URLConnection) urlJsp.openConnection();
			
			// we want to send and receive some data
			connection.setDoInput(true);
			connection.setDoOutput(true);
			
			// don't use a cached version of URL connection
			connection.setUseCaches(false);
			connection.setDefaultUseCaches(false);
			
			// get an ObjectOutputStream
			ObjectOutputStream oos = new ObjectOutputStream(connection.getOutputStream());
			
			// get an ObjectInputStream
			//ObjectInputStream ois = new ObjectInputStream(connection.getInputStream());
			
			// write data
			oos.writeObject(new Date());
			
			// flush and close ObjectOutputStream
			oos.flush();
			oos.close();
			
			// close ObjectInputStream
			//ois.close();
		} catch (MalformedURLException ex) {
			System.err.println(ex.getMessage());
		} catch (IOException ex) {
			System.err.println(ex.getMessage());
		}
	}
	
	public void stop() {
		// do nothing
	}
	
	public void destroy() {
		// do nothing
	}
}

Der Einfachheithalber sendet das Applet derzeit nur Daten an die JSP-Datei, das Einlesen der Antwort mit dem InputStream ist daher auskommentiert.


Die JSP-Datei, die das serialisierte Date-Objekt entgegennimmt und in der Session speichert (writedata.jsp).

Code:
<%@ page import="java.io.*" %><%@ 
	page import="java.util.*" %><%
	
	// imports done
	
	// wrap the InputStream into an ObjectInputStream
	ObjectInputStream ois = new ObjectInputStream(request.getInputStream());
	
	// read data from the ObjectInputStream
	Date date = (Date) ois.readObject();
	
	// close ObjectInputStream
	ois.close();
	
	// write the retrieved data into the session
	session.setAttribute("appletdata", date);
%>

Und hier eine JSP-Datei, die für Testzwecke die Session-Variable ausgibt (show_written_data.jsp):

Code:
<html>
	<head>
		<title>Show written data</title>
	</head>
	<body>
		<h1>Show written data</h1>
		<%= session.getAttribute("appletdata") %>
	</body>
</html>


Derzeit sieht es so aus, dass das Applet WriteApplet nicht an die JSP-Datei writedata.jsp herankommt, aber es wird auch keine Exception oder so geworfen. Irgendwo steckt daher wahrscheinlich ein elementarer Fehler im Applet Code ... Kann auch eine falsche Konfiguration der Umgebung (Browser, Firewall, Betriebssystem) für das nicht funktionieren verantwortlich sein?

Ich hab' mich schon mit den URLConnection-Eigenschaften herumgespielt, aber ohne Erfolg ...

... deswegen wende ich mich an Euch. Vielen Dank.


mfg Kaan
 

semi

Top Contributor
Der Teil mit dem Senden ist korrekt, soweit ich es beurteilen kann.
Ich erkenne in deinem Code keinen Fehler, bis auf die Tatsache, dass JSP für sowas ziemlich ungeeignet ist.
Bei JSP wird das OutputStream direkt geöffnet. Wenn du eigene Sachen reinschreiben willst, kriegst du sofort
eine IllegalStateException, da das OutputStream bereits geöffnet ist.

Wie auch immer. Was hast du eigentlich vor, irgendwelche Daten vom Server abrufen und dabei noch paar
Parameter beim Aufruf übergeben? Wäre ein simples Servlet auch OK?
 

Kaan

Bekanntes Mitglied
Hat sich erledigt.

Beim Lesen von Daten muss gleichzeitig ein InputStream zum JSP geöffnet werden und irgendetwas eingelesen werden. Liegt wohl am zugrunde liegenden Protokoll.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Direkter Datenaustausch zwischen Servern Netzwerkprogrammierung 5
N Datenaustausch zwischen Java-GUI und PHP-Programm über SOAP Netzwerkprogrammierung 19
C Bluetooth Paarung und Datenaustausch Netzwerkprogrammierung 6
J FTP FTP Datenaustausch(Updaten) Netzwerkprogrammierung 5
M Datenaustausch? Netzwerkprogrammierung 3
H Socket Datenaustausch Client <> Server Netzwerkprogrammierung 6
Kr0e Datenaustausch trotz NIO nur halb so schnell Netzwerkprogrammierung 6
A Datenaustausch mit 2 Clienten und 1 Server hapert Netzwerkprogrammierung 4
D Datenaustausch per IP Netzwerkprogrammierung 4
I Performanteste Kommunikationsmethode zwischen Client u. Server Netzwerkprogrammierung 4
M Socket Netzwerk Übertragung zwischen 4 Clients Netzwerkprogrammierung 2
J VideoStreaming zwischen 2 Geräten Netzwerkprogrammierung 1
R Kommunikation zwischen Shell und Putty Netzwerkprogrammierung 5
temi (Netzwerk-) Kommunikation zwischen Anwendungen. Wie? Netzwerkprogrammierung 5
M Socket peer to peer Verbindung zwischen Java und Matlab Netzwerkprogrammierung 0
S Bluetooth Verbindung zwischen Android app und Raspberry Pi 3 Netzwerkprogrammierung 1
M Verbindung zwischen zwei Pc in dem Selben Netzwerk Netzwerkprogrammierung 8
O Client zwischen XML und JSON auswählen lassen Netzwerkprogrammierung 2
F Verbindung zwischen Server und handy Netzwerkprogrammierung 1
P MIME-TYPE Erklaerung, Kommunikation zwischen Client und Server Netzwerkprogrammierung 3
Z Verbindung zwischen 2 Rechnern über ServerSockets nicht möglich Netzwerkprogrammierung 3
D Chatprogramm zwischen zwei ChatClients (aktiv/passiv) Netzwerkprogrammierung 1
V Unterschied zwischen cURL und HttpURLConnection?? Netzwerkprogrammierung 2
M RMI RMI Probleme zwischen Client und Server Netzwerkprogrammierung 5
C HTTP Studienarbeit Kommunikation via HTTP mit POST zwischen Server und Client Netzwerkprogrammierung 7
V Datensätze zwischen verschiedenen Datenbanken kopieren Netzwerkprogrammierung 2
F Peer to Peer Verbindung zwischen mehreren Clients? Netzwerkprogrammierung 8
G Verbindung zwischen PC und Handy Netzwerkprogrammierung 10
C Verbindung zwischen 2 Computern herstellen Netzwerkprogrammierung 12
M Kommunikation zwischen ServerSocket und Socket Netzwerkprogrammierung 2
L RMI-Objekt zwischen zwei RMI-Servern kopieren Netzwerkprogrammierung 2
J Socketverbindung zwischen Javaclient und C-Server Netzwerkprogrammierung 11
R Kommunikationsproblem zwischen JAVA-client und C-Server Netzwerkprogrammierung 5
B Verbindung zwischen Client und Server Netzwerkprogrammierung 2
0 Socketverbindung zwischen PHP und Java? Netzwerkprogrammierung 6
G Chat zwischen applets: möglich? Netzwerkprogrammierung 2
M RMI zwischen verschiedenen Java Versionen Netzwerkprogrammierung 2
N UDP zwischen Java und C++ funktioniert nicht. Netzwerkprogrammierung 4
M Objekte senden zwischen Java und PHP mit SOAP Netzwerkprogrammierung 9
S Objekte zwischen Client und Server über Sockets senden Netzwerkprogrammierung 2
D Kommunikation zwischen mehreren Servlets??? Netzwerkprogrammierung 3
P Zeit zwischen mehreren Client log-ins bestimmen. Netzwerkprogrammierung 2
Androbin Socket Fehlerhafter Applet-Chat Netzwerkprogrammierung 12
S Datei schreiben über Applet Netzwerkprogrammierung 8
N Applet/Applikation auf Xport laufen lassen Netzwerkprogrammierung 10
N Applet Access Denied Netzwerkprogrammierung 12
TheJavaKid Webcam-Chat im Applet (ChatRoulette Klon) Netzwerkprogrammierung 10
H Applet soll XML-File auf Server speichern Netzwerkprogrammierung 6
S Socket Applet Client bekommt keine GLOBALE Verbindung zum Server Netzwerkprogrammierung 25
B FTP Applet mit FTP-Server-Zugriff sicher gestalten Netzwerkprogrammierung 12
J Applet soll Daten auf Server ablegen - einfachster Weg fuer n00bs? Netzwerkprogrammierung 4
O php - applet Kommunikation Netzwerkprogrammierung 9
B Client Server Applet keine Ahnung Netzwerkprogrammierung 3
R Applet --> PHP --> Applet Netzwerkprogrammierung 2
E Userliste für Chat Applet Netzwerkprogrammierung 4
B RTP - Applet Starthilfe Netzwerkprogrammierung 7
B Globale IP-Adresse auslesen - Java Applet Netzwerkprogrammierung 2
S RMI RMI-Applet kommunikation funktioniert nicht Netzwerkprogrammierung 8
J Applet Security - java.security.AccessControlException: access denied Netzwerkprogrammierung 3
H Socket Mit Applet Verbindung zu eigener Website aufbauen Netzwerkprogrammierung 4
E Files von Server laden in Applet Netzwerkprogrammierung 5
aze Applet von Webseite aufrufen und mit diesem kommunizieren Netzwerkprogrammierung 8
M chat als applet umgeschrieben - unbekannter fehler :( Netzwerkprogrammierung 2
U Server-IP in Applet ermitteln Netzwerkprogrammierung 4
J Connection Speed Test ohne Applet Netzwerkprogrammierung 5
ABstraCT Applet multipler port Zugriff möglich ? Netzwerkprogrammierung 5
C Applet mit Script steuern Netzwerkprogrammierung 9
A Problem mit Netzwerkprogrammierung im Applet! Netzwerkprogrammierung 10
F applet verbindung zum server Netzwerkprogrammierung 6
R Java-Chat-Applet funktioniert nur in Eclipse Netzwerkprogrammierung 3
F Applet Datei Zugriff Netzwerkprogrammierung 13
M Server aus inem Applet heraus starten Netzwerkprogrammierung 4
G Applet und Netzwerkverbindungen? Netzwerkprogrammierung 2
F Daten senden und empfangen mit Applet Netzwerkprogrammierung 8
E Applet zum Datei-Upload Netzwerkprogrammierung 3
T Image aus Applet an PHP Seite senden? Netzwerkprogrammierung 3
S Java Applet Chat Grundsatzfrage Netzwerkprogrammierung 6
H RMI + Socket + Applet Netzwerkprogrammierung 5
N Chatprogrammierung - Applet Netzwerkprogrammierung 3
S Von Applet zu applet Netzwerkprogrammierung 7
G RMI + Applet - Verbindung nur lokal Netzwerkprogrammierung 27
S Applet und JWS auf Apache-Axis (SOAP) Netzwerkprogrammierung 8
Paule Connection Applet Servlet ohne Socket bzw RMI Netzwerkprogrammierung 2
G Applet java.net: acces denied Netzwerkprogrammierung 2
D Einfache Applet-Servlet-Kommunikation Netzwerkprogrammierung 5
R Applet & Netzwerk Netzwerkprogrammierung 4
M Servlet - Applet Kommunikation Netzwerkprogrammierung 3
M Einfachste Möglichkeit aus'm Applet Daten an Server senden Netzwerkprogrammierung 6
K Applet - Servlet Kommunikation ohne Sockets Netzwerkprogrammierung 5
R applet servlet kommunikation Netzwerkprogrammierung 2
M Zum x-ten Mal: Problem mit NetSend-Applet Netzwerkprogrammierung 5
C Applet <> Servlet Netzwerkprogrammierung 4

Ähnliche Java Themen

Neue Themen


Oben