java是处理请求后数据的有效方法
目前,我的Servlet通过POST请求从网页上的表单接收数据
我需要对接收到的数据执行各种操作,但客户端不需要等待此处理完成。我没有寄任何东西回来
它现在的工作方式是客户端持续等待,直到发送HTTP响应,但直到doPost()完成后才会发生。但是我使用doPost()来存储数据&;触发对该数据的操作
我可以简单地用doPost()存储数据,但是如何在doPost()之外触发对该数据的操作呢
你可以在下面搜索框中键入要查询的问题!
目前,我的Servlet通过POST请求从网页上的表单接收数据
我需要对接收到的数据执行各种操作,但客户端不需要等待此处理完成。我没有寄任何东西回来
它现在的工作方式是客户端持续等待,直到发送HTTP响应,但直到doPost()完成后才会发生。但是我使用doPost()来存储数据&;触发对该数据的操作
我可以简单地用doPost()存储数据,但是如何在doPost()之外触发对该数据的操作呢
# 1 楼答案
一个简单的答案是Threads。这个post是有帮助的
将参数值另存为doPost()方法中的变量。然后将所有长时间运行的操作放在一个新线程中。doPost()方法将完成并发送HTTP响应,而第二个线程需要多长时间才能完成
doPost():
新线程:
# 2 楼答案
据我在评论中的讨论所知,您希望将值保存在变量中,并希望稍后处理它们。因此,出于同样的目的,我们使用会话变量。所以,您可以做的是当servlet接收到这些参数时。然后使用以下命令在会话中保存:
稍后,当您想要使用这个变量时,您可以通过获取session来获取它,然后通过将其密钥传递给session对象来获取它
现在,无论您想对uname变量执行什么过程,都可以使用会话获取该变量,并对其执行该过程
有关会话以及如何使用会话的进一步说明,您可以阅读这篇简单的文章:Using Session
# 3 楼答案
您是否需要尝试从Servlet执行所有操作
您可以在JMS队列上发布传入数据,并在完成后将控制权返回给调用方
然后,您可以让另一个类从JMS队列读取数据并异步处理它
# 4 楼答案
你可以用
来电者将离开,您可以自由长时间运行
doPost()
编辑: 很抱歉,没错,我忘记了即使是requestDispatcher也只有在完成后才会被激发。 唯一的其他方法是启动一个新任务/callable/runable/thread并委托工作,以便servlet可以返回