更改请求的正文

时间:2012-06-26 14:16:54

标签: java servlets request

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

我可以对此进行验证并对其进行操作以确保数据正确无误,但我无法确定如何将其重置回请求对象。

如何设置HttpServletRequest对象的主体?

2 个答案:

答案 0 :(得分: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;
    }

}

答案 1 :(得分:2)

看看HttpServletRequestWrapper

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