首页 > 解决方案 > httpservelet 响应未返回 sendError 状态代码

问题描述

我试图确定为什么最初在处理过程中引发异常的网络服务器响应;然后返回 200 OK 客户端。详细情况如下:

handleGetClient 方法处理该过程,并在发生错误时抛出捕获的异常。然后该方法使用 sendError 方法设置返回的错误代码,在日志调试时我可以看到在这个特定的错误(500)中设置了这个。但是一旦调用返回到 dispatchRequest 方法,httpservletResponse 状态实际上是 (200)。我看不出这发生在哪里以及为什么。最初我以为我可以将方法更改为 int 以返回错误代码,但我仅限于我可以对此代码进行的更改。

有任何想法吗?

标签: javaservletshttprequesthttpresponseerror-code

解决方案


您可以尝试以下方法之一:

response.resetBuffer ();
response.setStatus (HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
response.flushBuffer ();

或者,如果您有一个与 500 代码匹配的错误页面web.xml

response.reset ();
response.setError (HttpServletResponse.SC_INTERNAL_SERVER_ERROR);

您还可以考虑对任何一般错误使用异常映射器,因此您可以只抛出一个异常来处理状态代码返回,而不是自己玩错误代码。

IE:throw new InternalServerException ("Your message");


推荐阅读