2013-04-20 114 views
0

这是我的第一个问题,所以如果我出错了,请原谅。 我想从使用Ajax的html页面调用服务器上的shell脚本。 Ajax函数调用java动作,并且此java动作类正在调用shell脚本。 shell脚本将在运行时写入输出。 我想在浏览器上显示该输出,就像它在shell上显示的一样。在浏览器上显示shell脚本的输出

我现在这样做的方式是将shell的输出写入文件,然后在网页上显示该文件的内容,但是我想要的只是尽快在网页上显示输出脚本写它。 该脚本需要2分钟才能运行,并且在运行时会持续在shell上写入输出。

感谢

回答

0

一种方法是start() shell脚本通过ProcessBuilder类。

一旦你有了Process实例,你可以分别通过getOutputStream()getErrorStream()获得它的标准输出和标准错误流。

这些InputStreams包含您正在查找的输出。读完它们后,您可以将其输出写入您的servlet或JSP的响应输出流。您需要执行诸如waitFor()这个过程,并创建线程来读取其输出并写入您的servlet响应。

+0

感谢您的回复,我会解决这个问题,并且会以相同的方式更新您。 – user2110167 2013-04-21 16:57:17

+0

我能够使用printwriter将我的shell脚本流重定向到我的html响应,但是只要流未完成,我的页面就会卡住(直到完全响应来自服务器) 因此,如果在脚本中打印一行说回声“我正在睡觉” 然后我睡了5分钟。 。我想在网页上打印出“我正在睡觉”,然后等待下一个输出。当shell流写入响应流时,有什么办法可以获取数据在响应流中,流被刷新或关闭之前? – user2110167 2013-04-25 15:31:59

相关问题