首先,我想说我是html / jsp / java / servlets等的新手......并且感谢这个论坛,我设法让我的第一个webapp工作。但现在我遇到了问题,我无法在网站上找到解决方案。 问题是我从一个jsp调用一个servlet,这个servlet部署了不同的应用程序,我只是想在de servlet结束之前显示我在servlet中调用的println,即使如果我在不同时刻有10个println部署过程,服务器只在servlet结束处理时显示它们,这对我的应用程序没什么意义,因为我试图显示部署的不同步骤。 servlet代码是这样的:
public class Deploys extends HttpServlet {
String HOME = System.getenv("TRACE_HOME");
public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
final PrintWriter out = res.getWriter();
String broker = req.getParameter("Broker");
String eg = req.getParameter("Eg");
String servicio = req.getParameter("cboServicios");
String bar = req.getParameter("cboBarFiles");
// deploy
BrokerProxy b;
try {
out.println("connecting to server");
b = utils.connect("LOCALQM");
out.println("connect succesfull");
ExecutionGroupProxy e = b.getExecutionGroupByName(eg);
String path = HOME + "\\deploys\\files\\" + servicio + "\\";
DeployResult dr = e.deploy(path + bar,true, 60000);
out.println("Deployment completion code = "+dr.getCompletionCode());
} catch (ConfigManagerProxyLoggedException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (ConfigManagerProxyPropertyNotInitializedException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}
并且服务器同时显示所有内容 连接到服务器 连接成功 开始部署 部署完成
我读到了这样的方法是使用ajax和jquetr,但是我找不到如何做的例子,所以如果任何人可以提供帮助将非常感激
答案 0 :(得分:0)
这是因为它只在servlet完全部署时才执行所有操作,因此它几乎可以立即完成servlet上的所有操作。至少我是如何学习它的。
我认为你只能编辑服务器或类似的东西。我不认为可以在jQuery或ajax上执行此操作,因为servlet已经部署完毕。但是,您可以做的是在servlet执行时执行这些输出,以便在处理代码时进行打印。
答案 1 :(得分:0)
好的,我找到了一个解决方案,我不确定它是否是最好的方法,或者它只是一种解决方法,但它确实有效! 我使用了flush(),最重要的是我必须在servlet中设置响应类型。 这就是我用来测试这个案例的“hello world”servlet最终的工作原理。
public class HolaMundo extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/css");
PrintWriter out = response.getWriter();
out.println("Hello World! entrada");
out.flush();
try {
Thread.sleep(2000);
} catch (InterruptedException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
out.println("Hello World! salida");
out.flush();
}
}