HttpServlet 으로 들어온 Parameter들을 값을 변경해서 사용할 수 있다.
public class ModifiableHttpServletRequest extends HttpServletRequestWrapper {
private HashMap<String, Object> params;
public ModifiableHttpServletRequest(HttpServletRequest request) {
super(request);
this.params = new HashMap<String, Object>(request.getParameterMap());
}
public String getParameter(String name) {
String returnValue = null;
String[] paramArray = getParameterValues(name);
if(paramArray != null && paramArray.length > 0) {
returnValue = paramArray[0];
}
return returnValue;
}
@SuppressWarnings("unchecked")
public Map getParameterMap() {
return Collections.unmodifiableMap(params);
}
@SuppressWarnings("unchecked")
public Enumeration getParameterNames() {
return Collections.enumeration(params.keySet());
}
public String[] getParameterValues(String name) {
String[] result = null;
String[] temp = (String[])params.get(name);
if(temp != null) {
result = new String[temp.length];
System.arraycopy(temp, 0, result, 0, temp.length);
}
return result;
}
public void setParameter(String name, String value) {
String[] oneParam = { value };
setParameter(name, oneParam);
}
public void setParameter(String name, String[] value) {
params.put(name, value);
}
}
public ModelAndView boardList(HttpServletRequest request) {
ModifiableHttpServletRequest modifiable = new ModifiableHttpServletRequest(request);
String nameReplace = request.getParameter("name").toUpperCase();
modifiable.setParameter("name", nameReplace);
}
물론 Parameter를 변수로 사용해서 변환할 수 있지만 HttpServletRequest를 직접 사용해야 할 경우에는 유용하게 이용할 수 있다.