2011-05-04 84 views
0

我正在使用HttpServletResponseWrapper來捕獲servlet過濾器中的狀態代碼。它似乎工作正常。HttpServletResponseWrapper狀態代碼= 0

當一切正常時,狀態爲200。然而,當應用服務器不能找到請求的項目,我回到0,但在瀏覽器中它顯示爲404.

有人可以解釋這一點嗎?

編輯:這是一個JAX-RS網絡應用程序,所以我猜測如果應用程序服務器不能匹配它的路徑返回時沒有設置狀態,那麼當web服務器看到狀態爲0時,它會用404替換它這聽起來正確嗎?

+0

您的Weblogic是否支持Servlet 3.0? – BalusC 2011-05-04 16:53:33

+0

weblogic 10.3.3 – Bill 2011-05-04 16:56:30

+0

我對Weblogic一無所知。這是一個沒有問題。只需回答是或否。真正的答案取決於此。現在,再一次:您的Weblogic是否支持Servlet 3.0?是或否? – BalusC 2011-05-20 13:06:26

回答

0

我遲到了,但可能的答案仍然是有用的:

在HttpServletResponseWrapper這些方法需要實現:

@Override 
    public void setStatus(int status) { 

     super.setStatus(status);  
     this.status = status; 
    } 

    @Override 
    public void sendError(int status) throws IOException { 

     this.status = status; 
     super.sendError(status); 
    } 

    @Override 
    public void sendError(int status, String msg) throws IOException { 

     this.status = status; 
     super.sendError(status, msg); 
    } 

    @Override 
    public void sendRedirect(String location) throws IOException { 

     this.status = 302; 
     super.sendRedirect(location); 
    } 

在404個setStatus的情況下,不叫,但sendError,你需要以趕上那裏的地位。