JavaWeb 如何实现后台业务逻辑保持运行,并能通过转发jsp给用户做提示

小白,被这个问题折磨死了。

我有两个jsp(A和B),其中A.jsp在用户按下提交按钮后跳转到servlet执行业务逻辑,
但业务逻辑比较耗时,于是想转发到B.jsp作为提醒,但是只要用了转发,要跳转到B.jsp一定要把业务逻辑执行。

查了资料说用异步线程,asyncContext,但即使写了还是要等子线程执行完业务逻辑以后才跳转到B.jsp.

求大神给个思路指导,如果有相应博客参考最好。实在是搜了很久都搜不到。谢谢大家!

你的描述有点不清晰,
你说:“转发到B.jsp作为提醒”、“等子线程执行完业务逻辑以后才跳转到B.jsp.”,这个B.jsp到底是提醒页,还是最终页?
如果B.jsp是

  • 提醒页:比如有一个最终页C.jsp,就是由A.jsp → C.jsp,中间执行业务逻辑,这个B.jsp只是一个提醒页,这个B.jsp里面是转圈圈或者提示“业务执行中”类字样;
  • 最终页:就有点不明白你的意思了。

不过,我曾做过类似这样的需求。
实现方法:

起始页A.jsp → 业务逻辑 → 最终页 B.jsp
1、在业务逻辑的代码那里设置一个标记,这个标记存放在request里,用于表示“业务逻辑是否执行完成”;
2、业务逻辑使用线程执行;
3、在B.jsp里写一个定时器,不断的获取那个标记,由于业务逻辑还没有执行完成,所以还没有标记,就不断的询问;
4、在询问时,如果没有标记,就在B.jsp里添加一个“加载提示”(比如:转圈圈),而其他地方(标签)都设置为不可用(效果就出来了);
5、如果有标记,表示业务已经执行完成,就取消那个“加载提示”,恢复其他标签可用。

当然,这都是用前端原生技术实现的,很基础,也有一些漏洞,你可以参考一下,