sábado, 15 de maio de 2010

Servlet API: Utilizando parâmetros de incialização

Olá Javeiros! Dando continuidade ao nosso estudo para a certificação SCWCD veremos neste post rápido como fazer para utilizar parâmetros de inicialização em nossa aplicação e também em um Servlet específico.

É possível adicionar parâmetros que são acessíveis por toda a aplicação. Muitos frameworks web fazem uso desse recurso. Digamos que a aplicação necessite enviar um email para o administrador reportando erros, se colocarmos o email do administrador no código da aplicação e este email sofra alguma mudança, será necessário gerar um novo arquivo de deploy da aplicação. Este problema pode ser resolvido adicionando um parâmetro de inicialização no arquivo descritor (web.xml), e dessa forma ele estará disponível para toda a aplicação.

Digite o trecho a seguir entre as tags web-app do seu arquivo descritor. 


A API de Servlet disponibiliza, através da interface ServletContext, métodos para acessar os parâmetros de inicialização. Existem dois métodos para tal:

  • Enumeration getInitParameterNames: Este método retorna uma enumeration contendo todos os nomes de parâmetros disponíveis no web.xml. Ele é muito útil quando não se sabe o nome do parâmetro.
  • String getInitParameter(String name): Este método retorna o valor (param-value) do parâmetro de inicialização. Vale lembrar que sempre é retornado uma String e nunca outro tipo como Integer, Long, etc.
No trecho de código abaixo podemos ver o uso desses métodos a partir de um servlet.


Quando o servlet for acessado ele irá exibir todos os parâmetros de inicialização disponíveis.
É possível também criar parâmetros de inicialização para Servlets, a diferença é que estes serão visíveis somente para os servlets onde foram declarados. O conceito é basicamente igual ao anterior, porém devemos atentar para as tags que criam cada um deles. No exemplo anterior nós colocamos a tag context-param na raiz do nosso descritor, já para os parâmetros de servlets iremos utilizar a tag init-param e esta deve ser declarada sobre a tag servlet (tag de declaração de um servlet).

O trecho abaixo mostra a criação de um parâmetro para um Servlet.









Veja que a única diferença para o exemplo anterior é a tag init-param. Outra mudança também é na forma como o parâmetro é acessado. Na verdade a mudança é no objeto em que ela é acessado, não mais o ServletContext e sim o próprio Servlet.

Vejamos abaixo o código que acessa os parâmetros do servlet:












Observe que o método getInitiParameterNames é chamado diretamente de Servlet e não mais do contexto como no exemplo anterior.

Então é isso pessoal. Espero que tenham gostado do post! Até o próximo então.

Nenhum comentário:

Postar um comentário