從Java 1.5開始,javadoc說:從1.5開始,ProcessBuilder.start()是創建Process的首選方法。但它仍然是蠻好用的Runtime.exec()
...
首先必須收集命令的輸出...沒有忘記適當的字符集(例如String charset_name = "ISO-8859-1";
或IBM850
或...):
Reader rd = new InputStreamReader(pr.getInputStream(), charset_name);
StringBuilder sb = new StringBuilder();
char[] buffer = new char[1024];
int len;
while ((len = rd.read(buffer)) != -1) {
for (int i=0; i<len; i++) {
sb.append(buffer[i]);
}
}
然後,如果您在servlet中運行命令(爲了便於測試,您應該這樣做),則只需將StringBuilder
的內容放入請求屬性中,轉發到servlet並使用字符串:
request.setAttribute("CMD_OUTPUT", sb.toString());
如果您從JSP的命令和小腳本,根本就out.print(sb.toString());
編輯:
如果你運行上面的JSP外,並把結果在一個請求屬性如上圖所示,你可以訪問以JSP的方式,例如:
<jsp:useBean id="CMD_OUTPUT" scope="request" class="java.lang.String"/>
<p>Result of command : ${CMD_OUTPUT}</p>
我在out.print語句中出現錯誤。無法解決錯誤。 – user1795999 2014-10-01 05:18:03
@ user1795999請給出一些關於錯誤的背景信息,你試圖打印什麼,它來自哪裏,... – 2014-10-01 05:24:07
@ user1795999:對不起,但是我沒辦法幫你,無論你使用scriptlet還是servlet (或堆棧跟蹤),... – 2014-10-01 07:31:59