当前位置:  技术问答>java相关

applet与servlet的通信,我想将APPLET中的参数传给SERVLET,总是通不过,详情请进

    来源: 互联网  发布时间:2015-02-25

    本文导语:  applet源码 import..... ... public void executeQuery(){     String qryTitle = "parameter1";     String title = "Servlet/ReceiveServlet?title=" + URLEncoder.encode(qryTitle);          try {          //ucSend和sendURL已在前边定义      ...

applet源码
import.....
...

public void executeQuery(){
    String qryTitle = "parameter1";
    String title = "Servlet/ReceiveServlet?title=" + URLEncoder.encode(qryTitle);

         try {
         //ucSend和sendURL已在前边定义
         ucSend = (new URL(sendURL,qryTitle)).openConnection();
         showStatus("正在连接服务器");
         ucSend.setDefaultUseCaches(false);
         ucSend.setUseCaches(false);
         ucSend.setDoInput(true);
         ucSend.setDoOutput(false);
         ucSend.connect();
         showStatus("打开流");
         DataInputStream in = new DataInputStream(ucSend.getInputStream());
         showStatus("读数据");
         title=in.readLine();

         }catch(IOException e2) {
          System.err.println("IOException!");
          e2.printStackTrace(System.err);
          showStatus("IO错误");
       }

    }


我的SERVLET源码如下:
import...

public class ReceiveServlet extends HttpServlet {

  public void service(ServletRequest req,ServletResponse res)
              throws ServletException,IOException
         {
              res.setContentType("text/html");
              ServletOutputStream out=res.getOutputStream();
              out.print("1 is the title:");
              out.println(req.getParameter("title"));
             // out.print("2 is the area:");
             // out.println(req.getParameter("area"));
             // out.print("3 is the index:");
             // out.println(req.getParameter("index"));
             // out.print("4 is the atime:");
             // out.print(req.getParameter("atime"));

         }
         public String getServletInfo()
         {
         return "aaaaaa";
         }
         }

总是报io错码,在ucSend.connect()时,望高手指点。

|
Talk to a CGI/Servlet
From the client point of view, there is no difference talking to CGI or Servlet. There is two ways to send a request to a CGI. The GET method contains encoded parameters in the URL. A typical URL talking to CGI using the GET method would be: new URL("http://www.server.com/cgi-bin/aCGI.pl?name=Real&site=JAVA+HowTo");
 


Here we calling a script called aCGI.pl (a PERL script) passing the parameters name and site. Parameters are encoded, spaces are changed to "+" and special character to hexadecimal using a 3-letter escape sequence. Each parameter is delimited by the character "&". Habitually the encoding is done through the static method encode of the java.net.URLencoder class. String theCGI = "http://www.server.com/cgi-bin/aCGI.pl?";
String encoded = "name=" + URLencoder.encode("Real Gagnon");
URL CGIurl = new URL(theCGI + encoded);
 


Once the URL is constructed, you call the CGI using the showDocument method. getAppletContext().showDocument(CGIurl);
 


The CGI will process the result and produce a page to be displayed. 
The POST method allows the programmer to manipulate the data received from the CGI. First a connection is made to the CGI, an OutputStream is open to send the parameters (if any). Then InputStream is created to receive the result. String theCGI = "http://www.server.com/cgi-bin/aCGI.pl";
String encoded = "name=" + URLencoder.encode("Real Gagnon");
URL CGIurl = new URL(theCGI);

URLConnection c = CGIurl.openConnection();
c.setDoOutput(true);
c.setUseCaches(false);
c.setRequestProperty("content-type","application/x-www-form-urlencoded");
DataOutputStream out = new DataOutputStream(c.getOutputStream());
out.writeBytes(encoded);
out.flush(); out.close();

BufferedReader in =
   new BufferedReader(new InputStreamReader(c.getInputStream());

String aLine;
while ((aLine = in.readLine()) != null) {
   // data from the CGI
   System.out.println(aLine);
   }
 



You can't do some output then some input and do again some output. You must do all the output and then the input. There is no "dialog" between the client and the server. The client make a request and the server send back the result and close the connection. 

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 如何让IE认识applet所带的数字签名,而不是让证书仓库认识这个带数字签名的applet,就是说不装jdk也可以在IE里面使用带有签名的applet,详情请进
  • 最近被applet和servlet的通讯所困,希望哪位高人能给个简单明了的例子,详情见内.
  • java命名空间java.applet类applet的类成员方法: applet定义及介绍
  • 如何让Applet里的控件随着Applet大小改变而一直占满整个Applet呢?
  • java命名空间java.applet类applet.accessibleapplet的类成员方法: applet.accessibleapplet定义及介绍
  • 对applet坐数字签名后,如果重新用jar对applet打包,需要重新做applet数字签名吗?
  • java命名空间java.applet类applet的类成员方法: getappletcontext定义及介绍
  • 为什么我的applet编译完,之后除了applet1.class之外,还有一个applet$1.class?
  • java命名空间java.applet类applet的类成员方法: getappletinfo定义及介绍
  • 急,我想问一下调用一个对话框的命令语句,比方说我已建立了一个Applet2,接下来该如何在Applet1中点击一个按钮来打开这个Applet2.谢谢
  • java命名空间java.applet类applet的类成员方法: isactive定义及介绍
  • 请问application (or applet)如何实现对applet 小程序的调用??
  • java命名空间java.applet类applet的类成员方法: stop定义及介绍
  • 请问能在浏览器调入APPLET后,在APPLET内部改变其自身的大小嘛?
  • java.applet类applet的类成员方法: getcodebase定义及介绍
  • applet 如何启动新的 applet
  • java命名空间java.applet类applet的类成员方法: init定义及介绍
  • 如何把applet窗口里的Java Applet Window去掉?
  • java命名空间java.applet类applet的类成员方法: destroy定义及介绍
  • Applet对本地资源是不能访问的,那如果我要用Applet做打印设计,那如何是好呢??
  • java命名空间java.applet类applet的类成员方法: getparameterinfo定义及介绍
  • Applet问题,applet在tomcat+apache环境下是否支持FileDialog类,急,急 !!!!快来抢分呀!!!!
  • java命名空间java.applet类applet的类成员方法: getdocumentbase定义及介绍
  • Applet中的ArrayList怎么传到javascript中,反之,js中的数组如何传入APPLET中?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3