Do que se trata o artigo:

Este artigo trata da Servlet API, tecnologia que nos permite criar aplicações web que executem regras de negócio no servidor, acessem bases de dados, interajam com outros serviços e, por fim, sejam capazes de montar dinamicamente uma resposta ao usuário.

Em que situação o tema é útil:

Os servlets estão por trás de qualquer aplicação web Java. Portanto, o conhecimento do funcionamento da Servlet API é fundamental para qualquer desenvolvedor que venha a trabalhar na construção de aplicações web.

Servlets, o coração do Java para web:

Este artigo mostra ao leitor como criar aplicações web dinâmicas em Java. Aqui aprendemos a criar servlets, tratar parâmetros de uma requisição HTTP, compartilhar informações entre servlets e montar uma resposta HTML dinâmica para o usuário a partir de uma aplicação exemplo.

A internet tem sido a grande plataforma para a maioria dos projetos de software da atualidade. Não é à toa que grande parte dos sistemas de hoje, independente de possuir suas interfaces desktop, mobile ou web (rodando no browser), faz uso do modelo cliente-servidor. Este modelo é caracterizado pelo fato da aplicação possuir módulos que executam em diferentes máquinas. Um módulo – servidor – geralmente é responsável pelas regras de negócio, persistência dos dados ou processamentos mais custosos, como, por exemplo, cálculos matemáticos complexos. Já o módulo cliente geralmente contém apenas a camada de apresentação da aplicação, a qual possui a interface com o usuário. A comunicação entre cliente e servidor, por sua vez, normalmente é feita através de uma rede utilizando-se de algum protocolo de comunicação, como o HTTP.

Com base nisso, neste artigo veremos como construir esse módulo servidor utilizando Java, mais especificamente a Servlet API. Aqui iremos descobrir como os servlets estendem as possibilidades na construção de uma aplicação web. Veremos que, em adição às páginas HTML estáticas, por meio do uso da Servlet API é possível realizar processamento lógico no servidor, mantendo a simplicidade e portabilidade oferecidas pela linguagem de marcação de hipertexto no lado cliente. Também aprenderemos a trabalhar com dados compartilhados, gerenciar a sessão do usuário e delegar o tratamento de requisições. Tudo isso através da construção de exemplos práticos e um pequeno projeto.

A Servlet API

O Java tem sido amplamente utilizado no desenvolvimento de sistemas web devido a características como maturidade, segurança, robustez e confiabilidade. E é no coração do desenvolvimento web em Java, que encontramos a Servlet API. Atualmente em sua versão 3.0, esta API fornece diversos recursos que dão suporte e tornam possível a construção de aplicações web dinâmicas utilizando Java.

A Servlet API surgiu da necessidade de se criar conteúdo dinâmico para as páginas web. Na época isto já era feito utilizando outras tecnologias, como o famoso CGI e até mesmo com Java, através de Applets. Mas ainda não era o ideal, devido às limitações que tais tecnologias carregam consigo. Para resolver esse problema no universo Java, foi criada então a Servlet API. Através dela é possível implementar aplicações web utilizando todos os recursos do Java, como APIs de acesso a banco de dados, sistemas de arquivos e outros recursos impossíveis de serem utilizados apenas com páginas HTML comuns. Tudo isso sem sobrecarregar a máquina do usuário, uma vez que todo esse processamento é realizado no lado servidor da aplicação, cabendo ao browser (cliente) apenas processar o HTML gerado pelo back-end, não sendo necessária a instalação de nenhum tipo de plugin, como o Flash Player, Silverlight ou mesmo o Java Plugin, este último utilizado para executar applets no browser.

Common Gateway Interface: Tecnologia onde scripts eram executados no servidor a fim de gerar conteúdo dinâmico. Foi sendo substituída principalmente devido a sua baixa escalabilidade e portabilidade.

Applets: Tecnologia Java que permite a criação de conteúdo dinâmico, porém do lado cliente – no browser mais especificamente. Por rodar no cliente, possui diversas limitações, como a necessidade de um plugin para poder ser executado, o “peso” do applet, que precisa ser baixado com todas as dependências e carregado na página, restrições de segurança para acesso ao sistema de arquivos, bancos de dados, entre outros pontos negativos.

Servlets

De modo resumido: um Servlet é uma classe Java que roda no servidor web e é capaz de processar as requisições feitas pelos clientes (browsers) gerando uma resposta dinâmica, geralmente no formato HTML. Para isso essa classe deve implementar a interface javax.servlet.Servlet, a qual define os métodos do ciclo de vida desses objetos no servidor, sendo o principal deles o método service(), no qual é efetuado o tratamento da requisição. Além dessa interface básica, a API disponibiliza algumas classes que simplificam o desenvolvimento, uma vez que estas já provêm implementações para boa parte dos métodos da interface, além de oferecer pontos de extensão para que o desenvolvedor possa implementar suas próprias regras.

No caso das aplicações web, onde basicamente é usado o protocolo HTTP nas requisições, a API disponibiliza a classe HttpServlet para ser estendida. Esta já faz todo o tratamento das regras do protocolo e deixa a cargo do desenvolvedor apenas a lógica do tratamento da requisição. A classe HttpServlet define métodos no formato doXxxx() para cada método HTTP – GET, POST, CONNECT, OPTIONS, HEAD, TRACE, PUT e DELETE – e ao desenvolvedor basta sobrescrever os métodos que desejar. Os métodos doGet() e doPost() são os mais comumente implementados, uma vez que seus correspondentes, GET e POST, no HTTP são os mais utilizados.

Os passos para criar um servlet HTTP são bem simples, a saber:

1. Criar uma classe que estenda HttpServet;

2. Escolher os métodos HTTP que serão tratados, sobrescrevendo o método da classe HttpServlet correspondente (Ex.: doPost() para tratar requisições do tipo POST);

3. Informar ao container quais URLs serão tratadas. Para isso basta anotar a classe com a anotação @WebServlet, que recebe como parâmetro o padrão de URL a ser tratado pelo ...

Quer ler esse conteúdo completo? Tenha acesso completo