Servlets 从doGet()或doPost()返回是否会自动发送响应
我环顾四周,以前问过这个问题,但没有得到完整的答案。当您从doGet()或doPost()显式返回时,无论是否对任何内容进行了编码,都会发送响应。如果是,默认代码是什么?只需Servlets 从doGet()或doPost()返回是否会自动发送响应,servlets,Servlets,我环顾四周,以前问过这个问题,但没有得到完整的答案。当您从doGet()或doPost()显式返回时,无论是否对任何内容进行了编码,都会发送响应。如果是,默认代码是什么?只需response.setStatus()并返回就足够了吗?如果不是:那么我总是手动发回响应?不使用转发或重定向的默认响应方式是什么 如果您什么也不做,只需从servlet返回(甚至不返回),它将返回一个状态码200(OK)的空响应。使用下面的servlet在tomcat和glassfish服务器上测试了它: @WebServ
response.setStatus()
并返回就足够了吗?如果不是:那么我总是手动发回响应?不使用转发或重定向的默认响应方式是什么 如果您什么也不做,只需从servlet返回(甚至不返回),它将返回一个状态码200(OK)的空响应。使用下面的servlet在tomcat和glassfish服务器上测试了它:
@WebServlet("/a")
public class a extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
return;
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
return;
}
}
使用Chrome的network profiler工具,您可以看到我所说的:
如果您什么也不做,只需从servlet返回(甚至不返回),它将返回一个状态代码200(OK)的空响应。使用下面的servlet在tomcat和glassfish服务器上测试了它:
@WebServlet("/a")
public class a extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
return;
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
return;
}
}
使用Chrome的network profiler工具,您可以看到我所说的:
您必须设置状态,根据您发送的状态,您可能需要发送一个响应正文。如果您只返回状态200,您可以不发送正文,但浏览器上的响应将是空白页。阅读HTTP RFC以了解更多关于这意味着什么的信息:所以当您说response.getWriter()时,write是用来发送响应的吗?或者你必须返回页面吗?什么机制发送响应?是的,设置状态和写入结果,这会将内容发送回客户端,确保调用flush()。完成后,某些实现不会自动刷新。您必须设置状态,并且根据您发送的状态,您可能必须发送响应正文。如果您只返回状态200,您可以不发送正文,但浏览器上的响应将是空白页。阅读HTTP RFC以了解更多关于这意味着什么的信息:所以当您说response.getWriter()时,write是用来发送响应的吗?或者你必须返回页面吗?什么机制发送响应?是的,设置状态和写入结果,这会将内容发送回客户端,确保在完成时调用flush(),某些实现不会自动刷新。