Pergunta

O que são Servlets?

Resposta

Conceitualmente falando, a web é uma imensa aplicação distribuída onde existem diversos servidores de conteúdo e clientes destes servidores que acessam seu conteúdo. Cada par servidor web - browser corresponde a um par cliente-servidor. O conteúdo das páginas da web pode ser estático ou dinâmico.

Quando o conteúdo é estático temos que os documentos HTML residentes no servidor que são simplesmente entregues aos clientes mediante sua requisição e renderizados nos clientes pelos próprios browsers

Quando o conteúdo é dinâmico temos que ele pode ser criado no próprio cliente, através do JavaScript, Dynamic HTML ou applets Java numa situação caracterizada como client-side ou client-end. O conteúdo dinâmico pode também ser criado do lado do servidor através de programas ou scripts CGI, applicações server-side e agora servlets.

Servlets são peças de código Java que operam do lado do servidor. Num certo sentido, enquanto as applets operam do lado do cliente, as servlets operam de forma complementar do lado do servidor, mas diferentemente das applets que não tem acesso aos recursos existentes na máquina do cliente, as servlets tem acesso aos mesmo recursos disponíveis para as aplicações server-side, isto é, acesso ao sistema de arquivos, bancos de dados locais ou outras conexões de rede.

As servlets oferecem vantagens substanciais em termos de performance pois podem permanecer ativas continuamente eliminando o overhead imposto pela carga dos programas CGI a cada solicitação de serviços. Outra vantagem óbvia é a questão da portabilidade, apontando para um largo uso das servlets num futuro próximo.

Abaixo um pequeno exemplo de uma servlet, apenas para ilustrar a facilidade oferecida na programação de aplicações server-side através do Java. No exemplo a servlet escreve apenas o texto "Obrigado pela Visita!" quando um cliente aciona a servlet:

import java.io.*;

// Pacote servlet (requer JDK1.2 or JSWDK-JavaServer Web Development Kit)
import javax.servlet.*;
import javax.servlet.http.*;

public class PrimeiraServlet extends HttpServlet {
  // Método doGet é overhided em HttpServlet para
  // prover suport customizado para o método GET do http
  public void doGet (HttpServletRequest req, HttpServletResponse res)
                    throws ServletException, IOException {
    res.setContentType("text/plain");
    ServletOutputStream out = res.getOutputStream();
    out.println ("Obrigado pela Visita!");
    out.flush();
  }

  public String getServletInfo() {
    return "PrimeiraServlet";
  }
}

Quando acionada pelo cliente esta servlet envia como resposta uma mensagem MIME com tipo text/plain, contendo uma única linha de texto. Para realizar este teste é necessário instalar a servlet num servidor web compatível com servlets acionando-a tal como um programa CGI comum. Atualmente muitos servidores suportam as servlets incluindo o Apache (TomCat), o O'Reilly's WebSite e o Sun JavaWebServer

Mais informações sobre servlets, incluindo exemplos acompanhados do código fonte podem ser obtidos em: