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

时间:2015-08-19 14:22:52

标签: java json rest

我为处理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错误代码?

1 个答案:

答案 0 :(得分:1)

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

  

setStatus

     

void setStatus(int sc)

     

设置此响应的状态代码。此方法用于在没有错误时设置返回状态代码(例如,对于状态代码SC_OK或SC_MOVED_TEMPORARILY)。如果出现错误,并且调用者希望调用Web应用程序中定义的错误页面,则应使用sendError方法。   容器清除缓冲区并设置Location标头,保留cookie和其他标头。