首先request中是没有这个setParamter方法的,所以得想个方法做这个事情
一 写一个 ParameterRequestWrapper.java 类
package com.jn.org.jasig.cas.client.jn;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;
import java.util.Enumeration;
import java.util.Map;
import java.util.Vector;
/**
* 该类用于改写request.getParameterNames里的值
* 使用方法:HashMap newParam=new HashMap(request.getParameterMap());
* ParameterRequestWrapper wrapRequest=new ParameterRequestWrapper(request,newParam);
* */
public class ParameterRequestWrapper extends HttpServletRequestWrapper {
private Map params;
public ParameterRequestWrapper(HttpServletRequest request, Map newParams) {
super(request);
this.params = newParams;
}
public Map getParameterMap() {
return params;
}
public Enumeration getParameterNames() {
Vector l = new Vector(params.keySet());
return l.elements();
}
public String[] getParameterValues(String name) {
Object v = params.get(name);
if (v == null) {
return null;
} else if (v instanceof String[]) {
return (String[]) v;
} else if (v instanceof String) {
return new String[] { (String) v };
} else {
return new String[] { v.toString() };
}
}
public String getParameter(String name) {
Object v = params.get(name);
if (v == null) {
return null;
} else if (v instanceof String[]) {
String[] strArr = (String[]) v;
if (strArr.length > 0) {
return strArr[0];
} else {
return null;
}
} else if (v instanceof String) {
return (String) v;
} else {
return v.toString();
}
}
}
二 假设现在要去掉 request中一个 ticket 参数
/**
* 清理票据
* */
private void clearTicket(HttpServletRequest request){
if(request==null) return ;
HashMap newParam=new HashMap(request.getParameterMap());
newParam.remove("ticket");
ParameterRequestWrapper wrapRequest=new ParameterRequestWrapper(request,newParam);
request = wrapRequest;
}