A Third Vending Machine
public void doGet(HttpServletRequest req,
HttpServletResponse resp) throws . . . {
String pathInfo = req.getPathInfo() ;
if(pathInfo == null) { // First invocation in this session
sessionID = + rand.nextInt() ;
sessionTable.put(sessionID, new Vector()) ;
} else { // Subsequent invocation
sessionID = pathInfo.substring(1) ; // Strip leading /
Vector selections = (Vector) sessionTable.get(sessionID) ;
String selection = req.getParameter(selection) ;
if(selection != null) selections.addElement(selection) ;
out.println(<form action= + selectURL + / + sessionID + >) ;
out.println(<input type=submit name=selection . . . >) ;