【问题标题】:HttpServletResponseWrapper Status Code = 0HttpServletResponseWrapper 状态码 = 0
【发布时间】:2011-08-18 17:15:25
【问题描述】:

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

当一切正常时,我的状态为 200。但是,当应用服务器找不到请求的项目时,我得到一个 0。但在浏览器中它显示为 404。

谁能解释一下?

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

【问题讨论】:

  • 你的 Weblogic 支持 Servlet 3.0 吗?
  • 我对 Weblogic 一无所知。这是一个是-否的问题。只需回答是或否。真正的答案取决于此。现在,再次:您的 Weblogic 是否支持 Servlet 3.0?是还是不是?

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


【解决方案1】:

我来晚了,但可能答案仍然有用:

在 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,你需要捕获那里的状态。

【讨论】:

    猜你喜欢
    • 2018-03-23
    • 2010-11-13
    • 1970-01-01
    • 2017-06-26
    • 1970-01-01
    • 1970-01-01
    • 2017-10-09
    • 2016-10-29
    • 2014-07-01
    相关资源
    最近更新 更多