我有一個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)構造一個新的對象包原來的要求,你不必自己做很多工作。