public class ParameterRequestWrapper extends HttpServletRequestWrapper {
/**
* 请求参数
*/
private Map<String, String[]> params = new HashMap<String, String[]>();
/**
*
* 构造函数:
*
* @param request HttpServletRequest
*/
public ParameterRequestWrapper(HttpServletRequest request) {
// 将request交给父类,以便于调用对应方法的时候,将其输出,其实父亲类的实现方式和第一种new的方式类似
super(request);
// 将参数表,赋予给当前的Map以便于持有request中的参数
this.params.putAll(request.getParameterMap());
}
/**
*
* 构造函数:重载一个构造方法
*
* @param request HttpServletRequest
* @param extendParams Map<String, Object>
*/
public ParameterRequestWrapper(HttpServletRequest request, Map<String, Object> extendParams) {
this(request);
// 这里将扩展参数写入参数表
addAllParameters(extendParams);
}
/**
*
* 功能描述:重写getParameter,代表参数从当前类中的map获取
*
* @author :
* 创建日期 :2014年1月7日 下午4:54:53
*
* @param name 参数名称
* @return
*
* 修改历史 :(修改人,修改时间,修改原因/内容)
*/
@Override
public String getParameter(String name) {
String[] values = params.get(name);
if (values == null || values.length == 0) {
return null;
}
return values[0];
}
/**
*
* 功能描述:重写getParameter,代表参数从当前类中的map获取
*
* @author :
* 创建日期 :2014年1月7日 下午4:55:14
*
* @param name 参数名称
* @return
*
* 修改历史 :(修改人,修改时间,修改原因/内容)
*/
@Override
public String[] getParameterValues(String name) {
return params.get(name);
}
/**
*
* 功能描述:增加多个参数
*
* @author :
* 创建日期 :2014年1月7日 下午4:54:20
*
* @param otherParams Map<String, Object>
*
* 修改历史 :(修改人,修改时间,修改原因/内容)
*/
public void addAllParameters(Map<String, Object> otherParams) {
for(Map.Entry<String, Object> entry : otherParams.entrySet()) {
addParameter(entry.getKey(), entry.getValue());
}
}
/**
*
* 功能描述:增加参数
*
* @author :创建日期 :2014年1月7日 下午4:53:46
*
* @param name 参数名称
* @param value 参数值
*
* 修改历史 :(修改人,修改时间,修改原因/内容)
*/
public void addParameter(String name, Object value) {
if (value != null) {
if (value instanceof String[]) {
params.put(name, (String[]) value);
} else if (value instanceof String) {
params.put(name, new String[] { (String) value });
} else {
params.put(name, new String[] { String.valueOf(value) });
}
}
}
/**
*
* 功能描述:重写getParameterMap,代表参数从当前类中的map获取
*
* @author :创建日期 :2014年1月7日 下午4:53:46
*
* @return Map<String, String[]>
*
* 修改历史 :(修改人,修改时间,修改原因/内容)
*/
@Override
public Map<String, String[]> getParameterMap(){
return params;
}
}
public class ParameterRequestFilter implements Filter {
@Override
public void destroy() {
}
@Override
public void doFilter(ServletRequest req, ServletResponse res,
FilterChain chain) throws IOException, ServletException {
ParameterRequestWrapper requestWrapper = new ParameterRequestWrapper((HttpServletRequest)req);
// 获取请求参数
Map<String, String[]> paramsMap = requestWrapper.getParameterMap();
if(paramsMap != null && paramsMap.size() > 0){
// 遍历请求参数Map
for(Entry<String, String[]> entry:paramsMap.entrySet()){
String[] values = entry.getValue();
if(values != null && values.length > 0){
String[] trimValues = new String[values.length];
for(int index = 0; index < values.length; index++){
trimValues[index] = StringUtil.trim(values[index]);
}
entry.setValue(trimValues);
}
}
}
chain.doFilter(requestWrapper, res);
}
@Override
public void init(FilterConfig arg0) throws ServletException {
}
}