问:Applet向Servlet POST方法时候,各项因该怎样写? 用&进行连接, 比如:String params = "name=" + URLEncoder.encode ("dureek") + "&passwd=" + URLEncoder.encode("dunno"); 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我在改写:out.println(URLEncoder.encode("MySQL1")+"="+URLEncoder.encode(sql[0])); out.println(URLEncoder.encode("&MySQL2")+"="+URLEncoder.encode(sql[1]));怎还不行? Hi :)我说的一次提交的意思是 out.println(params) ...可能是我误解你的意思了, 你是想post多次还是想post多个参数? 我前面所说的是post多个参数:p 我想post多个参数,该如何解决? 有个很啰唆的办法: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) + "]"); }} @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(); 呵呵 ... 我真是老眼昏花乐 ... 这样对counter(同一个Key)赋值多次,形成数组值可以吗??另外,用out.print而不用out.print一样吗?for(i=0;i<sql.length;i++){ out.print(URLEncoder.encode("MySQL"+"="+URLEncoder.encode(sql[i]));}///也不能成功。 我想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]));又和区别????? 先说一点概念: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 不知道说明白没有 ... 不过通过你的提问, 我又学到了一些知识, 谢谢 :) 会JAVA的来看一下!配置问题 通过el表达式和jstl在一个文件框里如何显示当前时间? 请问下jsp页面乱码问题 今天不知高兴还是郁闷!!大家来发表一下意见吧!顶者有分啦 帮帮忙 ,我弄了很久了,谢谢!!! 求教:如何让页面按钮"后退"或者"前进"变灰,即无效???? 弱弱再问jsp问题~没有分了对不起各位大虾 欢迎下载软件工程环境(SEE)的源码和文档。GPL免费项目.servlet + xml 小函数问题!!!!!!!!!!! weblogic5的javabean放在什么目录下? 在过程中如何编写输出HTML语句的代码? 将查询的数据库结果分页!
out.println(URLEncoder.encode("MySQL1")+"="+URLEncoder.encode(sql[0]));
out.println(URLEncoder.encode("&MySQL2")+"="+URLEncoder.encode(sql[1]));怎还不行?
我说的一次提交的意思是 out.println(params) ...
可能是我误解你的意思了, 你是想post多次还是想post多个参数? 我前面所说的是post多个参数: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) + "]");
}
}
如果确实是要post多个参数的话, 可以
String params = URLEncoder.encode("MySQL1") + "=" + URLEncoder.encode(sql[0])) + "&" + URLEncoder.encode("MySQL2") + "=" + URLEncoder.encode(sql[1]));
out.println(params);
out.flush();
out.close(); 呵呵 ... 我真是老眼昏花乐 ...
另外,用out.print而不用out.print一样吗?for(i=0;i<sql.length;i++)
{
out.print(URLEncoder.encode("MySQL"+"="+URLEncoder.encode(sql[i]));
}///也不能成功。
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]));
又和区别?????
如果以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 不知道说明白没有 ... 不过通过你的提问, 我又学到了一些知识, 谢谢 :)