Introdução

Java Servlet é uma das tecnologias Java mais importantes. É o modelo mais simples para construir uma aplicação web completa em Java J2EE. Além disso, até mesmo para uma aplicação web complexa em J2EE que usa Struts, Spring, EJB, etc, continua-se utilizando Servlet para certos propósitos assim como Servlet Filter, Listener, etc. Dessa forma, é uma boa idéia para você ter bons conhecimentos de construção de Java Servlet. Antes de ler este tutorial, seria excelente se você tivesse um domínio da linguagem básica de programação Java.

No final deste tutorial, você terá compreendido o conceito de Java Servlet, estar familiarizado com os recursos para a criação de Java Servlet usando NetBeans 5.0, diferenças entre POST e GET e deverá estar pronto para o próximo nível.

Neste tutorial, estaremos criando uma aplicação web dinâmica que perguntará ao usuário o nome e o sobrenome. Em seguida o sistema deverá responder cumprimentando ao usuário.

O tutorial consiste em quatro passos principais.

  • Introdução ao NetBeans 5.0
  • Criação de um novo Projeto de Aplicação Web com NetBeans 5.0
  • Implementação do Exemplo do Tutorial
  • Conclusão

Introdução ao NetBeans 5.0

Hoje em dia, o NetBeans é um dos mais poderosos IDE’s da programação Java. Outros IDE’s populares do Java também estão disponíveis no mercado tais como Eclipse, Bea WebLogic Workshop, IBM WebSphere Application Development (WSAD), etc. Criar e implementar Java Servlet, usando NetBeans é extremamente claro e direto. Este é um dos motivos porque NetBeans aumenta rapidamente sua popularidade.

Adicionalmente, o NetBeans tem o TomCat integrado, o que facilita bastante a compilação e execução os códigos Java para Web. Bem, sem ir mais distante, vamos começar o nosso tutorial.

Criação de um novo Projeto de Aplicação Web com NetBeans 5.0

Criar Java Servlet significa que você precisará lidar com JSP (JavaServer Pages). JSP é de fato um HTML, mas diferente do HTML, JSP pode ter códigos Java (geralmente os chamamos de Scriptlet) embutidos nele. Em poucas palavras, podemos representar o JSP como um HTML dinâmico. Em Aplicações Web Java J2EE, JSP representa o frente-fim (front-end) enquanto que Java Servlet é o controlador da lógica do negocio, algoritmos complexos, etc.

Por exemplo, considere o “Sistema de Registro Online para Estudantes Universitários” desenvolvido em uma Aplicação Web Java J2EE, a página de registro onde você preenche suas informações como nome, endereço, nome de usuário, etc. são na verdade páginas JSP. Posteriormente, quando você acabar de completar todas as informações e pressionar o botão submeter (submit), todas as informações serão enviadas ao Java Servlet para futuros processos. O Java Servlet recebe esta informação, faz os processos necessários como confirmação, geração de um ID de usuário, etc. e em seguida guarda as informações num banco de dados. Depois de ter guardado com sucesso os dados na base de dados, Java Servlet redireciona o usuário para a página seguinte onde o usuário pode acessar o sistema. Da mesma maneira, se há um erro inesperado acontecendo no meio do processo de registro do aluno, o usuário será redirecionado para a página de erro.

Bom, sem mais atraso, vamos nos preparar para nosso tutorial. Inicie o seu NetBeans 5.0. Depois de ter completa a iniciação, deverá se ver na tela algo similar ao mostrado abaixo.

Figura 1 Figura 2

Primeiro, temos que criar um novo Projeto de Aplicação Web para nosso Java Servlet. Esta Aplicação Web contém todas as páginas JSP assim como nossas categorias de Servlet. Para criar uma nova Aplicação Web em NetBeans 5.0 você pode ir para o menu e escolher Arquivo -> Novo Projeto. Um assistente (wizard) será exibido instantaneamente e você será exigido a providenciar alguma informação para configurar a sua Aplicação Web.

Figura 3

