Zum Inhalt springen

Applet-Servlet kommunikation


noe

Empfohlene Beiträge

Hi!

Ich hab eine ziehmlich dringende Frage und wäre für eine Antwort sehr dankbar.

Es geht um ein Applet das von einem PHP skript aufgerufen wird:

SearchPage

Was das Applet eigentlich macht ist hier eher irrelevant (es durchsucht einen gegebenen Ordner nach .txt files, kopiert diese in einem Zip-ordner und soll den Pfad zu diesem zip-ordner zurückgeben)

Das output des Applets soll dann im darüberliegenden Feld erscheinen (unter Zip file) - was es aber nicht tut. Ich arbeite zum ersten Mal mit applets im Zusammenhang von POST und ich komm nicht drauf warum der output nicht erscheint.

Nachdem auf search geklickt wurde und das applet fertig ist, wird die folgende methode aufgerufen:

public void doPost(String result) throws IOException {

		URL url;

		URLConnection urlConn;

		DataOutputStream printout;

		url = new URL(applet.getCodeBase().toString());

		urlConn = url.openConnection();

		urlConn.setDoInput(true);

		urlConn.setDoOutput(true);

		urlConn.setUseCaches(false);

		urlConn.setRequestProperty("Content-Type",

				"application/x-www-form-urlencoded");


		// Send POST output.

		printout = new DataOutputStream(urlConn.getOutputStream());

		String content = "Fname=" + URLEncoder.encode(result);

		printout.writeBytes(content);

		printout.flush();

		printout.close();


	}

So wie ich das verstanden habe sollte "Fname" dann in other.php übernommen werden, was aber nicht der fall ist:

<?php
$Fname = $_POST["Fname"];
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>SearchPage</title>
<?php include("header.php"); ?>

</head>
<body>
<?php include("border.php"); ?>

<form method="post" action="<?php echo $PHP_SELF;?>">Zip-File:<input
type="text" size="12" maxlength="12" name="Fname" value="" .$Fname><br />
</form>
<APPLET CODE="applet.DICOMScanGUI.class" archive="DICOMScan.jar"
WIDTH=400 HEIGHT=100> * *</APPLET>

</body>
</html>[/PHP]

Ich glaube mein Fehler liegt im php-skript, ich weiß nur nicht wie man es anders machen kann...

Link zu diesem Kommentar
Auf anderen Seiten teilen

Also das Applet erzeugt die Antwort, und sendet sie.

Der Servlet, der das Applet nicht direkt kenn empfängt sie. Also brauche ich eine zusätzliche Klasse wie:

public class Servlet extends HttpServlet{


	protected void doPost(HttpServletRequest request,

			HttpServletResponse response) throws ServletException, IOException {

	        try {

	            System.out.println("in Upload");

	            response.setContentType("application/x-java-serialized-object");


	            // von applet lesen

	            InputStream in = request.getInputStream();

	            ObjectInputStream inputFromApplet = new ObjectInputStream(in);

	            String echo = (String) inputFromApplet.readObject();


	            // an applet

	            OutputStream outstr = response.getOutputStream();

	            ObjectOutputStream oos = new ObjectOutputStream(outstr);

	            oos.writeObject(echo);

	            oos.flush();

	            oos.close();

	}

	catch(Exception e){

	  System.err.println(e);

	}

	}

}

Die Servlet Klasse empfängt dann die Ausgabe des Applets? Und wie weiß das PHP-Skript von der Servlet Klasse und dessen Verhalten? Ich hab irgendwo gelesen dass das im action-tag spezifiziert wird. Sowas wie:

<form method="post" action="http://... Servlet.class">Zip-File:<input
type="text" size="12" maxlength="12" name="Fname" value="" .$Fname><br />
</form>[/PHP]

Ist das korrekt? Muss man sonst noch irgendwas machen? Evtl. das Applet beim Servlet anmelden, oder umgekehrt. Wie gesagt, ich mach sowas zum ersten Mal, weswegen mir einiges entfallen kann. Wenn ich aber innerhalb derselben Methode in der Applet klasse vom server lese, empfange ich das eben gesendete. Was heißen muss dass das Applet sein Job macht und die ANtwort sendet. Nur empfangen wird sie nicht.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...