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并没有通讯成功!渴望回复,谢谢!
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并没有通讯成功!渴望回复,谢谢!
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();
}
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
设置编码
response.write(request.getRemoteAddr());
}
/MyIP访问的url方式写正确了吗?