HTTP was designed as a stateless protocol. There are powerful
benefits to stateless protocols: fault tolerance, parallelization, etc.
CGI scripts have traditionally been written in a stateless manner,
meaning that no state information is stored on the server between
transactions. All complex user interfaces are state machines
of some kind. The trick with CGI programming is to have the server
encapsulate the state in a form that can be given to the browser.
Subsequent requests to the server will thus be accompanied by the
full application state.
A lot of business programmers don't seem to get this concept.
They depend on server-side state that requires that subsequent
connections come back to the same server. State information is
timed out and idle users are required to start over. Users aren't
given a long-lived link that will take them back to their current
state. The web is a different beast from traditional user interfaces
and traditional programming methods shouldn't be forced down its
throat.