Subject: Notes Session
There is no direct equivalent to the session data concept in Domino web programming, if you don’t use servlets. All code modules, be it Java or LotusScript, are loaded when needed and immediately unloaded after they terminate.
You can of course use cookies as with any other web platform. Apart from setting them client-site using JavaScript, the easiest way to set them server site is through @SetHttpHeader formula (look it up in designer help).
Also you could user URL rewriting as with other platforms, but there is no predefined framework to support you with that. You have to write the code to parse the Query_String for variables to pass around and to add them to newly generated URLs.
Notes and Domino also support so called profile documents, which can e.g. be created per user. They are cached in memory during a session, so accessing them is more efficient than doing database lookups. But don’t get too excited about it: They are commonly considered to be unreliable on the web. You can never be 100% sure, that you are served the most recent content. Looks like they are not too well coupled to the web session, whereas they work fine in the Notes Client. But I haven’t done much research recently, if there are ways to overcome this problem, by now.
Another similar concept is a special type of document, that Domino automatically generates for each agent, the so called agent data node. You can access it through NotesSession.SavedDate (or agentContext.getSavedData() in Java) like any other document and you can create your own items on that document to your likings. But, this document is created per agent, not per user, so you would have to find a data structure to compensate for that. To make changes to the agent data node, the effective user running the agent (signer, run-on-behalf user or web user) must have the right to create and edit documents in the database. The agent data node is (or should be) deleted every time you make changes to the agent design, which might also be undesirable. I have not seen this approach being used in real life, yet.
Fields that are hidden using Notes hide-when-formulas are not rendered on the web at all, by default. The easy way around it is to check the form property to generate HTML for all fields (which will in fact generate hidden inputs for ALL hidden fields). This way, the values are accessible through JavaScript.