我先说一下要求,当有用户给平台发送短信时,我这边不断接受短信,并且将接收到短信入库。
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定时器中获得的参数应该为空,不会执行存储才对啊,哪里出了问题啊。
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定时器中获得的参数应该为空,不会执行存储才对啊,哪里出了问题啊。
解决方案 »
- 新人求助一个正则表达式的问题
- Ajax异步获取的问题!
- 用js来选择radiogroup中的一个按钮
- <script src='***'></script>问题
- 为什么setInterval只执行一次?
- js对象操作
- 怎么把十六进制的颜色值转换为十进制的值,如0000ff转换为256,ff0000转换为16711680
- 请问谁有关于even对象的教程(顶者有分)?
- javaScript中有没有split这样的函数??谢了!(以后二十陪还分)
- 网页效果,急!!!求求各位,进来看看吧!!
- !求助!jsp页面动态改变所播放视频的连接,同时菜单栏样式改变的问题!
- 函数作用域问题。不太理解。求解释,谢谢各位
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();
}
}