The Polls Servlet
As we saw in Chapter 4, the Polls servlet presents a simple web API used to create a new instance of a poll, cast votes, and view the tally. Table 10.1 illustrates the Polls API.
Table 10-1. The Polls Servlet’s Web API
|
Action |
URL |
|---|---|
|
Create a new poll |
/Polls?name=Picnic99&1=Sat+June+12&2=Sat+June+19&3=Sun+June+20 |
|
Cast a vote |
/Polls?name=Picnic99&vote=Sun+June+20 |
|
View the tally |
/Polls?name=Picnic99&tally= |
At the heart of Polls is a Java hash-of-hashes (HoH)—that is, a Java Hashtable whose keys are the names of poll instances (such as Picnic99) and whose values are hashtables. The keys of each interior hashtable are the names of the choices in that poll (e.g., “Sat June 19”), and the values count the votes for each of these choices. Table 10.2 depicts these structures.
Table 10-2. The Polls Servlet’s Central Data Structure
|
Key: poll name |
Value: Hashtable | |
|---|---|---|
|
Picnic99 |
key: choice name |
value: vote count |
|
Sat June 12 |
12 | |
|
Sat June 19 |
5 | |
|
Sun June 20 |
14 | |
|
Preferred HMO |
Tufts |
3 |
|
Matthew Thornton |
11 | |
|
Harvard Pilgrim |
7 | |
In Perl, as in Java, it’s easy to create this kind of HoH. But a Perl CGI script can’t so easily meet the following requirements:
Retain the object in memory across multiple invocations of the script.
Protect the object from concurrent use by multiple clients.
Retrieve the object from disk at start-up and keep the in-memory version synched with the on-disk version as updates occur.
Larry Wall likes to say that Perl aims to makes easy ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access