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