js定时发送数据,java定时存储

yuanlaiwoyouai2 2012-12-25 07:05:23
我先说一下要求,当有用户给平台发送短信时,我这边不断接受短信,并且将接收到短信入库。
js中代码 这是一个接收短信代码,我的想法是每隔一秒的时间提交一次数据,提交完数据后就清空数据。
<script language="javascript" type="text/javascript">
function showTime(){
createXMLHttpRequest();
xmlHttp.open("POST","./test",true);
xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded;");
/** oHttp.send("FromNumber="+FromNumber+"&Time="+Time+"&ToNumber="+ToNumber+"&Text="+Text); */
// var Time = 2012/10/21 18:51:46;
xmlHttp.send("FromNumber="+1+"&Time="+2+"&ToNumber="+3+"&Text="+4);
var FromNumber = null;
var Time = null;
var ToNumber = null;
var Text = null;
setTimeout("showTime()",1000);//每隔一秒会提交一次数据
}
var xmlHttp;
function createXMLHttpRequest(){ //1建立XmlHttpRequest对象
if(window.ActiveXObject){
try{
xmlHttp = new ActiveXObject("Microsoft.XMLHttp");
}catch(e){
alert("Error!!!");
}
}else{
xmlHttp = new XMLHttpRequest();
}
}

其中这四个参数FromNumber,Time,ToNumber,Text我先写的死值,做测试的。

Servlt中代码
public void doPost(HttpServletRequest req,
HttpServletResponse resp) throws ServletException,
IOException {
req.setCharacterEncoding("utf-8");
resp.setContentType("text/html;charset=UTF-8");
FromNumber=(String)req.getParameter("FromNumber");
Time=(String)req.getParameter("Time");
ToNumber=(String)req.getParameter("ToNumber");
Text=(String)req.getParameter("Text");
timer.schedule(new TestTask(),1000,1000); //每隔一秒的时间时间执行一次
}
这个里面就不断获取js里面提交过来的数据。定时器里面就不断存储数据

定时器中的代码

public void run() {
while (true) {
try {
String FromNumber = MyServlet.FromNumber;

String Time = "2012-10-21 18:51:46";

String Text = MyServlet.Text;

if(!FromNumber.equals(null)&!Time.equals(null)&!Text.equals(null))
{
String sql = "insert into EMS_RMS values(1,2,3,4,5,6,7,8,9,'2012-10-21 18:51:46')";
ps = conn.prepareStatement(sql);

ps.executeUpdate(sql);

FromNumber = null;

Time = null;

Text = null;

ps.close();

conn.close();

}

}catch (Exception e) {
e.printStackTrace();

}
}
}
}
定时器中FromNumber、text这几个值是都可以获得到的,插入语句下写了几个死值,做测试的,我整体的想法是前台页面每隔一秒提交数据,然后清空数据,避免重复将数据存储到数据库,后台页面每隔一秒将数据存储进数据库。但最后的结果是java定时器中反复存储那一条数据,可我的js中把数据清空了啊,java定时器中获得的参数应该为空,不会执行存储才对啊,哪里出了问题啊。




...全文
412 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
似梦飞花 2012-12-25
  • 打赏
  • 举报
回复
当你提交数据时自然后触发后台的程序 不用为后台定计时器吧 貌似?
yuanlaiwoyouai2 2012-12-25
  • 打赏
  • 举报
回复
恩。你说的有道理。还问你个问题啊。当用户给指定的号码发送短信时,会自动触发下面js中的XLT_OnSMSReceived事件<script language="javascript" for="ocx" event="XLT_OnSMSReceived(FromNumber,Time,ToNumber,Text)" type="text/javascript">,我想请问在触发该事件,同时把数据提交到servlet中,也就是触发XLT_OnSMSReceived时,同时也执行下面的代码。 function showTime(){ createXMLHttpRequest(); xmlHttp.open("POST","./test",true); xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded;"); /** oHttp.send("FromNumber="+FromNumber+"&Time="+Time+"&ToNumber="+ToNumber+"&Text="+Text); */ // var Time = 2012/10/21 18:51:46; xmlHttp.send("FromNumber="+1+"&Time="+2+"&ToNumber="+3+"&Text="+4); var FromNumber = null; var Time = null; var ToNumber = null; var Text = null; setTimeout("showTime()",1000);//每隔一秒会提交一次数据 } var xmlHttp; function createXMLHttpRequest(){ //1建立XmlHttpRequest对象 if(window.ActiveXObject){ try{ xmlHttp = new ActiveXObject("Microsoft.XMLHttp"); }catch(e){ alert("Error!!!"); } }else{ xmlHttp = new XMLHttpRequest(); } }

87,991

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