【发布时间】:2013-11-21 19:18:48
【问题描述】:
我是使用 servlet 和 ajax 编程的新手。我有用于跟踪图像上的鼠标操作的客户端代码。我需要在拖动过程中将坐标发送到 servlet 进行处理。我为此使用ajax。我的代码可以工作,但在处理 servlet 中的请求时似乎存在滞后。特别是拖动。
客户端代码:
$(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"));
}
}
我最大的问题是在拖动时,因为我必须发送每个坐标,当我查看我的输出时,即使在我停止拖动操作后,它仍会继续打印出我正在拖动。这种滞后会持续一段时间。有什么建议吗?
【问题讨论】:
标签: servlets