CodeGym/Cursos Java/Módulo 3/Personalizando aplicativos da Web com anotações

Personalizando aplicativos da Web com anotações

Disponível

8.1 Introdução às anotações do servlet

A partir da versão 7, o Tomcat começou a oferecer suporte à especificação de servlet da Web Servlet API 3.0 . Em particular, um pacote apareceu nele chamado javax.servlet.annotation. Ele contém vários tipos de anotações que podem ser usadas para anotar uma classe de servlet. Se você usar uma anotação, o descritor de implementação (web.xml) não será necessário.

Lista das anotações mais úteis:

anotação Descrição
1 @WebServlet Declara um servlet
2 @WebInitParam Especifica um parâmetro de inicialização
3 @WebFilter Declara um filtro da web
4 @WebListener Declara o lisener da web
5 @ServletSecurity Permite definir configurações de segurança

Exemplo:

@WebServlet( urlPatterns = {"/api/*"} )
public class Example extends HttpServlet {
    protected void doGet( HttpServletRequest request, HttpServletResponse response) throws Exception {
         response.setContentType("text/html");
         PrintWriter out = response.getWriter();
         out.println("Hello World!");
    }
}

Uma anotação é suficiente para declarar um servlet e mapeá-lo para atender todas as requisições que chegarão à URL fornecida pelo /api/*.

8.2 Configurando o mapeamento do servlet

A anotação tem @WebServletmuitos parâmetros que permitem uma configuração muito flexível do servlet que ela descreve. Vejamos os principais:

Atributo Descrição
1 name Nome exclusivo do servlet (como em web.xml)
2 displayName Nome do servlet legível por humanos
3 description Descrição do servlet
4 value Define a url para mapeamento
5 urlPatterns Especifica uma lista de URLs para mapear (usado em vez de valor)
6 initParams Permite definir os parâmetros de inicialização do servlet
7 asyncSupported Especifica que o servlet pode ser executado de forma assíncrona (HTTP/2)
8 loadOnStartup Número de sequência para controlar a prioridade de início do servlet
9 smallIcon Define um pequeno ícone de servlet
10 largeIcon Define um grande ícone de servlet

Há vários pontos interessantes aqui.

Primeiro, observe que valuee urlPatternssão atributos intercambiáveis. Ambos permitem que você especifique uma lista de URLs para os quais o servlet deve mapear.

Em segundo lugar, o parâmetro asyncSupportedindica se o servlet processará corretamente as solicitações assíncronas no protocolo HTTP/2.

E o terceiro atributo importante é initParams, ele permite definir uma lista de parâmetros que serão colocados no ServletContext.

Exemplo:

@WebServlet(
        urlPatterns = {"/sendFile", "/uploadFile"},
        loadOnStartup = 1,
        asyncSupported = true,
        initParams = {
            @WebInitParam(name = "saveDir", value = "c:/uploaded"),
            @WebInitParam(name = "allowedTypes", value = "jpg,gif,png")
        }
)
public class ImageUploadServlet extends HttpServlet {

    public void doGet(HttpServletRequest request, HttpServletResponse response) throws Exception {
        String saveDir = getInitParameter("saveDir");
        String fileTypes = getInitParameter("allowedTypes");

        PrintWriter writer = response.getWriter();

        writer.println("saveDir = " + saveDir);
        writer.println("fileTypes = " + fileTypes);
    }
}

8.3 Configurando o mapeamento do filtro

Conforme mencionado acima, os filtros são um tipo utilitário de servlets e são configurados como servlets. Aqui estão os atributos que uma anotação tem @WebFilter:

Atributo Descrição
1 filterName Nome exclusivo do filtro (como em web.xml)
2 displayName Nome do filtro legível por humanos
3 description Descrição do filtro
4 value / urlPatterns Define uma lista de URLs para mapear
5 dispatcherTypes Especifica uma lista de DispatcherTypes
6 servletNames Especifica uma lista de servlets aos quais aplicar
7 initParams Permite definir os parâmetros iniciais do filtro
8 asyncSupported Especifica que o filtro pode ser executado de forma assíncrona (HTTP/2)
9 smallIcon Define um pequeno ícone de filtro
10 largeIcon Define um grande ícone de filtro

Um exemplo de filtro que intercepta todas as solicitações para servlets específicos :

@WebFilter(servletNames = {"MyOwnServlet", "UploadServlet"})
public class MyFilter implements Filter {
    // implements Filter's methods here...
}

Um exemplo de um filtro com vários parâmetros :

@WebFilter(
        urlPatterns = "/uploadFilter",
        initParams = @WebInitParam(name = "fileTypes", value = "doc;xls;zip;txt;jpg;png;gif")
)
public class UploadFilter implements Filter {
    // implements Filter's methods here...
}

Um exemplo de um tipo de filtro fornecido para RequestDispatcher :

@WebFilter(
        urlPatterns = "/admin",
        dispatcherTypes = {DispatcherType.REQUEST, DispatcherType.FORWARD}
)
public class MyFilter implements Filter {
    // implements Filter's methods here...
}

Você aprenderá mais sobre a finalidade dos filtros e servlets nas aulas a seguir.

Comentários
  • Populares
  • Novas
  • Antigas
Você precisa acessar para deixar um comentário
Esta página ainda não tem nenhum comentário