Web server mainly used to handle request/response type applications without much complex business logic.Apache is a webserver.It can run static contents like html,jpgs etc.
Tomcat is a web container.It can run normal html,servlets,and JSPs also but not EJB's.
Application server is the one which can do much more complex applications/business logic and provides services like transaction management,messaging persistence,connection pooling etc directly.All these services are add on services with all the J2EE complaint apllication servers.They can run EJB's also.Jboss is an example for application server.
My view has been that the web server does presentation stuff - HTTP, HTML, Servlet/JSP - and the app server does business stuff in EJBs and POJO. I like this point of view because I can use the app server without a web server, say for a fat client.
Our engineering guys say the web server is HTTP only, no application Java. A web server plug-in directs Servlet/JSP calls to the app server where all Java code runs. So Servlet/JSP/EJB is all app server to them. They like this point of view because all the java stuff is in their WebSphere deployment.
It took us about a month to realize we weren't always talking about the same thing. I try not to say web server or app server any more. I say HTTP server, servlet container and EJB container. Even that's a bit fuzzy because all three have some HTTP capacity.
Bottom line - if you're talking web server and app server with someone you don't know, stop and clear up what's what before you go on.
A good question is never answered. It is not a bolt to be tightened into place but a seed to be planted and to bear more seed toward the hope of greening the landscape of the idea. John Ciardi