Witam.

Piszę program. Mam servlet, który pobiera z requesta dane i zwraca string wynikowy.
Mam applet, który wysyła zapytanie i ściąga odpowiedź.

W eclipse oba programy działają.
Servlet stawiam na tomcacie - działa poprawnie.

Applet uruchamiam ze strony html - zatrzymuje się na łaczeniu z servletem i dalej nie rusza, nie wiem, czy to błąd programu, czy po prostu sie nie odświeża....

Oto kod appletu:

package pl.brojek;

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;

import javax.swing.JApplet;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;



public class WebApplet extends JApplet {


	private JLabel nameLabel;


	private JLabel yearLabel;

	private JTextField nameField;

	private JTextField yearField;

	private JLabel result;


	@Override
	public void init() {
		setLayout(new FlowLayout());
		nameLabel = new JLabel("Imię:");
		nameField = new JTextField();
		yearLabel = new JLabel("Rok urodzenia:");
		yearField = new JTextField();

		nameLabel.setSize(150, 22);
		nameField.setSize(150, 22);
		nameField.setPreferredSize(new Dimension(150, 22));
		yearLabel.setSize(150, 22);
		yearField.setSize(150, 22);
		yearField.setPreferredSize(new Dimension(150, 22));

		result = new JLabel();
		result.setSize(150, 22);
		result.setLocation(20, 180);
		JPanel panel = new JPanel();

		panel.add(nameLabel);
		panel.add(nameField);
		panel.add(yearLabel);
		panel.add(yearField);
		//		panel.add(result);

		JButton send = new JButton("Wyślij");
		send.setLocation(20, 240);
		panel.add(send);
		send.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent e) {
				sendMSG();
			}

		});

		add(panel);
		JPanel southPanel = new JPanel();
		southPanel.add(result);
		add(southPanel, BorderLayout.SOUTH);
	}


	/**
	 * Wysyła zapytanie do servletu.
	 */
	protected void sendMSG() {
		//Wysyłamy i odbieramy dane w atku, aby nie blokować
		// Interfejsu użytkownika.
		new Thread() {
			@Override
			public void run() {
				URL url;
				try {
					result.setText("Trwa połączenie...");
					url = new URL(
							"http://localhost:8080/WebServlet/MainServlet");
					URLConnection connection = url.openConnection();
					connection.setDoOutput(true);
					OutputStreamWriter writer = new OutputStreamWriter(
							connection.getOutputStream());
					StringBuilder build = new StringBuilder("firstname=");
					build.append(nameField.getText());
					build.append("&year_of_birth=");
					build.append(yearField.getText());
					writer.write(build.toString());
					writer.flush();
					
					BufferedReader br = new BufferedReader(
							new InputStreamReader(connection.getInputStream()));

					String line = null;
					while ((line = br.readLine()) != null) {
						result.setText(line);
					}

				}
				catch (MalformedURLException e) {
					result.setText("Wystapił błąd podczas połączenia: "
							+ e.getMessage());
				}
				catch (IOException e) {
					result.setText("Wystapił błąd podczas połączenia: "
							+ e.getMessage());
				}
			}

		}.start();

	}
}