Enquanto o assistente de instalação (wizard) é exibido como mostrado na ilustração acima, escolha Web no painel à esquerda e Aplicação Web no painel à direita e clique no botão Próximo. Todas as outras opções são usadas para desenvolver outros tipos de projetos em NetBeans e irrelevantes para nosso tutorial.

Figura 4

No próximo passo ou segundo passo de configuração de nossa Aplicação Web, você pode suprir de um nome a sua Aplicação Web. Bom, por favor, sinta-se livre de designar o nome que você quiser. Neste caso, para fazer-o auto explicativo, eu chamo nossa Aplicação Web, MeuPrimeiroServlet, como exibido na ilustração acima. No meio do assistente de instalação (wizard), há uma opção chamada “Server” e tem a utilidade de empacotar (Tomcat 5.5.7). Isso demonstra que NetBeans 5.0 usara seu Tomcat empacotado como o servidor ausente. Outras configurações deveram permanecer da mesma maneira, logo pressione o botão concluir. Você também pode pressionar o botão Próximo para ir à última página onde você pode definir a estrutura (framework) que você gostaria de usar como mostra a ilustração abaixo. Entretanto, podemos saltar o último passo, como nós não usamos estrutura (framework) nenhuma para nosso Java Servlet. Bom, concluímos a configuração de nossa Aplicação Web e estamos prontos para implementar nosso primeiro Java Servlet. Pegue o seu café e estamos prontos para começar.

Figura 5

Após ter completado a configuração da Aplicação Web, você deverá ter uma tela (screen) similar a que é mostrada abaixo. Também será criado um arquivo JSP chamado index.jsp na sua pasta de Páginas Web.

Figura 6

Implementação do Exemplo do Tutorial

Para nosso tutorial, vamos usar index.jsp para demonstrar como implementar Java Servlet que cumprimenta ao usuário. Index.jsp será usado para obter o nome assim como o sobrenome do usuário. Para este caso, caixas de texto deverão ser apropriadas para o nome e sobrenome. Entretanto, seria diferente se exigirmos o país de origem do usuário. O uso do combobox seria mais apropriado para escolha de país de origem por existir mais de uma opção para escolher. Somos exigidos também a criar mais um arquivo JSP chamado cumprimento.jsp para cumprimentar ao usuário. Portanto, o fluxo devera ser index.jsp – CumprimentoServlet -> cumprimento.jsp. Em resumo, index.jsp será exibido aos usuários primeiro, o usuário em seguida preenchem seu nome e sobrenome em index.jsp e pressionam o botão Submeter (Submit). Esta informação é enviada ao nosso Java Servlet e nosso Java Servlet redireciona o usuário para cumprimento.jsp.

Figura 7

Bom, você deve estar se perguntando como o index.jsp parece agora que foi executado. Vamos dispor no JSP para dentro do Tomcat empacotado em NetBeans. Clique o botão direito do mouse na sua Aplicação Web e escolha Executar Projeto. Este menu primeiro compila e dispõe à aplicação para o Server e subseqüentemente executa a aplicação durante a execução do index.jsp. Sim, isso é correto; é só um clique para executar a sua Aplicação Web dentro do NetBeans. Posteriormente, se você modificou seu JSP no seu Java Servlet, você pode simplesmente re-dispor a aplicação e todas as mudanças serão refletidas. Você também precisa atualizar o seu navegador de internet.

Figura 8

Enquanto o seu Projeto de Aplicação Web estiver em funcionamento, você pode ser sugerido com uma caixa de dialogo exibindo o processo de seu Projeto de Aplicação Web. Se você prestar cuidadosamente atenção na caixa de dialogo, ela exibira uma vez uma mensagem como “Iniciando Tomcat 5.5.7”, etc. Aguarde por alguns segundos e o seu navegador de Internet será carregado e devera mostrar seu novo index.jsp.

Abaixo a tela (screenshot) mostra como o index.jsp devera ficar.

Figura 9

