Home  Servlets  Servlet hosting  Servlets intro  Sessions  Cookies  HTTP headers  Status codes  Keep-alive


Threads Database Profiling Regular expressions Random numbers Compression Exceptions C Equivalents in Java
 Comment on this article  List of Java topics

Reading HTTP request parameters

Even if you're new to web programming, you've probably seen HTTP request parameters. These are the bits sometimes "tacked on" to the end of a URL when you submit a form on a web page. For example, if an HTML form was defined as follows with a username field:

<form action="http://www.examplesite.com/login">
<input type=text name="username">
<input type=submit>
</form>

then submitting the form will make the browser request http://www.examplesite.com/login, but with the username parameter tacked on to the end:

http://www.examplesite.com/login?username=mcjones

When parameters are used

As well as being used for HTML forms as in the above example, HTTP parameters are also used in cases such as:

  • to pass simple data in AJAX web applications;
  • in some APIs designed for the programmer to call a web service, passing in parameters directly via the URL.

Essentially, any time a simple, short piece of data needs to be passed from the client to the server, they're a reasonable choice.

Reading parameters from the Servlet

Instead of adding request parameters to the end of the URL, it is also possible to POST them as actual data. To the Servlet, it makes no difference which request method (GET or POST) was used to send the parameters. In either case, we read the parameter using the getParameter() method of HttpServletRequest:

public void doGet(HttpServletRequest req, HttpServletResponse res)
    throws ServletException, IOException {
  String userName = req.getParameter("username");
}

If the given parameter was not set, then null was returned. A couple of methods are available to help us enumerate the parameters passed in:

  • the HttpServletRequest.getParameterNames() method returns an Enumeration of all defined parameters;
  • the rarely used HttpServletRequest.getParameterMap() method returns a map of parameters; howver, the map returned the maps string parameter names to a string array of values.

It may sound odd that getParameterMap() returns mappings to arrays of strings. The reason is that strictly speaking, more than one value can be assigned to the same parameter name. (In practice, it is rare to do so.)

Parsing POSTed parameters "manually"

Usually, the most convenient way of reading request parameters is via the getParameter() method. It should be noted that if you use this method to read parameters that are POSTed, you shouldn't generally use the getReader() method to obtain and read the POSTed data "manually".

Parameters vs request headers

HTTP parameters are generally used to pass user-supplied data. They should not be confused with HTTP request headers, which are generally used to carry "meta" information, such as the character encoding, referring page, type of browser etc.


Written by Neil Coffey. Copyright © Javamex UK 2008. All rights reserved.