Chegamos ao final da semana de treinamento da 3º edição Jovens Talentos da ilegra, quem diria!!
E para fechar com chave de ouro, o último post do blog irá explicar como fazer uma página web que calcula a tabuada e utiliza um servlet rodando no Tomcat para realizar esta tarefa.
O que deve ser feito?
Uma página web para calcular a tabuada que deve conter dois campos:
- Do - Indica a tabuada de qual número deve ser calculada.
- Até - Indica até que número a tabuada deve ser calculada e exibida na página.
E um botão:
- Calcular - Após clicado, o conteúdo dos campos serão validados e caso estejam corretos a tabuada deve ser exibida na página.
Na página com o resultado da tabuada também deve existir um botão para o usuário poder voltar até a página inicial.
A página deve ser criada utilizando JSP ou servlet e executar no Tomcat. Neste caso foi escolhido um servlet.
Por onde começar ?
Antes de começar a implementação foi necessário descobrir e entender o que são estas tecnologias e como funcionam. Aproveitando o esforço e levando em conta que informação nunca é demais, postei aqui um pouco do que pesquisei e aprendi para poder fazer o desafio final.
Tomcat ?
O Tomcat é um conteiner servlet (Servidor de Aplicações Java), que serve para interpretar aplicações escritas em Java para Web. Desenvolvido pela Apache Software Foundation, é distribuído como software livre dentro do conceituado projeto Apache Jakarta, sendo oficialmente endossado pela Sun como a implementação de referência para as tecnologias Java Servlet e JavaServer Pages (JSP).
E para utilizar o Tomcat você deve baixar do site da apache (de preferência a versão mais nova) e executar a instalação. Entre tantos lugares que explicam como fazer, aqui vai um link que explica passo a passo como fazer do jeito mais simples que eu encontrei. Link do site!
Dica importante: Na instalação do Tomcat 6 vale a pena selecionar a check-box "Examples" que vai instalar junto exemplos de servlet. Achei isso muito útil, pois você pode rodar e ver o próprio código fonte dos exemplo na página inicial que abre quando você vai em http://localhost:8080. Para quem não tem experiência alguma com Tomcat e Servlet, meu caso, estes exemplos foram bem úteis. Com eles se torna possível ir copiando uma parte de um e outra de outro para fazer algo um pouco mais interesante, e não começar as coisas do "zero absoluto".
Servlet ?
Servlets são módulos que ampliam a funcionalidade de servidores baseados em requisições/respostas. Web servers são o exemplo típico, para o qual são usado um tipo especializado de Servlets, os HttpServlets. Uma Servlet, por exemplo, pode receber dados em um form HTML por meio de uma requisição HTTP, processar os dados, atualizar a base de dados de uma empresa, e gerar alguma resposta dinamicamente para o cliente que fez a requisição.
Ao receber uma requisição, um Servlet pode capturar os parâmetros desta requisição, efetuar qualquer processamento inerente a uma classe Java, e devolver uma página HTML.
Dica importante: Para conseguir criar Servlets no Eclipse você deve adicionar ao seu projeto a API "servlet-api.jar". Passo a passo:
- Clique com o botão direito do mouse no seu projeto e vá em "Properties";
- Encontre o item "Java Build Path";
- Na aba "Libraries";
- Botão "Add External Jars";
- Selecione o arquivo "servlet-api.jar" que está na pasta LIB de onde você instalou o Tomcat.
E também é possível indicar a API servlet-api.jar no classpath no momento da compilação se for feita no MS-DOS ou em um bacth.
Exemplo: javac -classpath "C:\Program Files\Tomcat 6.0.28\lib\servlet-api.jar" Tabuada.java
Programando o Servlet
Primeiro vou explicar a estrutura da classe Tabuada que precisa herdar a classe HttpServlet (uma classe abstrata) do pacote javax.servlet.http para poder utilizar os métodos de um servlet.
Import
Os imports do pacote java.io servem para utilização e tratamento de exceções do objeto que escreve o código HTML na página.
Os imports do pacote javax.servlet servem para podermos herdar o próprio servlet e utilizar as classes de requisição e resposta da página, além do tratamento de exceções que podem ser geradas por estas classes.
Método doGet
Sobrecarga do método herdado pela classe HttpServlet, e é geralmente utilizado quando uma página é requisitada. O navegador geralmente busca pela página na pasta temporário. Caso a mesma esteja presente, é carregada. Recebe o objeto HttpServletRequest com os dados da requisição e o objeto HttpServletResponse que é a maneira(meio de comunicação) do servlet gerar os dados e responder a requisição.
Método doPost
Sobrecarga do método herdado pela classe HttpServlet, e é geralmente utilizado para enviar dados ao servidor. O navegador não busca pela página na pasta temporário, pois a página resultante muda constantemente. Recebe os mesmo parâmetros que o método doGet.
Método jumpLine
Criado especificamente para a implementação da classe Tabuada. Ele serve para escrever em HTML o código responsável por pular uma linha.
Método validaInteiro
Criado especificamente para a implementação da classe Tabuada. Ele serve para validar se o conteúdo de um campo é um número inteiro diferente de zero. Recebe uma String, pois os campos capturados do form no HTML retornam em formato String, e retorna um boleano indicando se o conteúdo do campo é válido para a aplicação.
O método validaInteiro é utilizado dentro no método doGet para gerar um código HTML dinâmico com uma mensagem de erro ao lado do campo com conteúdo inválido.
Exemplo de um campo que foi informado inválido:
Implementação do código HTML
Idéia básica da aplicação Tabuada: Gerar um form HTML que contem os dois campos "Do:", "Até" e o botão "Calcular" que quando o servlet for requisitado, pois o botão calcular foi clicado, então são realizadas as validações nos campos e caso estejam corretos uma página com o resultado e um botão "Voltar" é exibida. Se o servlet for requisitado, pois o botão "Voltar" foi clicado, então a primeira página é gerada novamente.
A implementação final da classe Tabuada ficou muito grande para ser colocada no post como uma imagem. Então segue um link com código final da classe Tabuada: Download Tabuada.java.
Como instalar o servlet no Tomcat ?
O processo de instalação da servlet no servidor é também conhecido como deploy. Após compilar o servlet e o arquivo .class for gerado, é necessário "instalar" sua aplicação web no Tomcat. Particularmente eu não considerei como uma instalação propriamente dita, mas aqui seguem os passos para sua aplicação web servlet rodar no Tomcat.
- Na pasta "webapps" da sua instalação do Tomcat crie uma pasta com o nome da sua aplicação web;
- Dentro da pasta que acabou de criar, crie outra pasta chamada "WEB-INF";
- A pasta "WEB-INF" deve conter o arquivo "web.xml" e a pasta "classes". O arquivo web.xml é um arquivo de configuração da aplicação web. Esse arquivo informa ao Tomcat quais as servlets que compõem a aplicação web, no meu caso a classe Tabuada. E na pasta classes devem ficar as servlets compiladas e outras classes Java que possam ser utilizadas pela aplicação.
Estruturas de pastas da instalação:
No Tomcat o diretório webapps é configurado por meio do arquivo server.xml que fica localizado no diretório conf. Editando esse arquivo poderíamos especificar outro diretório para fazer o deploy da nossa aplicação.
web.xml
Após a configuração do web.xml a aplicação web está instalada no Tomcat e pode ser testada. Primeiro inicie o Tomcat, caso esteja desligado, e faça um teste acessando a página inicial http://localhost:8080. Se aparecer uma página com a imagem de um gato então você está no caminho certo.
Agora para testar sua implementação acesse http://localhost:8080/nome_aplicação_web/servlet_principal.
No meu caso: http://localhost:8080/ilegra/Tabuada
Deploy utilizando arquivo .WAR
Você também pode instalar sua aplicação web gerando o arquivo .WAR que irá conter aquela estrutura de pastas já explicada. Quando você já possui uma aplicação web encapsulada em um arquivo WAR e desejar instalar no seu servidor Tomcat, é possível acessar o serviço gerenciador do Tomcat e importar esta aplicação.
Ligando e desligando o Tomcat
Para rodar seu servlet no Tomcat é necessário ligar o Tomcat. Um ícone na barra de tarefas exibe o status do servidor, ligado ou desligado. E você também pode controlar pela janela de propriedades clicando duas vezes sobre o ícone na barra de tarefas.
Ligado:
Desligado:
Rodando a aplicação web no Tomcat
A aplicação web "Tabuada" é acessada em http://localhost:8080/ilegra/Tabuada. Seguem agora algumas imagens da página HTML gerada apartir do servlet Tabuada.
Página principal:
Página de resultados:
Considerações Finais
Gostei bastante do jeito "rápido" da ilegra, pois percebi que em apenas uma semana eu aprendi e fiz coisas que antes acreditava demorar muito mais para conseguir por em prática. Para mim, este foi o exemplo real de que a ilegra é realmente do jeito que se descreve no seu site e como os seus colaboradores explicaram para nós (grupo da 3ª edição Jovens Talentos).