Completamos nosso index.jsp. O que precisamos fazer agora é criar nosso Java Servlet que chamamos de CumprimentoServlet. De fato, o nome do Java Servlet pode ser o que você quiser. O mais importante disto é como você mapeia este Java Servlet no seu web.xml para ser acessível a partir de seu JSP. Bem, web.xml é de fato um descritor de disposição e precisa sempre estar presente para cada Aplicação Web Java J2EE. Por enquanto, o que precisamos saber é que cada Java Servlet que você criar dever estar registrado no arquivo web.xml. Dessa forma, este arquivo poderá ir ficando cada vez maior se o projeto ficar mais complexo. Isto será descrito numa próxima frase.

Para criar seu Java Servlet, você precisa clicar com o botão direito do mouse a sua seção de Fonte de Pacotes (Source Packages) dentro de sua Aplicação Web e escolher Novo > Servlet como mostra a figura abaixo.

Figura 10 Figura 11

De novo, um assistente de instalação (wizard) deverá aparecer para que você possa configurar seu Java Servlet. Seu nome de Java Servlet pode ser qualquer um más para este exemplo do tutorial, vamos chamá-lo de CumprimentoServlet. Se você quiser um nome diferente para o Java Servlet, você precisa modificar o mapeamento do seu web.xml também. Este web.xml será discutido numa frase posterior. Por enquanto, podemos manter a localização na Fonte de Pacotes (Source Packages). Esta Fonte de Pacotes (Source Packages) deverá conter arquivos Java unicamente. A razão pela qual temos esta Fonte de Pacotes (Source Packages) é para ajudarmos a manter nosso Aplicação Web. Considere que se você tiver todos os JSP, Java e outros arquivos em uma pasta só, será difícil para você ou novos desenvolvedores localizar o fluxo das aplicações.

Para o Pacote (Package), você pode definir qualquer pacote que você quiser. Normalmente, utilizamos o Pacote (Package) para agrupar alguns arquivos Java que têm a mesma funcionalidade. Por exemplo, se eu tiver StringUtil.java para manipulação String e EncodingAlgorithmUtil.java para codificar, eu localizaria eles baixo o mesmo pacote chamado "com.mycompanyname.util" enquanto os dois são de fato categorias de utilidade. Desse modo, visto que este é nosso primeiro Java Servlet, vamos criar um pacote chamado “com.mycompany.servlet”. Em seguida pressione o botão Próximo.

Figura 12

Depois de ter pressionado o botão Próximo, nós estamos no último passo de configurar nosso Java Servlet. O último passo tem a intenção de mapear nosso Java Servlet em web.xml. Deixe o checkbox como conferido. Significa que queremos aplicar as mudanças ao web.xml onde todos os Java Servlets estão registrados. Lembre-se que todo Java Servlet que for criado, devemos registrar no web.xml em particular esse Java Servlet. Web.xml em si é de fato o descritor de disposição. Contem as configurações necessárias para nosso aplicativo web. Web.xml não é usado só para Java Servlet más também para outros propósitos como segurança, parâmetros, etc.

Figura 13

Agora, se você ver, você pode ver que há um arquivo Java criado o qual é CumprimentoServlet.java como mostra a figura abaixo.

Figura 14

Este CumprimentoServlet.java contem nossa implementação do Java Servlet. Se você prestar atenção cuidadosamente a este arquivo, você vai se dar conta de que esta categoria estende HttpServlet. Desse modo, onde quer que você ache categorias de Java que estendem HttpServlet, essas categorias definitivamente devem ser Java Servlet e deve ser uma entrada em web.xml.

Há alguns métodos Java criados para ausente (defauld) em CumprimentoServlet.java i.e.


protected void processRequest(HttpServletRequest request,
                              HttpServletResponse response)
protected void doGet(HttpServletRequest request,
                     HttpServletResponse response)
protected void doPost(HttpServletRequest request,
                      HttpServletResponse response)

... e muitos mais.

Figura 15

