我的动作类中有一个方法,我执行命令,我需要将该命令的输出显示在 JSP页面上。请问我该怎么做。
以下是我在方法中执行的命令:
Process pr = rt.exec("java weblogic.Admin -url server_name:port_num -username user -password
passwd CLUSTERSTATE -clusterName clu");
上面命令的输出我想在名为status.jsp的JSP页面中显示,请帮我怎么做?
答案 0 :(得分:0)
从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());
如果使用scriptlet从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>