Basically a Web Server serves static HTML pages (or gifs, jpegs, etc.), and can also run code written in a special way called CGI – Common Gateway Interface. Ex IIS and Apache
An Application Server is used to run business logic or dynamically generated presentation code. It can either be .NET based or J2EE based (like Oracle9iAS, BEA WebLogic Server, IBM WebSphere, JBoss). A J2EE application server runs servlets and JSPs (infact a part of the app server called web container is responsible for running servlets and JSPs) that are used to create HTML pages dynamically. In addition, J2EE application server can run EJBs – which are used to execute business logic.
Application server has many additional componenets to the web-server like EJB componenet. But web-server has only the Servlet componenet (known as the catalina) and the JSP componenet (known as the Jasper). Application server also has the web-server in it.
Summarize, Web server exclusively handles HTTP requests, whereas an application server serves business logic to application programs through any number of protocols.