我是靠谱客的博主 鲤鱼砖头,这篇文章主要介绍迅雷插件使得火狐浏览器带参数连接执行了两遍Action,现在分享给大家,希望可以做个参考。

今天用ssh框架写一个删除数据库数据的代码,Action定义如下:

复制代码
1
2
3
4
5
6
7
8
@Action(value="/admin/deleteExam", results={@Result(name=SUCCESS, type="redirectAction", location="examChooseCourse")}) public String DeleteExam(){ course=courseDAO.findById(course.getPid()); exam=(Test)course.getTests().toArray()[0]; sessionFactory.getCurrentSession().clear(); testDAO.delete(exam); return SUCCESS; }

写好之后用Chrome浏览器测试的时候一切正常,但是用火狐浏览器却出现了一个数据越界的异常。
调试了一下发现,是exam获取的时候值是空的,但是这种情况是不应该存在的,因为之前有其他的语句控制,删除时exam一定是存在的。后来再用火狐调试发现这个Action居然有两个线程在跑!而在Chrome下是正常的,只有一个线程。
解决方案是增加了一个try-catch语句。

复制代码
1
2
3
4
5
try{ exam=(Test)course.getTests().toArray()[0]; sessionFactory.getCurrentSession().clear(); testDAO.delete(exam); }catch(Exception e){logger.info(e.getMessage());}

这样就不怕跑两次。但是感觉很不放心,以为是程序本身的问题。后来在论坛看到了论坛上也有类似问题,其中tang195的回答非常明确

找到问题了。是有一个火狐附加组件,Thunder Extension ,一看就是迅雷的破玩意。
我把附加组件全部禁用,就没问题了。然后一个一个开启,直到开启 Thunder Extension ,问题重现
然后把这个禁用,问题就没有了。看来问题就出在这个附加组件上。

试了一下以后发现的确实如此,迅雷插件真是个坑。看来为了防止类似情况在以后编码时不健壮的环节还是要着重处理一下的~

最后

以上就是鲤鱼砖头最近收集整理的关于迅雷插件使得火狐浏览器带参数连接执行了两遍Action的全部内容,更多相关迅雷插件使得火狐浏览器带参数连接执行了两遍Action内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(97)

评论列表共有 0 条评论

立即
投稿
返回
顶部