Every web developer is familiar with the scenario in which a client fills out an HTML form and then submits the inserted information to a server-side program for processing. Some of these programs use the HTTP request method POST to deliver the data to the server-side program. The POST method sends the data to the server in the body of the request, rather than as a query string appended to a URL (as in the GET method). For example, consider the HTML form tag in Example 7-1.
Example 7-1. HTML form tag set up for posting data
<form method=POST action="/project/controller"> <b>User Name:</b> <input type="text" name="username" size="20"> <br><br> <b>Department:</b> <input type="text" name="department" size="15"><br><br> <b>Email:</b> <input type="text" name="email" size="15"><br><br> <input type="submit" value="Submit"> </form>
When the client submits this form information, the top of the client's request text looks like this:
POST /project/controller HTTP/1.1 Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/msword, application/vnd.ms-powerpoint, application/vnd.ms-excel, application/pdf, */* Referer: http://localhost:8080/project/login.jsp Accept-Language: en-us Content-Type: application/x-www-form-urlencoded
Beneath this text, after a few more headers, the body of the request carries the submitted data:
JSPs and servlets make parsing the POST data quite transparent for the developer. This is the topic of the next few recipes. We then discuss how to use servlets and JSPs to post data so that they essentially play the role of client, instead of acting as a server-side program.