I just started working with java sevlets at my new job at HighWire Press. I had messed around with java applets a couple years ago, and they were quite the pain in the ass. Java was not quite as cross-platform as Sun might have hoped, at least at that point.
I had also done some work more recently with server-side programming in the form of PHP.
Servlets seem to combine the best of both worlds, which in turn eliminates their respective weaknesses. Since servlets are run on the server, you don't need to worry about the different web browsers handling java differently. The browser doesn't even make you sit there with your thumb up your ass while it loads its own JVM. Servlets are also compiled, as opposed to interpreted like PHP, which gives it an edge in performance. You still get the rapid development benefits of PHP, too, since the server (supposedly) reloads the compiled servlet whenever it is modified.
You can invoke servlets a couple different ways. One is to have a URL point directly at the servlet, so it is loaded just like any other web page, or you can embed the servlet in a regular web page using server-side includes, generally in the form of SERVLET tags. You can also chain the servlets, so the output from one servlet is filtered through the next.
There's so much more, but I just started learning this stuff a week ago.