我为处理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错误代码?
答案 0 :(得分:1)
ServletResponse
实现了HttpServletResponse
,它有一个setStatus
方法,用于设置响应的状态代码。
setStatus
void setStatus(int sc)
设置此响应的状态代码。此方法用于在没有错误时设置返回状态代码(例如,对于状态代码SC_OK或SC_MOVED_TEMPORARILY)。如果出现错误,并且调用者希望调用Web应用程序中定义的错误页面,则应使用sendError方法。 容器清除缓冲区并设置Location标头,保留cookie和其他标头。