我需要删除/修改一些HttpServletRequest
参数。我试图通过使用Filter
基于我几天前发布的问题来做到这一点。
在 中Filter
,我试图HttpServletRequest
通过继承HttpServletRequestWrapper
类来包装 ,如下所示。
private final static class FilteredRequest extends HttpServletRequestWrapper {
public FilteredRequest(ServletRequest request) {
super((HttpServletRequest) request);
}
@Override
public String getParameter(String paramName) {
return super.getParameter(paramName);
}
@Override
public String[] getParameterValues(String paramName) {
return super.getParameterValues(paramName);
}
@Override
public Map getParameterMap() {
Map<Object, Object> parameterMap = new HashMap<Object, Object>();
Map originalParameterMap = super.getParameterMap();
for (Object o : originalParameterMap.entrySet()) {
Map.Entry<Object, Object> pairs = (Entry<Object, Object>) o;
parameterMap.put(pairs.getKey(), pairs.getValue());
}
return parameterMap; //Returning a modifiable ParameterMap.
}
}
它是类中的内部Filter
类。在doFilter()
方法中,
chain.doFilter(new FilteredRequest(request), (HttpServletResponse)response);
正在调用上述类的构造函数(包装请求)。
现在,我希望在我的 Spring MVC 控制器类中修改/取消设置任何请求参数。我正在尝试删除控制器类中的参数,如下所示。
Map requestMap=request.getParameterMap();
requestMap.remove("txt_country_name");
或者,
requestMap.put("txt_country_name", null);
因此,请求参数txt_country_name
应该从 中删除,HttpServletRequest
但不会被删除(也不会引发任何异常,例如“不允许对锁定的 ParameterMap 进行修改”)。我在这里想念什么?我走错路了吗?
顺便说一句,在整个应用程序中始终创建/使用请求属性似乎不是最好的解决方案。
[我需要在 Spring MVC 控制器类中而不是在Filter
自身中删除/修改请求参数]