アプレット−サーブレット間の通信を実現する方法(Tomcat 3.2.4)
・htmlのソース
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<meta http-equiv="Pragma" content="no-cache">
<title>communication</title>
</head>
<body>
<applet code="Communication.class" codebase="." archive="communication.jar" width="200" height="150">
</body>
</html>
・アプレットのソース
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.net.*;
public class Communication extends Applet{
private Button button;
private TextArea textArea;
private ActionListener buttonAction = new ActionListener(){
public void actionPerformed(ActionEvent e){
button_pushed(e);
};
};
public void init(){
button = new Button("リクエスト");
textArea = new TextArea(4, 20);
button.addActionListener(buttonAction);
add(button);
add(textArea);
}
private void button_pushed(ActionEvent e){
try{
String sendParam = "applet -> servlet";
URL url = getCodeBase();
String strURL = url.toString() + "servlet/TestServlet";
url = new URL(strURL);
HttpURLConnection connect = (HttpURLConnection)url.openConnection();
// POSTのための設定
connect.setDoOutput(true);
connect.setDoInput(true);
connect.setUseCaches(false);
OutputStream outStream = connect.getOutputStream();
ObjectOutputStream objectOutputStream = new ObjectOutputStream(outStream);
objectOutputStream.writeObject(sendParam);
objectOutputStream.flush();
objectOutputStream.close();
InputStream inStream = connect.getInputStream();
ObjectInputStream objectInStream = new ObjectInputStream(inStream);
String reciveParam = (String)objectInStream.readObject();
inStream.close();
textArea.setText(reciveParam);
}catch(Exception ex){
ex.printStackTrace();
}
}
}
・サーブレットのソース
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
public class TestServlet extends HttpServlet{
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
InputStream inStream = request.getInputStream();
try{
// パラメタ取得
ObjectInputStream objectInputStream = new ObjectInputStream(inStream);
String reciveParam = (String)objectInputStream.readObject();
objectInputStream.close();
System.out.println(reciveParam);
// パラメータ送信
String sendParam = "servlet -> applet";
response.setContentType("application/octet-stream");
OutputStream outStream = response.getOutputStream();
ObjectOutputStream objectOutStream = new ObjectOutputStream(outStream);
objectOutStream.writeObject(sendParam);
outStream.flush();
outStream.close();
}
catch(Exception ex){
ex.printStackTrace();
}
}
}
・実行結果