2013-04-20 36 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

相關問題