开发者

HttpServletResponseWrapper Status Code = 0

I am using HttpServletResponseWrapper to capture the status c开发者_如何学运维ode in a servlet filter. It seems to work fine.

I get a status of 200 when everything is ok. However when the app server cant find the requested item, I get back a 0. but in the browser it shows up as a 404.

Can someone explain this?

EDIT: This is a JAX-RS web app so I am guessing that if the app server can't match the path it returns without setting a status, then when the webserver see a status of 0 it replaces it with 404. Does this sound right?


I am late but probably the answer is still useful:

In the HttpServletResponseWrapper these methods need to be implemented:

@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);
    }

On case of 404 the setStatus is not called but sendError, you need to catch the status there.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