tomcat-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Christian Cryder" <>
Subject Question about HttpServletRequest.getParameterValues()
Date Mon, 01 Mar 2004 21:47:09 GMT
Hey folks, I've just noticed something interesting...

The 2.3 HttpServletRequest interface provides a setAttribute() method to
change the values of a given attribute. It does NOT however provide a
similar setParameter() method, allowing you to programatically modify the
values that accompany the request - I assume this means that we shouldn't be
able to change these values.

What I've discovered however, is that if I _can_ modify parameter values by
calling getParameterValues() (which returns String[]) and set the values
that way. For instance:

    Enumeration enum = req.getParameterNames();
    while (enum.hasMoreElements()) {
        String key =(String) enum.nextElement();
        String vals[] = req.getParameterValues(key);
        for (int i=0, max=vals.length; i<max; i++) {
            if (key.equalsIgnoreCase("password")) vals[i] = "********";
  "...key:"+key+" value:"+vals[i]);

This has the surprising (to me anyway) effect of actually _modifying_ the
underlying value for the particular key. Is this simply an implementation
oversight? I had assumed that the method would be returning a copy of the
underlying data structure, rather than a reference to the structure itself.

This isn't really a problem for me, but I thought it was interesting and I'm
curious to know if this was intentional or not. Anyone care to comment?

Thanks much,
Christian Cryder
Internet Architect,
Project Chair, BarracudaMVC -
"Coffee? I could quit anytime, just not today"

To unsubscribe, e-mail:
For additional commands, e-mail:

View raw message