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();
}
}