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發給他