What is the difference between the web server, web container and application server?

Web Server is a server which handles HTTP requests. Also, the web server doesn’t have the capability to handle any Java EE specification.
Web Container does have the capability to handle a part of Java EE specification. In other words, web containers are capable to handle serverlets. (Serverlet is a part of Java EE specification.)
Application Servers are capable to handle the full spectrum of Java EE specifications.