用&进行连接, 比如:String params = 
 "name=" + URLEncoder.encode ("dureek") + "&passwd=" + URLEncoder.encode("dunno");

解决方案 »

  1.   

    我在改写:
    out.println(URLEncoder.encode("MySQL1")+"="+URLEncoder.encode(sql[0]));
                    
    out.println(URLEncoder.encode("&MySQL2")+"="+URLEncoder.encode(sql[1]));怎还不行?
      

  2.   

    Hi :)
    我说的一次提交的意思是 out.println(params) ...
    可能是我误解你的意思了, 你是想post多次还是想post多个参数? 我前面所说的是post多个参数:p
      

  3.   

    我想post多个参数,该如何解决?
      

  4.   

    有个很啰唆的办法:p
    --
    import java.io.*;
    import java.net.*;public class Untitled1 {
        private URL url = null;    public Untitled1(String url) {
            try {
                this.url = new URL(url);
            }
            catch (Exception e) {
                e.printStackTrace();
            }
        }    public Untitled1(URL url) {
            this.url = url;
        }
        public void println(String content) {
            URLConnection urlConn = null;        PrintWriter out       = null;
            DataInputStream in    = null;        try {
                urlConn = url.openConnection();
                urlConn.setDoInput(true);
                urlConn.setDoOutput(true);
                urlConn.setUseCaches(false);            out = new PrintWriter(urlConn.getOutputStream());
                out.print(content);
                out.flush();
                out.close();            in  = new DataInputStream(urlConn.getInputStream());
                //如果要建立很多连接, 最好这里能控制一下:p
                in.close();
            }
            catch (Exception e) {
                e.printStackTrace();
            }
            finally {
                //释放资源 
            }
        }    public static void main(String[] args) {
            long startTime = 0, endTime = 0;        Untitled1 un = new Untitled1("http://localhost:8080/servlet/Servlet1");
            startTime = System.currentTimeMillis();        for (int i=0; i<50; i++) {
                //你用下面这个println吧 ...
                un.println("counter=" + Integer.toString(i));
            }        endTime = System.currentTimeMillis();        System.out.println("excute time: [" + (endTime - startTime) + "]");
        }
    }
      

  5.   

    @o@ ... 这才看清楚你是要post多个参数 ... faint ... 抱歉抱歉, 刚刚贴的是post多次:p
    如果确实是要post多个参数的话, 可以
    String params = URLEncoder.encode("MySQL1") + "=" + URLEncoder.encode(sql[0])) + "&" + URLEncoder.encode("MySQL2") + "=" + URLEncoder.encode(sql[1]));
    out.println(params);
    out.flush();
    out.close();            呵呵 ... 我真是老眼昏花乐 ...
      

  6.   

    这样对counter(同一个Key)赋值多次,形成数组值可以吗??
    另外,用out.print而不用out.print一样吗?for(i=0;i<sql.length;i++)
    {
        out.print(URLEncoder.encode("MySQL"+"="+URLEncoder.encode(sql[i]));
    }///也不能成功。
      

  7.   

    我想
    out.println(URLEncoder.encode("MySQL1")+"="+URLEncoder.encode(sql[0]));
                    
    out.println(URLEncoder.encode("&MySQL2")+"="+URLEncoder.encode(sql[1]));

    out.println(URLEncoder.encode("MySQL1")+"="+URLEncoder.encode(sql[0])+
    URLEncoder.encode("&MySQL2")+"="+URLEncoder.encode(sql[1]));
    又和区别?????
      

  8.   

    先说一点概念:p 当我们向一个URL做request的时候, 用的最多是GET和POST两种方式传输.(当然还有其它的, 详细资料请参照相关RFC) 顺便简单描述一下它们的区别: 
    如果以GET方式传输, 所带参数*附加*在CGI程式的URL后直接传给server, 并可从server端的QUERY_STRING这个环境变量中读取; 如果以POST方式传输, 则参数会被*打包*在数据报中传送给server, 并可从CONTENT_LENGTH这个环境变量中读取出来。
    *每一个连接(比如你用到的URLConnection)*, 不管是POST还是GET, 大概的dataflow都可以描述为client将数据提交给server, server分析处理该request, 然后*通常*(不排除一些变态cgi和server, 呵呵 ...)返回结果给client, 接着client(比如浏览器)最经常的动作就是读取结果.好了, 下面说你的所讲的第一种情况, 就是分两句执行的情况. 在第一句结束的时候就已经完成了POST的动作, 接下来是服务器接收到你POST上去的MYSQL数据并进行分析处理, 然后要将结果返回给你(此时你的第一句才算执行完毕, 这里OutputStream用的是阻塞方式), 可是这个时候你的程序非但不接受数据, 却还要再一次向server POST数据, 所以会引起报错:p 不知道说明白没有 ... 不过通过你的提问, 我又学到了一些知识, 谢谢 :)