Servlet 应该在 doGet/doPost 结束时显式返回吗?

问题描述 投票:0回答:6

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

public void doGet(HttpSerlvetRequest req, HttpServletResponse resp) {
    <my code here>
    return;
}

public void doGet(HttpSerlvetRequest req, HttpServletResponse resp) {
    <my code here>
}
java servlets return
6个回答
12
投票

然而,在某些情况下,您会在 servlet 方法中看到

return
语句,乍一看可能会让初学者感到困惑。这是一个例子:

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

这里的

return
语句是必要的,因为调用重定向(或转发)不会导致代码像某些初学者所想的那样神奇地跳出方法块。它仍然会继续运行直到最后,这会在呼叫前锋时导致
IllegalStateException: response already committed


3
投票

不。作为常规

void
方法,它不需要
return


2
投票

完全没有必要;也不添加任何风格点。


0
投票

完全没有区别,返回是隐含在方法的末尾。


0
投票

完全没有区别,不需要 return 语句。


0
投票

哇..真是一个惊喜!

已经是 2023 年了,您仍然需要显式添加

return;
才能提前退出
doGet
doPost
,即使它是
void
函数。

太令人兴奋了..

© www.soinside.com 2019 - 2024. All rights reserved.