簡體   English   中英

如何從javax.servlet.filter doFilter方法返回JSON響應消息和HTTP錯誤代碼?

[英]How do I return a JSON response message and an HTTP error code from javax.servlet.filter doFilter method?

我已經為處理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

無效setStatus(int sc)

設置此響應的狀態碼。 此方法用於設置沒有錯誤的返回狀態代碼(例如,用於狀態代碼SC_OK或SC_MOVED_TEMPORARILY)。 如果存在錯誤,並且調用者希望調用Web應用程序中定義的錯誤頁面,則應改用sendError方法。 容器清除緩沖區並設置Location標頭,保留cookie和其他標頭。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM