2011-05-04 86 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,你需要以赶上那里的地位。