我有一个Java Servlet,它正在处理REST请求。但是,当它收到无效数据时就会中断。这是以XML格式发布的,为了解决这个问题,我在过滤器链中添加了一个过滤器。过滤器正在被调用,我可以访问请求主体中的数据,访问XML。更改请求的主体
我可以验证这一点,并操纵它以确保数据是正确的,但我不能解决如何将其重置回请求对象。
如何设置HttpServletRequest对象的主体?
我有一个Java Servlet,它正在处理REST请求。但是,当它收到无效数据时就会中断。这是以XML格式发布的,为了解决这个问题,我在过滤器链中添加了一个过滤器。过滤器正在被调用,我可以访问请求主体中的数据,访问XML。更改请求的主体
我可以验证这一点,并操纵它以确保数据是正确的,但我不能解决如何将其重置回请求对象。
如何设置HttpServletRequest对象的主体?
你可以用你的HttpServletRequest对象包装一个新的类来命名它:NewHttpServletRequest。实际重写应在适当的重写的方法来完成,例如的getParameter(字符串)
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;
}
}
您可以通过使用public HttpServletRequestWrapper(HttpServletRequest request)构造一个新的对象包原来的要求,你不必自己做很多工作。