gpt4 book ai didi

java - 如何从 javax.servlet.filter doFilter 方法返回 JSON 响应消息和 HTTP 错误代码?

转载 作者:行者123 更新时间:2023-12-01 11:13:39 26 4
gpt4 key购买 nike

我已经为我们的应用程序创建了一个处理 REST 请求的 servlet 过滤器。我已经注释了 web.xml 并创建了我的过滤器。该过滤器运行良好,但仅返回 JSON 文本消息。我还需要返回 405 HTTP 状态代码。当我执行测试并且测试失败时,我有一个简单的 PrintWriter 来打印错误消息:

public class MyFilter implements Filter {
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
HttpServletResponse apiResponse = (HttpServletResponse) response;
apiResponse.setContentType("application/json");
htmlOut = apiResponse.getWriter();
mainErrorObject = new JSONObject();
if(true){
htmlOut.println(mainErrorObject.toString());
}
htmlOut.close();
}
}

那么,就像我说的,如何返回 JSON 文本消息和 HTTP 错误代码?

最佳答案

ServletResponse 实现 HttpServletResponse 并且它有一个 setStatus 方法,用于设置响应的状态代码。

setStatus

void setStatus(int sc)

Sets the status code for this response. This method is used to set the return status code when there is no error (for example, for the status codes SC_OK or SC_MOVED_TEMPORARILY). If there is an error, and the caller wishes to invoke an error-page defined in the web application, the sendError method should be used instead.The container clears the buffer and sets the Location header, preserving cookies and other headers.

关于java - 如何从 javax.servlet.filter doFilter 方法返回 JSON 响应消息和 HTTP 错误代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32098219/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com