Servlets no Tomcat 5: Aplicações Web MVC em Java

Aprenda como a tecnologia original do Java na web pode somar ao JSP e ao JSTL para construir aplicações complexas.

Esse artigo faz parte da revista Java Magazine edição 20. Clique aqui para ler todos os artigos desta edição

Clique aqui para ler esse artigo em PDF.

Servlets no Tomcat 5

Aplicações Web MVC em Java

Aprenda como a tecnologia original do Java na web pode somar ao JSP e ao JSTL para construir aplicações complexas

Esta é a terceira parte de uma série que apresenta os fundamentos do desenvolvimento de aplicações web em Java, utilizando como plataforma o Tomcat 5.0.x. Na primeira parte, vimos como instalar e administrar o Tomcat, e aprendemos os fundamentos do JSP 2.0. Na segunda, vimos como utilizar o JSTL para simplificar a codificação de páginas JSP e facilitar a interação entre programadores e web designers. Agora veremos como utilizar a tecnologia de Servlets, e como ela pode somar às tecnologias vistas nas duas primeiras partes, no que se tornou conhecido como Arquitetura Modelo 2 (Model 2) para desenvolvimento web em Java, ou Arquitetura MVC.

Ao contrário dos primeiros artigos desta série, em que as tecnologias apresentadas foram explicadas desde o básico, não serão mostrados os fundamentos de servlets. Isto porque, ao mesmo tempo em que foi iniciada esta série, na Edição 18, começou-se também uma seqüência de artigos de Felipe Leme (na coluna "Pente Fino"), que cobre desde os conceitos essenciais até recursos avançados dessa API. Assim, é recomendável consultar a primeira parte da série sobre servlets como complemento a este artigo.

Definindo servlets

HttpServlets (ou simplesmente "servlets") são classes Java criadas para funcionar dentro de um servidor/container web, assim como Applets são classes Java criadas para funcionar dentro de um navegador web. Portanto, servlets não são aplicações independentes; eles dependem do servidor web para funcionar. É o servidor quem decide em que momento criar uma nova instância de HttpServlet e quando executar seu código.

É comum que o iniciante tenha problemas para rodar seu primeiro servlet. Ou ele/ela encontra dificuldades na compilação da classe (que exige APIs não presentes no J2SE, sendo esta para muitos a primeira vez que se configura o classpath), ou se complica na execução e atualização da aplicação (muitos containers não recarregam aplicações web depois que suas classes são recompiladas). Por isso iniciamos com um exemplo básico, que ensina como realizar o ciclo de edição-compilação-deployment-execução no Tomcat 5, utilizando a linha de comando do sistema operacional e o JSDK.

Usuários de IDEs como o Eclipse e o NetBeans também podem ter dificuldades por causa do funcionamento do processo de deployment e configuração de recursos como conexões a bancos de dados. Não é o foco desta série tratar destas questões, mas o leitor poderá encontrar informações valiosas em outro artigo desta edição, “Cadastro em Passos com Struts”, que em um quadro apresenta particularidades da configuração de aplicações no Tomcat 5.

Primeiro servlet

Um servlet básico está na Listagem 1. Ele apenas retorna uma página HTML simples, contendo a data e a hora atuais. Foi escrito para responder a uma requisição HTTP GET, por isso implementa o método doGet(). Os argumentos deste método são justamente a requisição e a resposta. Qualquer informação que seja necessária para gerar a resposta deve ser obtida por meio da requisição, e qualquer que seja a resposta, ela deve ser entregue a métodos do objeto de resposta.

Para rodar o servlet é necessário que ele seja mapeado para uma URL, o que é feito no descritor web (o arquivo WEB-INF/web.xml). A Listagem 2 apresenta o descritor para a execução do servlet básico.

O descritor e o servlet devem ser colocados em um pacote WAR para execução pelo container web (no nosso caso o Tomcat 5.0.x – veja o quadro “Atualizar ou não para o Tomcat 5.5.x?”). Já vimos na primeira parte que os bytecodes de classes JavaBeans em um pacote WAR devem ser colocados sob a pasta WEB-INF/classes; servlets são tratados da mesma forma, assim como qualquer outro tipo de classe que você desenvolva como parte de sua aplicação web. Dessa maneira, nosso pacote WAR até o momento deve conter a estrutura apresentada na Figura 1.

A pasta javamagazine-servlets, que é a raiz da estrutura do pacote WAR apresentada na figura, deve ser criada dentro da pasta webapps do Tomcat 5, como foi feito nos artigos anteriores desta série.

 

Atualizar ou não para o Tomcat 5.5.x?

Enquanto este artigo estava sendo escrito, foi anunciada a primeira versão estável do Tomcat 5.5.x, a versão 5.5.4. Entretanto, não recomendo aos leitores um upgrade imediato para esta versão; sugiro que permaneçam com a série 5.0.x (5.0.28), que é a recomendada pela própria Apache Software Foundation para desenvolvimento voltado para Servlets 2.4 e JSP 2.0. O motivo são mudanças profundas no código do Tomcat 5.5 em relação a versões anteriores, utilizando (e exigindo) o Java 5. Mesmo com uma versão estável, ainda irá levar algum tempo até que o novo Tomcat e a nova VM amadureçam para uso em missão crítica, e para que IDEs e bibliotecas de terceiros sejam atualizados para o novo padrão.

Compilando o servlet

Para compilar o servlet, é necessário acrescentar as classes da API de Servlets ao classpath do sistema operacional (aqui estamos supondo que todas as operações são realizadas no prompt do sistema, e não em um IDE). Essas classes não são parte do JSDK, mas podem ser encontradas na pasta common/lib/servlet-api.jar na sua instalação do Tomcat 5. Então, supondo que seu ambiente já esteja preparado para execução do javac na linha de comando, bastará executar algo como:

 

export CLASSPATH=$CLASSPATH:$TOMCAT_HOME/common/lib/servlet-api.jar

 

O comando anterior funcionará no Linux. No Windows, o comando seria:

 

set CLASSPATH=%CLASSPATH%:%TOMCAT_HOME%\common\lib\servlet-api.jar

 

Substitua a variável de ambiente TOMCAT_HOME pelo diretório onde o Tomcat 5 foi instalado em seu computador (ou então defina a variável com o valor correspondente). Para compilar o servlet tenha certeza de que o diretório corrente seja a pasta WEB-INF/classes da nossa aplicação, e execute o comando (no Linux):

 

javac javamagazine/ServletBasico.java

 

Ou então, no Windows:

 

javac javamagazine\ServletBasico.java

 

Agora podemos iniciar o Tomcat 5 utilizando o script startup.sh (ou startup.bat), da mesma forma que fizemos nos artigos anteriores.

Para executar a aplicação, peça pela URL http://127.0.0.1:8080/javamagazine/servletbasico. O resultado deverá ser como o mostrado na Figura 2.

" [...] continue lendo...

Ebook exclusivo
Dê um upgrade no início da sua jornada. Crie sua conta grátis e baixe o e-book

Artigos relacionados