English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Anotações Servlet

Até agora, você já aprendeu como o Servlet usa o arquivo de descrição de deployment (web.xml) para deployar o aplicativo no servidor web.  API Servlet 3A versão 3.0 introduziu um novo pacote chamado javax.servlet.annotation. que oferece tipos de anotações que podem ser usados para anotar classes Servlet. Se usar anotações, não é necessário o arquivo de descrição de deployment (web.xml). Mas você deve usar tomcat7ou qualquer versão mais alta do tomcat.

As anotações podem substituir a configuração XML equivalente no arquivo de descrição de deployment web.xml, por exemplo, declarações de servlet e mapeamentos de servlet. O contêiner servlet processará classes anotadas durante a depuração.

Servlet 3O tipo de anotação introduzido na versão 3.0 é

Sr.No.Anotações e descrições
1

@WebServlet

Declara servlet

2

@WebInitParam

Especifica os parâmetros de inicialização

3

@WebFilter

Declara o filtro servlet

4

@WebListener

Declara WebListener

5

@HandlesTypes

Declara o tipo de classe que ServletContainerInitializer pode lidar.

6

@HttpConstraint

Esta anotação é usada na anotação ServletSecurity para representar as restrições de segurança a serem aplicadas a todos os métodos do protocolo HTTP, para os quais não há elementos HttpMethodConstraint correspondentes na anotação ServletSecurity.

7

@HttpMethodConstraint

Esta anotação é usada na anotação ServletSecurity para representar as restrições de segurança de mensagens específicas do protocolo HTTP.

8

@MultipartConfig

Anotação que pode ser especificada na classe Servlet, indicando que a instância do Servlet espera que os dados sejam conformes a multipart/Requisições com tipo MIME de dados de formulário.

9

@ServletSecurity

Esta anotação é usada para Servlet implementação de classe, para especificar as restrições de segurança que o container do Servlet aplica às mensagens do protocolo HTTP.

Já discutimos detalhadamente algumas anotações.

@WebServlet

@WebServlet é usado para declarar a configuração do Servlet com o container. A tabela a seguir contém a lista de propriedades usadas na anotação WebServlet.

Sr.No.Atributos e descrição
1

String name

Nome do Servlet

2

String[] value

Array de padrões de URL

3

String[] urlPatterns

Array de padrões de URL para este filtro de aplicação

4

Int loadOnStartup

O valor inteiro fornece uma sugestão de classificação de inicialização

5

WebInitParam[] initParams

Parâmetros de array de inicialização do Servlet

6

Boolean asyncSupported

Operações assíncronas suportadas pelo Servlet

7

String smallIcon

Pequeno ícone do Servlet, se houver

8

String largeIcon

Grande ícone do Servlet, se houver

9

String description

Descrição do Servlet, se existir

10

String displayName

Exibir o nome deste Servlet (se existir)

É necessário declarar pelo menos um padrão de URL na propriedade value ou urlPattern da anotação, mas não pode declarar ambas as propriedades ao mesmo tempo.

Quando a propriedade a ser configurada é o padrão de URL, é recomendável usar a propriedade value, senão deve usar a propriedade urlPattern.

Exemplo online

O exemplo a seguir descreve como usar a anotação @WebServlet. É um servlet simples que exibe o texto Hello servlet.

import java.io.IOException; 
import java.io.PrintWriter; 
import javax.servlet.ServletException; 
import javax.servlet.annotation.WebInitParam; 
import javax.servlet.annotation.WebServlet; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 
@WebServlet(value = "/Simple") 
public class Simple extends HttpServlet {
   private static final long serialVersionUID = 1L; 
   protected void doGet(HttpServletRequest request, HttpServletResponse response)  
      throws ServletException, IOException { 
   
      response.setContentType("text/html");   
      PrintWriter out = response.getWriter();   
      out.print("<html><body>");   
      out.print("<h3>Hello Servlet</h3>");   
      out.print("</body></html>");         
   }   
}

Compile Simple.java da maneira usual e coloque os arquivos de classe dentro de <tomcat-installationdirectory>/webapps/ROOT/WEB-INF/classes.

Agora, tente executar http://localhost:8080/Chame qualquer servlet simplesmente. Você verá a seguinte saída no web page.

Hello servlet

@WebInitParam

@WebInitParam anotação é usada para especificar parâmetros de inicialização para Servlet ou filtro. Ela é usada nas anotações WebFilter ou webevlet. A tabela a seguir contém a lista de propriedades usadas na anotação WebInitParam.

Sr.No.Atributos e descrição
1

String name

Nome do parâmetro de inicialização

2

String value

Valor do parâmetro de inicialização

