3

我有一个处理 REST 请求的 Java Servlet。但是,当它接收到无效数据时,这会中断。这是以 XML 格式发布的,为了尝试解决这个问题,我在过滤器链中添加了一个过滤器。正在调用过滤器,我可以访问请求正文中的数据,访问 XML。

我可以验证这一点并对其进行操作以确保数据正确,但我无法弄清楚如何将其重置回请求对象。

如何设置 HttpServletRequest 对象的主体?

4

2 回答 2

2

您可以用一个新类包装您的 HttpServletRequest 对象,我们将其命名为:NewHttpServletRequest。实际的重写应该在适当的覆盖方法中完成,例如 getParameter(String)

package com.example;

import javax.servlet.http.HttpServletRequestWrapper;

public class MyHttpServletRequest extends HttpServletRequestWrapper {

    public MyHttpServletRequest(HttpServletRequest request) {
        super(request);
    }

    public String getParameter(String name) {
        String str = super.getParameter(name);
        // DO THE REWRITING
        return str;
    }

}

于 2012-06-26T14:27:51.663 回答
2

看看HttpServletRequestWrapper

您可以使用公共 HttpServletRequestWrapper(HttpServletRequest request)构造函数将原始请求包装为新对象,您不必自己做很多工作。

于 2012-06-26T14:34:22.030 回答