2012-10-15 28 views
1

我在写一个servlet,我必须处理用户数据。但是由于处理数据需要时间,我需要在处理数据之前发送用户和数据有效的响应。有没有办法可以先发送回复,然后处理数据。喜欢的东西,发送响应后的处理数据Servlet

response.send(); 
processData(); 

感谢

+1

如果您的应用程序在您发送回应后以及在处理之前/期间爆炸了,该怎么办? –

+0

想想@罗曼的评论。 –

+0

是的,我有和在我的情况下处理数据不如存储它,这是更早完成重要。数据只是为了更好的用户交互性而被处理,如果一些数据没有被处理,这不是什么大问题。希望应用程序不会每次吹:)顺便说一句,谢谢 –

回答

2

将processData放入不同的线程。例如:

if(!processOn){ 
    processOn = true; 
    new Thread(){ 
     public void run(){ 
      processData(); 
     } 
    }.start(); 
} 
response.send(); 

其中proccessOn是用于不重新启动进程两次的会话/静态布尔值。

+0

解决了这个问题,谢谢:) –

+0

不客气 – PbxMan

+1

不要在'servlets'产生线程。它明确地被J2EE标准所禁止。 –

0

我不认为这是可能的,但是可能创造一个新的Thread来处理数据可能会有所帮助。

0

是和否。您无法发送回复,然后阅读请求内容。但是,您可以将请求内容作为字节数组读取,然后发送响应,然后执行数据的应用程序级解析。