Java 在DIV中显示流
我正在通过servlet运行一些终端(或命令提示符)命令,如下所示Java 在DIV中显示流,java,javascript,html,Java,Javascript,Html,我正在通过servlet运行一些终端(或命令提示符)命令,如下所示 public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String[] command = { "zsh" }; Process p = Runtime.g
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
String[] command =
{
"zsh"
};
Process p = Runtime.getRuntime().exec(command);
new Thread(new SyncPipe(p.getErrorStream(), response.getOutputStream())).start();
new Thread(new SyncPipe(p.getInputStream(), response.getOutputStream())).start();
PrintWriter stdin = new PrintWriter(p.getOutputStream());
stdin.println("source ./taxenv/bin/activate");
stdin.println("python runner.py");
stdin.close();
int returnCode = 0;
try {
returnCode = p.waitFor();
} catch (InterruptedException e) {
e.printStackTrace();
} System.out.println("Return code = " + returnCode);
}
class SyncPipe implements Runnable
{
public SyncPipe(InputStream istrm, OutputStream ostrm) {
istrm_ = istrm;
ostrm_ = ostrm;
}
public void run() {
try
{
final byte[] buffer = new byte[1024];
for (int length = 0; (length = istrm_.read(buffer)) != -1; )
{
ostrm_.write(buffer, 0, length);
}
}
catch (Exception e)
{
e.printStackTrace();
}
}
private final OutputStream ostrm_;
private final InputStream istrm_;
}
这是在新窗口中执行终端命令后显示结果,我希望避免这种情况,并将这些流值传递回JSP页面,并在div中显示相同的结果
如何做到这一点?静态导入
首先,您可以使用
like and定义scriplet
您可以静态导入.jsp
页面,而不是复制整个代码,如下所示:
<%@ include file="YourPage.jsp" %>
您可以在此处找到其他示例:
这与Ajax有关,Jquery可以做到这一点您可以使用javascript
getElementByID
或使用Jquery的build\u in$(“sub\u banner”)
语法来更改div的内容 而不是void
,传递回值并用JSP读取它们,而不是“ostrm_.write(buffer,0,length);”我想把它们寄回JSPSo,你建议我把这些东西放进去,然后导入??我会尝试一下,并会更新你。这取决于你的应用程序。请参考我下面的答案。非常感谢你的回答@泽戴:当然没问题。我希望它能帮助你。非常感谢!你的回答很有帮助,很有启发性。非常感谢。
<jsp:include page="YourPage.jsp"/>
function changeContent() {
$('#content').load('YourPage.jsp');
}