Usando um engenho de servlets

A implantação de um servidor Web usando servlets passa pela instalação de um engenho para redirecionar requisições HTTP a classes Java.

Para as atividades práticas deste material, a opção recaiu sobre o engenho Tomcat (versão 4.0 ou superior). Os passos a seguir referem-se à implantação de servlets em Tomcat, assumindo que este esteja instalado em um diretório aqui referenciado como $CATALINA_HOME.

Servlets são agrupados em aplicações Web (webapps), que por sua vez são alocadas a subdiretórios de $CATALINA_HOME/webapps. Por exemplo, para registrar o OiHttpServlet como parte da aplicação local, é preciso criar um diretório $CATALINA_HOME/webapps/local.

Após a codificação de sua classe estendendo HttpServlet e o código ter sido compilado (eventualmente incluindo, se necessário, $CATALINA_HOME/common/lib/servlet.jar na variável de ambiente CLASSPATH), é preciso alocar o código do servlet na estrutura de diretórios da aplicação local. Essa estrutura contém pelo menos os seguintes componentes:

Para o exemplo, o conteúdo do arquivo web.xml seria

<?xml version="1.0" encoding="ISO-8859-1"?>

<!DOCTYPE web-app
    PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
    "http://java.sun.com/dtd/web-app_2_3.dtd">

<web-app>
<servlet>
 <servlet-name>Oi</servlet-name>
 <servlet-class>OiHttpServlet</servlet-class>
</servlet>
<servlet-mapping>
 <servlet-name>Oi</servlet-name>
 <url-pattern>/Oi</url-pattern>
</servlet-mapping>
</web-app>
    

Esse arquivo determina que a aplicação Web (elemento web-app) contém um servlet (elemento servlet) cujo nome é Oi (elemento servlet-name) e está mapeado para a classe OiHttpServlet (elemento servlet-class); se o servlet fosse parte de um pacote abc.xyz, então o conteúdo deste elemento seria abc.xyz.OiHttpServlet e o arquivo OiHttpServlet.class estaria no subdiretório $CATALINA_HOME/webapps/local/WEB-INF/classes/abc/xyz.

O elemento servlet-mapping determina como o servlet definido anteriormente será referenciado pelo cliente na requisição HTTP; neste caso, o elemento url-pattern indica que será usada o URL "Oi" sob o diretório da aplicação. Assim, quando o cliente (navegador) solicitar o URL

   http://nome_servidor:8080/local/Oi
    

o método doGet() de OiHttpServlet será ativado para gerar a resposta. (A porta 8080 é o padrão utilizado por Tomcat.)