As servlets fornecem um mecanismo simples e consistente para estender a funcionalidade de um servidor Web. Uma servlet pode ser pensada como uma pequena aplicação que roda no servidor.
A API utilizada na escrita das servlets não se preocupa em como ela é carregada, com o ambiente em que ela rodará ou com o protocolo usado no envio e recebimento de informações. Isto faz com que as servlets possam ser incorporadas em vários servidores Web diferentes.
Algumas das principais vantagens do uso de servlets em relação às CGIs são:
Independência de plataforma: as servlets podem rodar em qualquer plataforma sem a necessidade de serem reescritas ou compiladas novamente.; Desempenho: carrega-se um novo programa CGI para cada requisição ao servidor. Isto quer dizer que se tivermos 10 requisições simultâneas, teremos 10 programas iguais na memória. Asservlets são carregadas apenas uma vez e para cada nova requisição a servlet gera uma nova thread. O método init()da servlet, assim como nas applets, ocorre apenas na primeira vez que a classe é carregada. É geralmente no método init() que, por exemplo, estabelece-se uma conexão ao banco de dados. Cada uma das threads geradas pode usar a mesma conexão aberta no método init(). Este tipo de tratamento melhora o desempenho da servlet, já que a conexão ao banco de dados é feita apenas uma vez e todas as outras requisições usam esta conexão. A figura 4.1 apresenta o ciclo de vida da servlet.
http://penta.ufrgs.br/pesquisa/fiorese/autenticacaoeadcap4.htm