Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.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
Servlets 从doGet()或doPost()返回是否会自动发送响应_Servlets - Fatal编程技术网

Servlets 从doGet()或doPost()返回是否会自动发送响应

Servlets 从doGet()或doPost()返回是否会自动发送响应,servlets,Servlets,我环顾四周,以前问过这个问题,但没有得到完整的答案。当您从doGet()或doPost()显式返回时,无论是否对任何内容进行了编码,都会发送响应。如果是,默认代码是什么?只需response.setStatus()并返回就足够了吗?如果不是:那么我总是手动发回响应?不使用转发或重定向的默认响应方式是什么 如果您什么也不做,只需从servlet返回(甚至不返回),它将返回一个状态码200(OK)的空响应。使用下面的servlet在tomcat和glassfish服务器上测试了它: @WebServ

我环顾四周,以前问过这个问题,但没有得到完整的答案。当您从doGet()或doPost()显式返回时,无论是否对任何内容进行了编码,都会发送响应。如果是,默认代码是什么?只需
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(),某些实现不会自动刷新。