0

我正在为一些服务器测试编写一个非常粗糙的 Web 界面。

我的 servlet 代码基本上如下所示:

import Application.*;

@WebServlet("/runtest")
public class RunTestServlet extends HttpServlet {

    protected void doGet(HttpServletRequest request, HttpServletResponse response) 
throws ServletException, IOException {
        response.setContentType("text/html");
        PrintWriter out = response.getWriter();
        out.println(View.runTestPageHTML());
    }
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        Application.runTest();
        doGet(request,response);
    }
}
class View{
    public static String runTestPageHTML(){
        return "<html><body><form><submit value='run'></form></body></html>";
    }
}

这有2个问题。如果表单被重新发送,Tomcat 可以并且将会开始一个新的工作,并且没有关于工作进度的反馈。

我基本上希望 Application.runTest() 将所有访问重新路由http://<server>/runtest到 logger.out 并忽略所有帖子,直到作业完成。

4

1 回答 1

0

你的工作是在 Application.runTest() 中,对吧?如果 runTest() 是静态方法,您可以使用全局变量来控制每个请求的一次执行。

    public class Application{
           private static boolean inExecution = false;

           public static void runTest(){
              if(!inExecution){
                 inExecution = true;
                 //(...) yout job
                 inExecution = false;
              }

           }
     }
于 2013-11-14T01:17:56.737 回答