问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

Servlet返回响应和执行业务逻辑代码分开可行吗1

发布网友 发布时间:2023-11-08 01:21

我来回答

1个回答

热心网友 时间:2024-01-17 04:54

有一个程序A通过url调用Servlet,如果响应不成功(比如程序里访问url的时候产生网络问题、超时等等情况)就再调用一次。应用中出现这种情况:程序A实际第一次就调用成功了Servlet的url,但是由于Servlet内部程序执行时间太长,迟迟没有给程序A响应,造成程序A以为没有成功,又重复调用了一次url。结果是调用了两次,重复了。现在想去掉这种重复,有两个思路:思路1、程序A通过url调用Servlet时立刻返回正确响应,告诉程序A已经成功访问Servlet了,不需要再重复调用了。Servlet这边自己负责自己的代码是否执行成功,就是虽然告诉程序A调用成功了,但Servlet执行过程中还有可能出现问题,不过跟程序A已经没有关系了。我通过直接关闭response实现这个思路Servlet{ doGet(){ response.setHeader("Content-type", "text/html;charset=UTF-8"); response.setCharacterEncoding("utf-8"); PrintWriter out = response.getWriter(); out.println("OK" ); out.flush(); out.close(); ...其他程序... } } 这样只要访问这个Servlet的网络是正常的,程序A调用这个url基本就不会出问题,也就避免了重复发送的问题。但是Servlet内部如果出错了程序A也就不知道了,需要Servlet自己来做错误处理。思路2、在Servlet里面可以用集合做一个缓存,调用一次记录一个request带的参数,这样如果重复调用的话就匹配这个集合,如果集合中存在参数就不执行了。再开启一个线程,用线程去处理Servlet里的业务功能,Servlet自身只需要返回正确响应就可以了。这样的话程序A调用Servlet的url应该也不会有问题,因为业务逻辑被另一个线程处理,出了问题不影响Servlet,也就不影响程序A的响应了。我的想法是如果第一种方法可行,那就没必要再开启一个线程了。因为Servlet在Tomcat中也是由Tomcat开启多个线程的,反正思路1已经给调用Servlet的程序A返回正确响应了,在Tomcat开启的一个Servlet线程中处理业务逻辑也就不会影响上级调用程序了,所以思路1可以更简单实现需求的功能。感觉你说的比较复杂...我提到的这两个思路不可以吗我也感觉线程有些消耗资源,反正Tomcat已经开启一个线程了。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
什么和什么是让文章脉络分明的重要手段9 ...要有事物作为线索 怎么样才能很好的把握住线索 写好文章?_百度... 记叙文如何点题 路由器设置了mac过滤后,中继连不上路由,中继是wn1000rp,路由是d... NETGEAR WN1000RPNETGEAR WN1000RP 万用无线网络扩展器 ...双流兔头之类的,邮局会帮忙抽成真空么,他不抽我又去哪里抽_百度知... 双流有哪些地方能抽真空袋子?来出差,家里孩子想让我带兔头回去,但... ...还没有复婚证,现在以夫妻互保的名义购买保险合法有效吗? 从1写到350,一共写了多少个数字3? 我想知道这个头发叫什么? 理发店能烫出这种感觉吗? 为什么我把servlet里面的东西修改了,它运行时还是执行改... php字符串翻转是什么意思??1 在servlet中写数据库的删除代码怎么没有执行成功 用servlet建html页面,代码里try的作用是什么,求... 新注册的怎么养不会被封87 吃鸡游戏结束后 总是弹不出大厅来 没有响应是怎么回事 该怎么做_百 ... 我和老婆都在单位上班,她是公务员,我是个事业人员。我们在云南边疆,这 ... 弹簧压缩和伸长,弹力都是做正功?1 苹果7plus刚被偷怎么定位找回来iphone7丢失了怎么找... 苹果7plus丢了怎么定位找回iphone7plus手机被偷... 男方提分手,在没有支付证据的前提下如何要回彩礼 plc内部继电器为什么称为软继电器59 绝地求生手机报无法在该场景中跳转,清返回大厅后重试怎么回事 弹簧被压缩和伸长时,弹力做正功还是负功,怎么判断 涂祛疤膏还用洗一下伤疤处吗 天然气热水器放不出热水怎么回事123 锡纸娃娃菜怎么做好吃2 奥拉星歌德怎么六回合2 奥拉星狂鲨歌德怎么打 狂鲨歌德打法汇总 小黄人电影观后感200字5 我的世界手机版怎么跟村民交易 ...中很多职位要求两年以上基层工作经验,应届毕业生怎么办? 华为畅享8c换屏一共需要准备多少钱16 中国这么多航空公司,那么到底哪家航空公司的飞机餐最好吃?1 哪个航班的飞机餐让你感觉惊为天人?45 东航的飞机餐怎么样? 飞机餐是怎样炼成的?1 电热水器不出热水怎么回事172 海尔jsq20-tfs(r)b热水器说明书 通常在医院给病人输液用的生理盐水是质量分数为0.9%的氯化钠溶液,假设... 关于野德刷zul 10分8 好听的大全77 PHP如何实现自定义函数来翻转中文 母婴用品英国代购:海淘几大事项需要知道,你知道吗 我的世界手机版游戏啊怎么和村民交易5 奥拉星狂鲨歌德与魔君夜王谁更强 奥拉星狂鲨歌德是好是坏?30 xtcslr2适合越野吗 为什么弹簧对弹力先做正功后做负功。5 弹簧被压缩 是正功还是负功 弹性势能是增加还是减少98