An "application server" is a fuzzy concept. Really, it just means software that hosts pluggable application code. You could call Apache and Tomcat application servers and not really be wrong. But usually when you say "application server" you mean more than that. For example, a Java application server usually hosts EJBs as well as servlets and JSPs, and it usually has fancy tools for deploying and configuring applications that go way beyond what Apache or Tomcat have.
A "Web server" is anything that serves files via the HTTP protocol. You can write a very simple one in Java in a dozen lines of code (a server that serves a single fixed file, for example.) It‘s very easy to write one, so there are many thousands in existence.
链接:https://coderanch.com/t/85182/application-servers/difference-Apache-HTTP-server-Tomcat