Análise dos Princípios e Configuração de Mapeamento em Servlets

Princípios de Funcionamento dos Servlets

Servlets são componentes de servidor gerenciados por um contêiner web. Quando o servidor recebe uma requisição do navegador, ele a encaminha para o Servlet correspondente, que processa a lógica e gera uma resposta.

Configuração de Mapeamento de Requisições

O mapeamento define como as URLs são associadas aos Servlets no arquivo de configuração web.xml. Abaixo estão diversas abordagens para configurar esses mapeamentos.

1. Caminho Único de Mapeamento

Associa um Servlet a uma URL específica.

<servlet-mapping>
    <servlet-name>meuServico</servlet-name>
    <url-pattern>/servico1</url-pattern>
</servlet-mapping>

2. Múltiplos Caminhos de Mapeamento

Um único Servlet pode responder a várias URLs.

<servlet-mapping>
    <servlet-name>meuServico</servlet-name>
    <url-pattern>/servico1</url-pattern>
</servlet-mapping>
<servlet-mapping>
    <servlet-name>meuServico</servlet-name>
    <url-pattern>/servico2</url-pattern>
</servlet-mapping>
<servlet-mapping>
    <servlet-name>meuServico</servlet-name>
    <url-pattern>/servico3</url-pattern>
</servlet-mapping>

3. Mapeamento Genérico com Caractere Curinga

Utiliza o caratcere * para capturar URLs que correspondam a um padrão.

<servlet-mapping>
    <servlet-name>meuServico</servlet-name>
    <url-pattern>/servico/*</url-pattern>
</servlet-mapping>

4. Caminhos de Solicitação Padrão

Um Servlet pode ser definido como o manipulador padrão para requisições não correspondidas, substituindo o tratamento padrão do servidor.

5. Especificação de Prefixos ou Sufixos

Permite mapear Servlets com base em extensões de arquivo ou prefixos de URL.

<servlet-mapping>
    <servlet-name>processador</servlet-name>
    <url-pattern>*.acao</url-pattern>
</servlet-mapping>

Nota: O caractere curinga não deve ser precedido por uma barra / quando usado com sufixos.

6. Personalização da Página de Erro 404

Um Servlet customizado pode ser configurado para tratar requisições não encontradas.

package com.exemplo.web;

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

public class ManipuladorErro extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest pedido, HttpServletResponse resposta) throws IOException {
        resposta.setContentType("text/html");
        resposta.setCharacterEncoding("UTF-8");
        PrintWriter escritor = resposta.getWriter();
        escritor.println("<h1>Erro 404: Recurso não localizado.</h1>");
    }

    @Override
    protected void doPost(HttpServletRequest pedido, HttpServletResponse resposta) throws IOException {
        doGet(pedido, resposta);
    }
}

Registro no web.xml:

<servlet>
    <servlet-name>erro404</servlet-name>
    <servlet-class>com.exemplo.web.ManipuladorErro</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>erro404</servlet-name>
    <url-pattern>/*</url-pattern>
</servlet-mapping>

7. Prioridade de Mapeamento

Caminhos de mapeamento específicos têm prioridade sobre padrões genéricos. Se uma URL não corresponder a nenhum mapeamento definido, o servidor recorre ao mapeamento padrão configurado.

Tags: Servlets Java EE Mapeamento de URLs Configuração Web XML

Publicado em 6-5 03:12 por Thomas