HttpServletResponseWrapper状态代码= 0

时间:2011-05-04 16:48:26

标签: java jax-rs servlet-filters weblogic-10.x

我正在使用HttpServletResponseWrapper来捕获servlet过滤器中的状态代码。它似乎工作正常。

当一切正常时,我的状态为200。但是,当应用服务器无法找到所请求的项目时,我会返回0.但在浏览器中它显示为404.

有人可以解释一下吗?

编辑:这是一个JAX-RS网络应用程序,所以我猜测如果应用服务器无法匹配它返回的路径而不设置状态,那么当网络服务器看到状态为0时,它将用404替换它。听起来不错吗?

1 个答案:

答案 0 :(得分: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,你需要在那里捕获状态。