As I understand it, a servlet functions as this:
html <---> web server <---> application server (running servlets)
an HTTP message is sent to a web server, and the web server interprets the message and when appropriate turns over control to a servlet. For a servlet, you need a system that can execute the program being called, be it Perl,
Java, or whatever.
So the short answer is that you must have a web server. In some cases, however, the web server and application server may be the same machine. Why would they be separate machines? What if your servlet crashes the system? It's better to keep the web server alive and your site up.