The web server can serve straight forward files like HTML and images that require no processing.

The web container, on the other hand handles special resources that require server processing, like .jsp

Flow: The web server receives the request. If the request requires special processing, it hands the request to the web container that calls the relevant resource, like a servlet, to handle the request. The resource generates a response, sticks something typically HTML (might be an image) in it, and hands it to the server. The server sends it back to the requestor.