Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java servlet是否应该在doGet/doPost的末尾显式返回?_Java_Servlets_Return - Fatal编程技术网

Java servlet是否应该在doGet/doPost的末尾显式返回?

Java servlet是否应该在doGet/doPost的末尾显式返回?,java,servlets,return,Java,Servlets,Return,在doGet或doPost方法的末尾显式返回与只让方法“自行”返回之间有什么区别吗 public void doGet(HttpSerlvetRequest请求、HttpServletResponse响应){ 返回; } 公共无效数据集(HttpSerlvetRequest请求、HttpServletResponse响应){ } 否。作为常规的void方法,它不需要返回根本没有区别,返回是隐式的,在方法的末尾。没有区别,返回语句是不必要的。完全不必要;也不会添加任何样式点。但是,在某些情况下,您

在doGet或doPost方法的末尾显式返回与只让方法“自行”返回之间有什么区别吗

public void doGet(HttpSerlvetRequest请求、HttpServletResponse响应){
返回;
}
公共无效数据集(HttpSerlvetRequest请求、HttpServletResponse响应){
}

否。作为常规的
void
方法,它不需要
返回
根本没有区别,返回是隐式的,在方法的末尾。

没有区别,返回语句是不必要的。

完全不必要;也不会添加任何样式点。

但是,在某些情况下,您会在servlet方法中看到
return
语句,乍一看可能会让初学者感到困惑。下面是一个例子:

protected void doPost(request, response) {
    if (someCondition) {
        response.sendRedirect("page");
        return;
    }
    doSomethingElse();
    request.getRequestDispatcher("page").forward(request, response);
}

这里的
return
语句是必需的,因为调用重定向(或转发)并不会像一些初学者所想的那样导致代码神奇地跳出方法块。它仍然继续运行,直到结束,这将导致在调用forward时出现
IllegalStateException:response ready committed

它是
void
方法的唯一隐式。与问题无关,但还有什么可以产生相同的效果(servlet中
dispatcher
redirect
后的代码块未执行)如果返回时未明确写入响应,servlet是否只发送空白响应?
protected void doPost(request, response) {
    if (someCondition) {
        response.sendRedirect("page");
        return;
    }
    doSomethingElse();
    request.getRequestDispatcher("page").forward(request, response);
}