applet程序如下:
package servlet_test;import java.awt.*;
import java.awt.event.*;
import java.applet.*;
import java.net.*;
import java.io.*;
public class AppletServerCom extends Applet {
  private boolean isStandalone = false;
  //Get a parameter value
  public String getParameter(String key, String def) {
    return isStandalone ? System.getProperty(key, def) :
      (getParameter(key) != null ? getParameter(key) : def);
  }  //Construct the applet
  public AppletServerCom() {
  }
  //Initialize the applet
  public void init() {
    try {
      jbInit();
    }
    catch(Exception e) {
      e.printStackTrace();
    }
  }
  public String getIP()
  {
    String results = null;
    try{
      URL server = new URL(getDocumentBase(),"/myip");
      URLConnection con = server.openConnection();
      con.setDoInput(true);
      con.setDoOutput(true);
      con.setUseCaches(false);
      con.connect();
      ObjectInputStream in = new ObjectInputStream(con.getInputStream());
      results = (String)in.readObject();
    }catch(Exception e){
      e.printStackTrace();
    }
    return results;
  }
  //Component initialization
  private void jbInit() throws Exception {
  }
  //Get Applet information
  public String getAppletInfo() {
    return "Applet Information";
  }
  //Get parameter info
  public String[][] getParameterInfo() {
    return null;
  }
}
servlet程序如下:
package servlet_test;import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;public class MyIP extends HttpServlet {
  private static final String CONTENT_TYPE = "text/html; charset=GBK";
  //Initialize global variables
  public void init() throws ServletException {
  }
  //Process the HTTP Get request
  public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    ObjectOutputStream out=new ObjectOutputStream(response.getOutputStream());
    out.writeObject((Object)request.getRemoteAddr());
    out.flush();
    out.close();
  }
  //Process the HTTP Post request
  public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    doGet(request, response);
  }
  //Clean up resources
  public void destroy() {
  }
}
测试结果的html:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GBK">
<script language = "JavaScript">
function getIP()
{
  var ip = applet.getIP();
  document.form1.ip.value = ip;
}
</script>
<title>
applet-servlet communication
</title>
</head>
<body>
<form name="form1">
<applet
  codebase = "."
  code     = "servlet_test.AppletServerCom.class"
  name     = "applet"
  width    = "0"
  height   = "0"
  hspace   = "0"
  vspace   = "0"
  align    = "middle"
>
</applet>
MY IP<br>
<input type=text name=ip value="" size=20>
<input type=button value="getIP" onClick="getIP();">
</form>
</body>
</html>问题:没有得到IP,即applet与servlet并没有通讯成功!渴望回复,谢谢!

解决方案 »

  1.   

    try{
          URL server = new URL(getDocumentBase(),"/myip");
          URLConnection con = server.openConnection();
          con.setDoInput(true);
          con.setDoOutput(true);
          con.setUseCaches(false);
          con.setRequestPorperty("Content-type","application/octec-stream");
          
          ObjectInputStream in = new ObjectInputStream(con.getInputStream());
          results = (String)in.readObject();
          in.close();
        }catch(Exception e){
          e.printStackTrace();
        }
      

  2.   

    //Process the HTTP Get request
      public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
         设置编码
         response.write(request.getRemoteAddr());
      }
      

  3.   

    URL server = new URL(getDocumentBase(),"/MyIP");
    /MyIP访问的url方式写正确了吗?