java的ajax请求
‘壹’ java怎么处理ajax
ajax是一种用来改善用户体验的技术,其实质是利用浏览器内置的一个特殊的对象
(XMLHttpRequest对象,一般称之为ajax对象)异步地(当ajax对象发请求时,浏览
器不会销毁当前页面,用户任然可以对当前页面做其他操作)向服务器发送请求,
服务器送回部分数据(并不是一个完整的页面),利用这些数据更新当前页面。整
个过程,页面无刷新,不打断用户的操作
编程步骤:
step1,获得ajax对象
比如:
var xhr=getXhr();
step2,发请求:
方式一:get请求
xhr.open('get','check_username.do?username=zs',true);
请求参数、请求资源路径、是否异步
注意:
a,get请求必须将请求参数添加到请求资源路径的后面。
b,true表示异步请求、false表示同步请求。
异步请求:发请求时,浏览器不会销毁当前页面,用户可以对当前页面做
其他操作。
同步请求:发送请求时,浏览器不会销毁当前页面,用户不可以对当前页面
做其他操作。
xhr.onreadystatechange=f1;
xhr.send(null);
方式二:post请求
xhr.open('post','','')
step3,编写服务器端的处理程序,一般服务器只需要返回部分的数据。
step4,编写事件处理函数。
function f1(){
if(xhr.readyState==4){
var txt=xhr.responseText;
使用txt更新当前页面...
}
}
java服务器端处理ajax发送的请求,和处理其他请求是一样的,只是在客户端页面表现的不同,比如:执行页面发送删除请求,服务器端在执行删除后,页面是需要刷新的。
ajax最经典的用法是验证码,注册页面如果因为验证码输入错误要刷新,之前的信息重填,估计用户会崩溃,采用ajax异步发送请求,就不会影响之前填写的信息
‘贰’ 关于java的Ajax请求到服务器处理完毕不响应json数据到浏览器的问题。
建议把上传后的数据异步处理,不要同步处理,同时返回给前台一个异步任务id,后续通过任务id查询,数据处理情况
‘叁’ 如何用java模拟ajax数据发送请求
importorg.apache.commons.httpclient.*;
importorg.apache.commons.httpclient.methods.*;
importorg.apache.commons.httpclient.params.HttpMethodParams;
importjava.io.*;
publicclassHttpClientTutorial{
PRivatestaticStringurl="http://10.129.39.149:8090/Ajax/loginMgt/login.action";
publicstaticvoidmethod(HttpClientclient,Stringurl,Stringbody){
PostMethodmethod=newPostMethod(url);
//"count":10,"ignoreCase":"false","paras":["a%"],"queryId":"getMenu"
NameValuePair[]postData=newNameValuePair[]{};
//postData[0]=newNameValuePair("count",10);
method.setRequestBody(body);//addParameters(postData);
//
/*method.getParams().setParameter(HttpMethodParams.RETRY_HANDLER,
(3,false));*/
try{
//Executethemethod.
intstatusCode=client.executeMethod(method);
if(statusCode!=HttpStatus.SC_OK){
System.err.println("Methodfailed:"+method.getStatusLine());
}
//Readtheresponsebody.
byte[]responseBody=method.getResponseBody();
//Dealwiththeresponse.
//Usecaution:
System.out.println(newString(responseBody,"utf-8"));
}catch(HttpExceptione){
System.err.println("Fatalprotocolviolation:"+e.getMessage());
e.printStackTrace();
}catch(IOExceptione){
System.err.println("Fataltransporterror:"+e.getMessage());
e.printStackTrace();
}finally{
//Releasetheconnection.
method.releaseConnection();
}
}
publicstaticvoidmain(String[]args){
//CreateaninstanceofHttpClient.
HttpClientclient=newHttpClient();
Stringbody="[{"userId":1,"passWord":1}]";
//Createamethodinstance.
method(client,url,body);
url="http://10.129.39.149:8090/ajax/getInitValueArr.action";
body="[{"count":10,"ignoreCase":"false","paras":["a%"],"queryId":"getMenu"}]";
method(client,url,body);
}
}
‘肆’ 如何在Java项目中使用Ajax
上面都太麻烦了只要写一个函数就可以
<body>
<SCRIPT LANGUAGE="JavaScript">
function check(){
var stuId = document.regForm.stuId.value;
var xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
xmlHttp.open("GET", "check.do?stuId="+stuId, true);
xmlHttp.onreadystatechange=function() {
if (xmlHttp.readyState==4) {
checkResult.innerHTML = xmlHttp.responseText;
}
else{
checkResult.innerHTML = "正在检测...";
}
}
xmlHttp.send();
}
</SCRIPT>
<form name="regForm">
请您输入学生学号:<input type="text" name="stuId" onblur="check()">
<div id="checkResult"></div><BR>
请您输入学生姓名:<input type="text" name="stuName"><BR>
<input type="button" value="提交按钮">
</form>
当stuId输入框失去焦点时执行javascript函数check()通过xmlHttp.open("GET", "check.do?stuId="+stuId, true);以get方式发送给check.do的servlet在servlet里用request获取传过去的stuId参数接下去就和一般的一样连数据库根据id,返回的结果checkResult.innerHTML = xmlHttp.responseText;会显示在div上,很简单
‘伍’ java jsp如何调用ajax发送请求到servlet
servlet里写一个 outwriter写一个字符串就好了,是html格式后者是json
‘陆’ java怎么接收ajax的请求
你用servlet的话 覆写servlet的 get 方法 ,因为你ajax用的是get
然后你的t=......是你传来的参数
用request.getParameter("t")来获取
剩下的返回用response.write 就行了,
看你前台要什么类型的,如果要json你就后台转好json发给他