Struts has a document on all the technologies it relies on
here. I'll give the high-level summary for a typical form submission:
First, the browser doesn't know it has a JSP page. The JSP is interpreted by the server and regular old HTML is sent to the browser (use your browser's "view page source" function to see the result).
Next, when you click "submit" on an HTML form, it makes an HTTP request, usually a GET or a POST, to the server. The details of these requests are documented in the
RFC 2616 - Hypertext Transfer Protocol -- HTTP/1.1, Section 9, but suffice to say they include the information on the form in the HTTP request to the server.
Next, the
servlet container maps the incoming request URL to a service it is running (i.e. a Struts application) and passes the request on. Struts maps the URL to an Action, and populates it with the information contained in the request.
Once your action class has run, Struts is used by the servlet container to build the response, usually by processing a JSP, which references the previously populated action (though there are other response types and processes).
Finally, the response is then sent to the browser, which should display the results of your form submission.