在servlet结束之前显示servlet的response.getWriter()。println()

时间:2014-07-11 14:11:05

标签: ajax jsp servlets

首先,我想说我是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,但是我找不到如何做的例子,所以如果任何人可以提供帮助将非常感激

2 个答案:

答案 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();
}

}