我有一个看起来像这样的servlet:

public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException{
    String param1 = request.getParameter("param1");
    String param2 = request.getParameter("param2");

    validateInput(param1, param2, request, response);

    //if nothing's wrong with the input, do this and that
}


private void validateInput(String param1, String param2, HttpServletRequest request, HttpServletResponse response) throws IOException{
    boolean fail = false;

    //validate input blah blah blah

    if (fail){
        PrintWriter out = response.getWriter();
        out.write("invalid input");
        //end process or servlet
    }
}

我的想法是我想传递param1param2validateInput()函数来验证输入是否有效。如果输入无效,请写回一条消息,然后结束该过程。我的问题是如何结束该过程? 我知道在return;中调用doPost()将结束该过程,但是我试图避免为了结束该过程而从validateInput()返回任何值到doPost()。我个人认为,这种方法比将truefalse返回doPost()并在其中调用return;更具可读性。有办法吗?还是根本不可能?

最佳答案

除非您引发异常(在这种情况下为未经检查的异常或doPost),否则控件将始终在validateInput运行后返回IOException

因此,即使您提交了响应,如果您没有从validateInput返回任何值doPostdoPost仍将继续执行应做的事情。 (当然,如果提交了响应,浏览器将完全不知道服务器端的任何进一步 Activity )。

您将需要返回一个值,引发一个异常(doPost可能捕获到该异常)或设置一个由doPost检查的全局值(这只是一团糟)。

09-11 17:51