0
我是使用servlet和ajax進行編程的新手。我使用客戶端代碼來跟蹤圖像上的鼠標操作。我需要在拖動過程中將座標發送到servlet進行處理。我爲此使用ajax。我的代碼工作正常,但在處理servlet中的請求時似乎存在滯後。具體拖動。對Servlet的快速ajax請求導致性能問題
客戶端代碼:
$(document).ready(function(){
// detect mousedown
$("#imgslot").mousedown(function(event){
var leftClick = false; // if user clicked the left mouse button
var rightClick = false; // if user clicked the right mouse button
var interaction={type:"",action:"",lClick:"",rClick:"",x:"null",y:""};
//if the client left clicks
if(event.which===1){
leftClick=true;
}
//if the client left clicks
if(event.which===3){
rightClick=true;
}
interaction={type:"interaction",action:"mousedown",lClick:leftClick,rClick:rightClick,x:event.clientX,y:event.clientY};
sendAjax(interaction);
// detect dragging
$(this).on('mousemove',function(event){
interaction={type:"interaction",action:"drag",lClick:leftClick,rClick:rightClick,x:event.clientX,y:event.clientY};
sendAjax(interaction);
// detect mouseup
}).mouseup(function(event){
interaction={type:"interaction",action:"mouseup",lClick:leftClick,rclick:rightClick,x:event.clientX,y:event.clientY};
sendAjax(interaction);
rightClick = false;
leftClick = false;
$(this).off('mousemove');
$(this).off('mouseup');
});
});
});
function sendAjax(message)
{
$.ajax({
url: "myServlet",
type: "POST",
data: message,
success: function (data) {
}
});
}
在Servlet的:簡單的打印請求來測試性能
if (request.getParameter("type") != null) {
System.out.println(request.getParameter("action"));
if (request.getParameter("type").equals("interaction")) {
sendMouseActions(request.getParameter("action"), request.getParameter("lClick"), request.getParameter("rClick"), request.getParameter("x"), request.getParameter("y"));
}
}
我最大的問題是,在一拖,因爲我有發送每個座標,當我查看我的輸出時,即使在停止拖動操作後,它仍繼續打印出我正在拖動的內容。這種滯後持續了一段時間。有什麼建議?
謝謝你的迴應。根據需求,我需要使用客戶端腳本來跟蹤鼠標移動,然後將其全部發送到servlet。例如,我不能只發送拖動的開始和結束座標。我必須將所有內容都發送到。也許阿賈克斯不是我應該看的解決方案? – user3018497
您可以將所有點以javascript的形式保存併發送到最後。你在製作繪圖應用程序嗎?即使不是,看最後發送圖像到服務器的一些HTML5繪圖應用程序可能會有所幫助。 – developerwjk