Cada método tem suas vantagens e desvantagens. GET tem um tamanho limitado para a informação que é submetida más é fácil a anexar na última URL do teu Java Servlet. POST não tem nenhuma limitação no tamanho da informação enviada e é escondido a partir do URL. Por exemplo, GET exibira algo como http://localhost:7001/MeuPrimeiroServlet/CumprimentoServlet?firstName=david&surname=test enquanto POST não exibira Nome (firstName) e sobrenome (surname) no final da URL. POST tem URL como “http://localhost:7001/MeuPrimeiroServlet/CumprimentoServlet”. É obvio que GET pode ter algumas conseqüências na segurança como todos podem claramente ver informação enviada para o Java Servlet. POST poderia ser a melhor opção más às vezes, poderia haver uma situação onde precisemos usar GET para fazer nosso desenvolvimento mais fácil. Eu tenho certeza que à medida que você prosseguir, você se encontrara com uma situação onde precisara usar GET para enviar alguma informação o Servlet.

Como nosso JSP utilizou POST, vamos adicionar alguns códigos Java dentro de nosso método doPost. Adicione estas duas linhas dentro de seu método doPost assim devera ficar como é mostrado abaixo.


 protected void doPost (HttpServletRequest request,
                        HttpServletResponse response)
                                                throws ServletException, IOException {        
    String firstName = request.getParameter("firstName").toString();
    System.out.println("firstName = " + firstName);
    processRequest(request, response);
 }

 String firstName = request.getParameter("firstName").toString();

O que os códigos acima significam? Se você se lembra, a caixa de texto que criamos em nosso JSP contém o nome atribuído.

 <input type="text" name="firstName" size="20"> 

É aqui onde o nome atribuído é proveitoso. Nós podemos ter o valor ingressado pelo usuário dentro do index.jsp executando request.getParameter(“firstName”). Lembre-se que Nome (fistName) é um caso sensível assim Nome (firstName) é diferente com FirstName ou firstname. A próxima linha de códigos é utilizada para imprimir o valor dentro de seu console Tomcat.

System.out.println("firstName = " + firstName);

Você será capaz de ver o rendimento de seu console Tomcat em NetBeans. Disponha seu projeto novamente, atualize o seu navegador de internet e veja o que está acontecendo agora. Como o seu Tomcat foi executado previamente, você só precisa de re-dispor o projeto e simplesmente atualizar o seu navegador.

Figura 16

Após pressionar o botão submeter (submit), a página ficara em branco. Sim, é porque nós não especificamos onde Java Servlet deveria ser redirecionado. Nós abordaremos isto posteriormente. Más se você vê nos logs do Tomcat, você observara uma coisa muito interessante.

Figura 17 Figura 18

Agora, você vê que no console Tomcat, há uma linha “firstName = John” exibida. Isto é executado e criado pelo nosso Java Servlet. Significa também que nosso Java Servlet foi executado com sucesso.

Bom, vamos para o último passo. Necessitamos cumprimentar o usuário.

Agora, limpe o método doPost e adicione mais alguns códigos para o método processRequest como é mostrado abaixo.

Figura 19

Vamos a ver o que os códigos fazem.


String firstName = request.getParameter("firstName").toString();
String surname = request.getParameter("surname").toString();

As duas linhas acima são utilizadas para obter o nome (firstname) e o sobrenome (lastname) a partir do nosso JSP.

Depois, estas duas variáveis são utilizadas e exibidas dentro do JSP e localizadas nos códigos abaixo. O out.println(“”); é utilizado para transmitir o HTML dentro da página JSP.

Figura 20

Você precisa re-dispor a tua Aplicação Web e atualizar o seu navegador de internet. Vá para index.jsp e providencie o nome e sobrenome e pressione o botão Submeter (Submit). Agora, você poderá ver uma página que cumprimenta o usuário. Parabéns, você criou com sucesso seu Java Servlet.

Conclusão

Bem, eu tenho certeza que agora você esta apto para criar um Servlet usando o NetBeans. Lendo este tutorial, você será capaz de enviar informação ao Java Servlet, sabendo como obter esta informação a partir de seu Java Servlet e redirecionando o usuário para a página de sucesso. Entretanto, você deveria praticar muito mais assim suas habilidades melhorarão junto com a sua experiência. Há muitas coisas ainda no mundo Java que precisam ser conhecidas como Filter, Listener, Struts, EJB, etc. Se você pegar o conceito, você esta pronto para ir ao próximo nível. Desejo você boa sorte.