Java Servlets
Por Jeymisson Oliveira
(jeymisson.oliveira@ccc.ufcg.edu.br)
As tecnologias Web de Java permitem uma divisão efetiva do trabalho, disponibilizando níveis de abstração e separação das camadas do aplicativo aos desenvolvedores. Java Servlet é uma classe em Java que corresponde à parte de nível mais baixo dessas tecnologias.

Aplicações Web, por natureza, são distribuídas, o que significa que estas aplicações são executadas em mais de um computador e se comunicam por meio de uma rede ou servidor. Além de serem populares entre os usuários pela facilidade de utilizar o browser como cliente, estão em alta com os desenvolvedores também, pois, flexibilidade, facilidade em atualizar e manter são algumas de suas características. Na Coluna Java deste mês, apresentaremos Java Servlets, classes Java, executadas no lado servidor de uma aplicação Web desenvolvida em Java.

Servlets são módulos de Java, que rodam no lado servidor da aplicação, projetados para responder, com conteúdo dinâmico, às chamadas realizadas no lado cliente. Por exemplo, Servlets podem gerar dinamicamente documentos HTML personalizados, processar e armazenar dados submetidos por um formulário HTML ou apenas retornar dados de uma consulta feita pelo cliente ao banco de dados.

Um Servlet , na prática, implementa a interface javax.servlet.Servlet, e na maior parte das vezes estende a classe abstrata javax.servlet.http.HttpServlet especialmente desenvolvida para responder a requisições HTTP.

Exemplo de um Servlet que gera uma página HTML:

import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class HelloWorld extends HttpServlet {
	@Override
	public void doGet(HttpServletRequest req, HttpServletResponse res)
			throws ServletException, IOException {
		
		res.setContentType (“text/html”);
		
		PrintWriter out = res.getWriter();
		out.println("<html>");
		out.println("<head><title>Hello World</title></head>");
		out.println("<body>");
		out.println("<h1>Hello World</h1>");
		out.println("</body></html>");
	}
}

Nesse exemplo, estendemos a classe HttpServlet e sobrescrevemos o método doGet. Cada vez que o servidor web recebe uma requisição do tipo GET para esse Servlet, o servidor chama o método doGet passando um objeto do tipo HttpServletRequest e outro do tipo HttpServletResponse. O HttpServletRequest representa a requisição do cliente e contém as informações ao seu respeito. O HttpServletResponse representa a resposta do Servlet, e nesse exemplo é utilizado para retornar a informação para o usuário. O método doGet utiliza, primeiramente, o método setContentType para “setar” o tipo de conteúdo da resposta, que nesse caso é “text/html”. Em seguida, utiliza o método getWriter para pegar o objeto PrintWriter da resposta, para finalmente utilizá-lo de forma a escrever o conteúdo HTML.

Agora que temos nosso Servlet, precisamos executá-lo. Servlets, necessitam de um web contêiner para serem executados, utilizaremos o Apache Tomcat 6.0, supondo que temos o Tomcat instalado no diretório /usr/share e com configuração padrão, é necessário criar a estrutura de diretórios necessária para o funcionamento do projeto.

Dentro da pasta webapps do tomcat criamos do seguinte:

  • hello					//O diretório principal do nosso projeto.
    • src		  		 //Diretório com classes não compiladas.
    • WEB-INF				//Diretório com metadados da aplicação.
      • /classes		  //Diretório com classes compiladas do projeto.
      • web.xml			 //Arquivo de descrição do deploy.

Com a estrutura de diretórios pronta, precisamos apenas configurar o arquivo web.xml, responsável por fazer a descrição do projeto Web para publicação, nosso arquivo fica assim:


	
		HelloWorld
        HelloWorld
    
    
        HelloWorld
        /helloworld
    

Na primeira tag <web-app> definimos nossa aplicação web, abaixo dessa tag ficam todas a configurações referentes ao nosso deploy. Na tag <servlet> definimos o nome do servlet e sua classe compilada. Na tag <servlet-mapping> é configurado como o servlet de nome HelloWorld será acessado, nesse caso pelo endereço /helloworld, após a url do nosso projeto.

Agora com tudo configurado, precisamos compilar nosso servlet com o seguinte comando dentro do diretório webapps/hello:

javac –classpath /usr/share/tomcat6/lib/servlet-api.jar –d WEB-INF/classes src/HelloWorld.java

Feito, nosso servlet já pode ser acessado localmente pelo endereço: http://localhost:8080/hello/helloworld.

Servlets são componentes chave do lado servidor de uma aplicação web que nos permite estender e personalizar qualquer aplicação Java Web de forma flexível e fácil, características avançadas dessa tecnologia podem ser consultadas aqui: http://docs.oracle.com/cd/E13222_01/wls/docs92/webapp/configureservlet.html#wp155995.

FONTES:

http://docs.oracle.com/cd/E13222_01/wls/docs92/webapp/configureservlet.html

HUNTER, Jason; CROWFORD, William. Java Servlet Programming, O'Reilly, 1998.

DEITEL Paul; DEITEL Harvey. Java Como Programar. 8 ed. São Paulo: Pearson Prentice Hall, 2010.

Jornal PETNews - Edição: Jeymisson Oliveira - Revisão: Iago Araújo e Joseana Fechine
Grupo PET Computação UFCG, 2012. All rights reserved.