servlet 怎么从applet获得数据 。求救 servlet 怎么从applet获得数据 。求救我想将一些applet处理的数据在一个servlet中获得,怎么做啊?哪位好心人知道,帮帮我啊 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 把Applet处理的结果通过Javascript设定到页面上的Hidden字段里头,然后Servlet中取得这些Hidden的值即可。原因是Applet和Javascript是客户端执行的,Servlet是服务器端执行的。譬如,Applet中如下:----------------Applet----------------public void setResult(){String params[] = new String{};netscape.javascript.JSObject.getWindow( this ).call( "foo" , params ) ;}----------------JSP------------------<Script language="javascript">function foo(val){document.myForm.txtName.value=val;}</script><INPUT TYPE="HIDDEN" name="txtName" value="">----------------------------SERVLET---------------doPost(xx){request.getParameter("textName");..} 用URL编码的方法也可以传(eg. xx.do?a=sd&b=bs),只是需要在doget()里面取 applet可以和浏览器中的javascript脚本交互。applet处理后的数据交给外部的脚本来处理好了。比如交给form,然后通知浏览者提交。数据少的话可以用get方式,不需要浏览者分心。applet自己开启网络连接也是可以的啊,不过麻烦了点,同时注意安全原则,不要违规就可以。 把Applet处理的结果通过Javascript设定到页面上的Hidden字段里头,然后Servlet中取得这些Hidden的值即可。这种方法可以理解这个“用URL编码的方法也可以传(eg. xx.do?a=sd&b=bs),只是需要在doget()里面取”就不太明白了 我的代码是这样的:/** *applet source * */ import java.net.*;import java.io.*;import java.awt.*;import java.awt.event.*;import java.applet.*;public class TestApplet extends Applet {Button send = new Button();Button receive = new Button();TextArea textarea = new TextArea();BorderLayout borderLayout1 = new BorderLayout();public void init() {send.setLabel("send");send.addActionListener(new Send_Listener());receive.setLabel("receive");receive.addActionListener(new Receive_Listener());this.setLayout(borderLayout1);this.add(send, BorderLayout.NORTH);this.add(textarea, BorderLayout.CENTER);this.add(receive, BorderLayout.SOUTH);}void sendObject(){try{URL url = new URL(getCodeBase(), "/servlets/testservlet");URLConnection servletConnection = url.openConnection();servletConnection.setDoInput(true);servletConnection.setDoOutput(true);servletConnection.setUseCaches (false);servletConnection.setDefaultUseCaches (false);servletConnection.setRequestProperty ("Content-Type", "application/octet-stream");ObjectOutputStream outputToServlet = new ObjectOutputStream(servletConnection.getOutputStream());outputToServlet.writeObject("some string here");outputToServlet.flush();outputToServlet.close();textarea.append("aplet has send the object to the servlet\n");}catch(Exception e){textarea.append("EXCEPTION THROWN IN THE APPLET IN SENDOBJECT\n");}}} /** * *servlet source */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 { try { ObjectInputStream inputFromApplet = new ObjectInputStream(request.getInputStream()); String aString = (String) inputFromApplet.readObject(); request.getSession().setAttribute("ID", aString); inputFromApplet.close(); Syste.out.println("object received from applet:"+aString+"\n"); } catch(Exception e) { System.out.println("EXCEPTION IN DOPOST\n"); } } }servlet也在tomcat的web下配置了,服务器也启动了,并且调用applet的 sendObject()方法也没有什么异常,tomcat的控制台也没什么异常。好像就没任何反应,似乎没调用那servlet 的doPost()方法。为什么会这样啊? 应为我要将一个对象发送给servlet,所以必须这样才行啊。 既然是传送对象,简单的方法应该是用对象输出流和对象输入流。applet发出网络连接,连接到servlet,然后用ObjectOutputStream oos = new ObjectOutputStream(outputStream);输出对象;servlet 在输入流的基础上构造对象输入流,然后得到对象。//如果你要传送的对象支持序列化成文本,那么不妨先序列化成字符串,然后通过传统方法提交这个字符串,而在servlet中收到这个字符串后再生成这个对象的副本。 关于用Proxool连接池做的一个小功能报错~求大神指导 jsp tag问题 PageContext在jsp和EL表达式中的不同?? 有可配置单据的JAVA包吗 搞javaweb开发需要哪些知识? JSP页面如何大量取得客户端的数据。 如何从多个数据库查询,并在结果非常大的情况下快速呈现给用户? 一个十分简单的问题.新手求助? 我安装了JDk、tomcat怎样才能在jsp里访问SqlServer2000数据库? 如何判断外部JS加载完成 关于JAVA(JSP)读TXT文件 关于输出内容到txt文本的问题
----------------Applet----------------
public void setResult(){String params[] = new String{};
netscape.javascript.JSObject.getWindow( this ).call( "foo" , params ) ;
}----------------JSP------------------
<Script language="javascript">
function foo(val){
document.myForm.txtName.value=val;
}
</script><INPUT TYPE="HIDDEN" name="txtName" value="">----------------------------SERVLET---------------
doPost(xx){
request.getParameter("textName");
..
}
applet处理后的数据交给外部的脚本来处理好了。比如交给form,然后通知浏览者提交。数据少的话可以用get方式,不需要浏览者分心。applet自己开启网络连接也是可以的啊,不过麻烦了点,同时注意安全原则,不要违规就可以。
/**
*applet source
*
*/ import java.net.*;
import java.io.*;
import java.awt.*;
import java.awt.event.*;
import java.applet.*;public class TestApplet extends Applet {Button send = new Button();
Button receive = new Button();
TextArea textarea = new TextArea();
BorderLayout borderLayout1 = new BorderLayout();public void init() {
send.setLabel("send");
send.addActionListener(new Send_Listener());
receive.setLabel("receive");
receive.addActionListener(new Receive_Listener());
this.setLayout(borderLayout1);
this.add(send, BorderLayout.NORTH);
this.add(textarea, BorderLayout.CENTER);
this.add(receive, BorderLayout.SOUTH);
}void sendObject(){
try{
URL url = new URL(getCodeBase(), "/servlets/testservlet");
URLConnection servletConnection = url.openConnection();
servletConnection.setDoInput(true);
servletConnection.setDoOutput(true);
servletConnection.setUseCaches (false);
servletConnection.setDefaultUseCaches (false);
servletConnection.setRequestProperty ("Content-Type", "application/octet-stream");
ObjectOutputStream outputToServlet = new ObjectOutputStream(servletConnection.getOutputStream());
outputToServlet.writeObject("some string here");
outputToServlet.flush();
outputToServlet.close();
textarea.append("aplet has send the object to the servlet\n");
}catch(Exception e){
textarea.append("EXCEPTION THROWN IN THE APPLET IN SENDOBJECT\n");
}
}
}
/**
*
*servlet source
*/
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 {
try {
ObjectInputStream inputFromApplet = new ObjectInputStream(request.getInputStream());
String aString = (String) inputFromApplet.readObject();
request.getSession().setAttribute("ID", aString);
inputFromApplet.close();
Syste.out.println("object received from applet:"+aString+"\n");
}
catch(Exception e)
{
System.out.println("EXCEPTION IN DOPOST\n");
}
}
}servlet也在tomcat的web下配置了,服务器也启动了,并且调用applet的 sendObject()方法也没有什么异常,tomcat的控制台也没什么异常。好像就没任何反应,似乎没调用那servlet 的doPost()方法。为什么会这样啊?
applet发出网络连接,连接到servlet,然后用ObjectOutputStream oos = new ObjectOutputStream(outputStream);
输出对象;servlet 在输入流的基础上构造对象输入流,然后得到对象。
//
如果你要传送的对象支持序列化成文本,那么不妨先序列化成字符串,然后通过传统方法提交这个字符串,而在servlet中收到这个字符串后再生成这个对象的副本。