Fala Desenvolvedores!!!

Servlets! Nesta série de artigos pretendo falar um pouco sobre os Servlets de uma forma simples e prática e falando também na teoria, que dará uma base melhor quando estiverem nascendo os nossos primeiros códigos com Servlets.

A idéia é também evoluir este assunto para outro assunto bem interessante, o JSP! Vocês verão mais pra frente que, a grosso modo, o JSP é convertido em Servlets.

Tá Alexandre, mas já que os artigos falarão sobre Servlets, nada mais justo que começar o primeiro falando sobre o motivo do nascimento dos Servlets.
Então vamos lá!

O problema!
Como toda boa idéia, os Servlets surgiram justamente a partir de um problema: A necessidade de exibição de páginas geradas dinamicamente na Web.
E por que? Por que no começo tínhamos páginas estáticas, ou seja, páginas muito simples em HTML que não eram capazes de retornar respostas de acordo com as requisições dos usuários.

Resumindo a história: No começo tínhamos diversos servidores que continham diversas páginas HTML estáticas que simplesmente acessávamos seu conteúdo e agora temos páginas que nos respondem dependendo da nossa pergunta, ou seja, capazes de enviar diferentes tipos de respostas dinamicamente.

Solução interessante: CGI
CGI. O Common Gateway Interface (CGI) foi criado justamente para contornar este problema. Qual era a idéia do CGI? Receber a requisição do cliente e gerar páginas web dinamicamente, exatamente como queríamos!Uau! Como? Podíamos escrever programas em CGI que poderiam ser executados a partir de parâmetros passados pelo navegador. Sendo um pouco mais ortodoxo, temos scripts CGI que entendem os parâmetros passados pelo navegador e assim podem enviar uma página web para o navegador criada dinamicamente, de acordo com estes parâmetros.

Exemplo simples: Com CGI podemos fazer uma solicitação via web e um programa CGI pode ler dados de um banco de dados a partir da nossa requisição e devolver uma página HTML com estes dados.

Uma curiosidade é que poderíamos escrever os programas usando por exemplo PHP, C, ASP e Perl.

Mas em Java também temos algo semelhante, os Servlets!

Servlets
Basicamente os Servlets funcionam desta mesma forma: Podem gerar páginas dinamicamente, de acordo com as requisições do usuário.

Os Servlets são da plataforma Java e nada mais são que Classes onde podemos criar objetos e trabalhar com eles, gerando páginas HTML dinamicamente.

Assim, basicamente poderíamos ter o seguinte processo:

Mas já vou te desanimar: Não é uma boa prática trabalharmos gerando páginas HTML diretamente com Servlets!

Você verá nos próximos artigos que trabalhar desta forma é um tanto quanto trabalhoso! No começo estamos felizes e tranquilos com a forma, mas logo percebemos que para algo mais complexo os Servlets tornam a nossa vida mais dura e caótica e não estou exagerando!

E por que saber sobre Servlets então? Por que você pode precisar dar manutenção em algum sistema baseado em Servlets (existem muitos!) e por que temos Frameworks que convertem seus dados em Servlets, como o famoso JSP. Além do mais é bem bacana nós desenvolvedores sabermos com o é o funcionamento por de trás dos Frameworks.

Assim, a grosso modo, o estudo sobre Servlets acaba se tornando um estudo sobre geração de páginas criadas dinamicamente mas em um nível mais baixo.

Servlet Container?
Você pode ter ficado em dúvida sobre o que seria o Servlet Container na figura. Temos um bem famoso e tenho certeza que você já ouviu falar ou usou: O Tomcat! Ele pode ser o nosso Servlet Container para usar os Servlets, ou seja, precisamos de um container para desenvolver com Servlets.

Um Servlet Container pode, por exemplo, gerenciar o ciclo de vida de uma Servlet, dar suporte à segurança, trabalhar com Multithreading, etc. Poderemos detalhar melhor o trabalho de um Servlet Container ao longo dos posts.

Os Servlets trabalham com o conceito de request/response e na figura seria exatamente a requisição específica e resposta específica respectivamente. Apesar de ser bem comum trabalharmos com Servlets com o protocolo HTTP, podemos trabalhar com outros protocolos que seguem este conceito de request/response.

Por que Servlets e não CGI então?
Existem alguns detalhes interessante que nos fazem escolher os Servlets em relação ao CGI, apesar deles terem a mesma idéia de funcionamento.

Segue uma figura com um pequeno comparativo:

Claro que temos outros motivos para o uso do Servlet em relação ao CGI (como serem em Java) e também podemos nos aprofundar nos motivos citados acima. Mas este é um assunto para um futuro post! :)

Finalizando
Pois é, vamos finalizar sem códigos mesmo. Mas fique tranquilo, este post foi apenas para introduzir a idéia sobre Servlets para podermos escrever código sabendo o que estamos fazendo e não simplesmente escrevermos linhas de códigos e esperarmos algum resultado.

Já no próximo post falaremos sobre as Classes que poderemos trabalhar e faremos o nosso pequeno primeiro exemplo! Para provar que trabalhar criando dinamicamente páginas com Servlets não é algo aconselhável e bacana, também faremos outros exemplos mais complexos, para realmente abandonarmos a idéia de trabalhar somente com Servlets, caso esta idéia apareça!

Abraços pessoal!!!

Alexandre Gama
twitter.com/alexandregamma
http://alexandregama.wordpress.com/