急急急!!!急急急!!!急急急!!!有谁知道这个功能怎么实现,帮忙解答出来的 200 分全送了!!一个jsp页面上有2个按钮 一个实行 一个中止 点实行按钮用ajax提交到后台 对数据库中指定表做csv文件出力操作(操作速度非常快,最慢不超过3秒钟),操作完成返回提示信息;点中止按钮停止后台的程序运行,返回一个提示信息, 用java怎么实现,只剩 200 分了,知道的 200 分全送!!!!谢谢!!!!
解决方案 »
- JSP动态更新问题
- 一段JS代码看不懂
- jsp中ondblclick事件触发2个函数问题
- 有没有csdn论坛源代码(JSP+mysql)下载哟
- 超简单的循环问题
- 高手帮帮我吧,tomcat配置问题
- 建一表格,每行都套一个iframe,它的src指向一报表,显示的时候各报表的距离不一样,怎样解决,在线等待
- Microsoft Office 中的Chart组件用在JSP中的问题?
- 各位好心人,帮我这个菜鸟看看这个问题(<jsp:plugin>用法问题)
- 急~ 一个jsp传值问题 在线等~
- 刚看hibernate的书!不知道怎么在JCreator 中运行它的程序!也不知道怎么配制它!哪位大牛来帮帮我撒!先谢谢拉!
- 求高人指点[找了好几天也没找到原因]
定表做csv文件
你怎么处理,都得一个数据一个数据的弄,至少是一行一行的
类设置一个
boolean forceStop = false;
的属性,
在每个数据处理的循环里,都判断是否要强行停止,如果是,则终止未完成的工作。
第二个stop按钮要调用程序,设置这个forceStop属性提示,处理的类,也就是包含forceStop的类放在session里面,这样stop操作可以最快的找到正在运行的类,并设置forceStop属性start.jsp
MyReport o = new MyReport();
session.setAttribute("REPORT",o);
o.do();stop.jsp
MyReport o = (MyReport)session.getAttribute("REPORT");
if(o!=null){
o.setForceStop(true);
}
虽然有点流氓做法,但也许真的有用,因为你的处理速度太快了(3秒),我想那个想后悔的人还没来的及按下STOP按钮就已经完成了大致做法如下
int times = 5;
while(times>0){
if(forceStop){
// 强行终止的代码
}
try{
Thread.sleep(1000); // 等待1秒钟。 这个你可以自己根据实际情况修改。
}catch(Exception ex){}
times--;
}
应用那面,我认为需要强制休眠sleep还是需要的,否则绝大多数情况下不会有停止的了。因为人的反应达不到那么快!
延迟至少得比人的反应速度长才行吧!!!
设一静态BOOLEAN变量,然后STOP事件改变值,实行事件时间判断.如果业务表中数据量不大就每一条读出然后判断;如果业务量大的话就分次读出再判断.三秒只要数据量不是太大应该没有问题(尽量控制访问DB次数).
你这个问题的关键在于,怎样让STOP按钮的浏览器事件,尽快地通知正在运行的某个操作按照你的说法,你最好在0.0001秒完成任务才好。那stop还有意义吗?到底是处理速度重要,还是Stop重要,我想你要中间平衡一下。平衡点就是既不让客户感到处理慢,同时又给客户反悔的机会。这个点怎么调我已经给你代码了,怎么设置就看你具体的应用了。1秒怎样?2秒呢?3秒呢? 总有一个平衡点吧!!!
1.csv文件出力操作在三秒以内,对吧?
2.STOP是要能终止执行,不想要csv文件出力,对吧?
如果只有上面那两条那么你就在CSV出力之前加上一个判断就行了,完全没有必要做到线程控制.
关键在这里
定表做csv文件
你怎么处理,都得一个数据一个数据的弄,至少是一行一行的
类设置一个
boolean forceStop = false;
的属性,
在每个数据处理的循环里,都判断是否要强行停止,如果是,则终止未完成的工作。
第二个stop按钮要调用程序,设置这个forceStop属性 提示,处理的类,也就是包含forceStop的类放在session里面,这样stop操作可以最快的找到正在运行的类,并设置forceStop属性 start.jsp Java codeMyReport o = new MyReport();
session.setAttribute("REPORT",o);
o.do();stop.jsp Java codeMyReport o = (MyReport)session.getAttribute("REPORT");
if(o!=null){
o.setForceStop(true);
}
你能发个全点的好用的源代码么?
我不知道你是怎么发送请求的,在点实行按钮的时候的请求中并没有你的那个session 所以在你点实行按钮执行的代码中无法取到点中止按钮时候建立的session
1 手工输入地址
2 点击连接
3 提交标单
4 Ajax模拟的连接和提交这些都会把cookie里面的jsessionid 传到服务器。服务器根据这个id 来区分你的状态这就是session
点击“stop”就把这个请求从队列里面删除,如果队列里面没有那就是已经执行完或者当时正在执行
zk1125你看这样如何?