我有一个看起来像这样的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
}
}
我的想法是我想传递
param1
和param2
到validateInput()
函数来验证输入是否有效。如果输入无效,请写回一条消息,然后结束该过程。我的问题是如何结束该过程? 我知道在return;
中调用doPost()
将结束该过程,但是我试图避免为了结束该过程而从validateInput()
返回任何值到doPost()
。我个人认为,这种方法比将true
或false
返回doPost()
并在其中调用return;
更具可读性。有办法吗?还是根本不可能? 最佳答案
除非您引发异常(在这种情况下为未经检查的异常或doPost
),否则控件将始终在validateInput
运行后返回IOException
。
因此,即使您提交了响应,如果您没有从validateInput
返回任何值doPost
,doPost
仍将继续执行应做的事情。 (当然,如果提交了响应,浏览器将完全不知道服务器端的任何进一步 Activity )。
您将需要返回一个值,引发一个异常(doPost
可能捕获到该异常)或设置一个由doPost
检查的全局值(这只是一团糟)。