Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Applet-Servlet kommunikation

Empfohlene Antworten

Veröffentlicht

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...

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.

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.