xmlhttp对象可以用来在不刷新页面的情况下传递参数,可作为一种javascript向jsp传递参数的一种方法。
下面就是一个javascript向jsp传递参数的例子:
xmlhttp.jsp
<%@ page contentType="text/html; charset=GB2312" language="java" import="java.util.*" import="java.sql.*" %>
<html>
<head><title>n</title>
<script language="javascript">
function func()
{
xml = new ActiveXObject("Microsoft.XMLHTTP");
var post="<input type='text' name='name' value='1value'/>";//构造要携带的数据
xml.open("POST","xmlhttp.jsp",false);//使用POST方法打开一个到服务器的连接,以异步方式通信
xml.setrequestheader("content-length",post.length);
xml.setrequestheader("content-type","application/x-www-form-urlencoded");
xml.send(post);//发送数据
//返回结果
var v = xml.responseText;
//处理这个结果
document.write( '结果:' + v );
}
</script>
</head>
<body onLoad="func()">
<%
out.println("abcd");
java.io.BufferedReader br = request.getReader();
String str = "";
String srt=br.readLine();
while(srt!=null)
{
str += srt+"\n";
srt=br.readLine();
}
out.println(str);
%>
</body>
</html>
通过上面这种手段就可以把参数"<input type='text' name='name' value='1value'/>"这个字符串传递给本页面,在页面上显示一个文本框,当然你还可以传递一个xml文件,这样你就需要在服务器端的代码中解析这个xml文件,从中取得你所需要的参数
你可以给任何页面传递参数,只需要改变xml.open("POST","xmlhttp.jsp",false);中的xmlhttp.jsp为你目标页面得url就可以了
需要注意的是在低版的tomcat中会报出Read time out的错误,这是tomcat的原因,换一个高版本的就可以解决问题