3

String description

Descrição do parâmetro de inicialização

Exemplo online

@WebInitParam anotação é usada para especificar parâmetros de inicialização para Servlet ou filtro. Ela é usada nas anotações WebFilter ou webevlet. A tabela a seguir contém a lista de propriedades usadas na anotação WebInitParam.

import java.io.IOException; 
import java.io.PrintWriter; 
import javax.servlet.ServletException; 
import javax.servlet.annotation.WebInitParam; 
import javax.servlet.annotation.WebServlet; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse;
@WebServlet(value = "/Simple", initParams = { 
   @WebInitParam(name = "foo", value = "Hello "), 
   @WebInitParam(name = "bar", value = " World!") 
}) 
public class Simple extends HttpServlet {
   private static final long serialVersionUID = 1L; 
   protected void doGet(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {   
      
      response.setContentType("text/html");   
      PrintWriter out = response.getWriter();   
      out.print("<html><body>");   
      out.print("<h3>Hello Servlet</h3>");   
      out.println(getInitParameter("foo")); 
      out.println(getInitParameter("bar")); 
      out.print("</body></html>");         
   }   
}

Compile Simple.java da maneira usual e coloque os arquivos de classe dentro de <tomcat-installationdirectory>/webapps/ROOT/WEB-INF/classes.

Agora, tente executar http://localhost:8080/Chame qualquer servlet simplesmente. Você verá a seguinte saída no web page.

Hello Servlet
Hello World!

@Webfilter

Esta é a anotação usada para declarar o filtro servlet. Ele é processado pelo contêiner durante a deploy e aplica o filtro correspondente aos padrões de URL, servlets e tipos de dispatcher especificados.

@WebFilter anotação define o filtro da aplicação web. Esta anotação é especificada na classe e contém metadados sobre o filtro declarado. O filtro anotado deve especificar pelo menos um padrão de URL. A tabela a seguir lista os atributos usados na anotação WebFilter.

Sr.No.Atributos e descrição
1

String filterName

Nome do filtro

2

String[] urlPatterns

Fornecer o valor do filtro de aplicação ou o array de urlPatterns

3

DispatcherType[] dispatcherTypes

Especificar o agendador aplicável ao filtro (solicitação/Tipo da resposta)

4

String[] servletNames

Fornecer array de nomes de servlet

5

String displayName

Nome do filtro

6

String description

Descrição do filtro

7

WebInitParam[] initParams

Parâmetros de inicialização do filtro

8

Boolean asyncSupported

Operações assíncronas suportadas pelo filtro

9

String smallIcon

Ícone pequeno do filtro (se houver)

10

String largeIcon

Ícone grande do filtro (se houver)

Exemplo online

Abaixo está um exemplo de como usar a anotação @WebFilter. É um LogFilter simples, que exibe no console o Init param test param valor e o timestamp atual. Isso significa que o modo de operação do filtro é semelhante a uma camada de interface entre solicitação e resposta. Aqui usamos "/*”representa urlPattern. Isso significa que este filtro é aplicável a todos os servlets.

import java.io.IOException; 
import javax.servlet.annotation.WebFilter; 
import javax.servlet.annotation.WebInitParam; 
import javax.servlet.*; 
import java.util.*;  
//Implementar classe de filtro
@WebFilter(urlPatterns = {"/*}, initParams = { 
   @WebInitParam(name = "test-param", value = "Initialization Paramter")}) 
public class LogFilter implements Filter {
   
   public void init(FilterConfig config) throws ServletException { 
      // Obter parâmetro de inicialização
      String testParam = config.getInitParameter("test-param");
            
      //Imprimir parâmetro init
      System.out.println("Test Param: " + testParam);  
   } 
   public void doFilter(ServletRequest request, ServletResponse response,
      FilterChain chain) throws IOException, ServletException { 
	  
      //Grava o timestamp atual.
      System.out.println("Time " + new Date().toString());  
         
      //Passe a solicitação de volta à cadeia de filtros
      chain.doFilter(request,response); 
   }
   public void destroy( ) {
      /* Chame antes de excluir a instância do filtro
      Serviços fornecidos pelo contêiner web*/ 
   } 
}

Compile Simple.java da maneira usual e coloque os arquivos de classe dentro de <tomcat-installationdirectory>/webapps/ROOT/WEB-INF/classes.

Agora, tente executar http://localhost:8080/Chame qualquer servlet simplesmente. Você verá a seguinte saída no web page.

Hello Servlet
  
Hello World!

Agora, abra o console servlet. Lá, você encontrará os parâmetros de inicialização testparam e o timestamp atual junto com as mensagens de notificação servlet.