Desvendando os Servlets 3.0 - Java Magazine 81
Apresentação das novidades mais significativas introduzidas na nova versão da especificação de servlets, a 3.0. Cada uma das funcionalidades é explicada em detalhes, fazendo um comparativo com o que existia na versão anterior da especificação.
Atenção: esse artigo tem um vídeo complementar. Clique e assista!
Apresentação das novidades mais significativas introduzidas na nova versão da especificação de servlets, a 3.0. Cada uma das funcionalidades é explicada em detalhes, fazendo um comparativo com o que existia na versão anterior da especificação.
Para que serve:
Este artigo serve para desenvolvedores que têm interesse em conhecer as novidades na nova especificação de Servlets, que visam melhorar a experiência no desenvolvimento de aplicações.
Em que situação o tema é útil:
Os desenvolvedores que desejam conhecer a nova especificação de servlets encontrarão neste artigo uma descrição detalhada com exemplos acerca das novas funcionalidades disponíveis.
Servlets 3.0: O que há de novo?:
O lançamento do Java EE 6 trouxe consigo a nova especificação de Servlets 3.0. Diversas mudanças ocorreram, desde a possibilidade de configurar servlets via annotations até o suporte de chamadas assíncronas. Este artigo aborda estas mudanças em detalhes.
Em novembro de 2009 a Sun lançou a nova versão do Java EE (Enterprise Edition). Batizada de Java EE 6, esta versão trouxe um grande número de mudanças significativas nas mais diversas especificações que compõem a plataforma. Uma destas especificações é a JSR 315, que define a versão 3.0 dos servlets.
Os servlets estão presentes no Java EE há bastante tempo. Quem começou a trabalhar com eles há alguns anos certamente não notou grandes mudanças neste período. Na prática, pouca coisa foi modificada até a versão 2.5, que era a versão que vigorava até o ano passado. Agora, com a introdução da versão 3.0, a Sun procurou adicionar alterações que mudaram a forma de trabalhar com os servlets, facilitando a sua configuração e aumentando a produtividade do desenvolvedor.
Mesmo depois do aparecimento destas novidades, vale ressaltar que ainda é possível usar os servlets da forma como você já está habituado. A nova versão da especificação abre novas possibilidades, mas, ao mesmo tempo, mantém a compatibilidade com versões anteriores.
Este artigo abordará as principais mudanças na especificação, que são o suporte à configuração usando annotations, carregamento em tempo de execução e chamadas assíncronas a servlets.
Até o momento, apenas o servidor de aplicações GlassFish 3.0, que é a implementação de referência da Sun, suporta o Java EE 6 na sua totalidade.
Configurando servlets através do uso de annotations
Até a especificação 2.5, a criação de um servlet obrigava o desenvolvedor a criar a sua classe (que estende de HttpServlet) e configurá-lo corretamente no arquivo web.xml. A Listagem 1 mostra um exemplo de classe de um servlet, enquanto a Listagem 2 mostra como configurar, no web.xml, o servlet criado. De acordo com a configuração, ProcessarServlet é mapeado para /Processar.
Na nova versão da especificação, é possível utilizar annotations em substituição às configurações anteriormente feitas no arquivo web.xml. Isto simplifica o processo, uma vez que todas as informações necessárias podem ficar restritas à classe do servlet. A Listagem 3 mostra o mesmo ProcessarServlet, mas agora usando annotations.
No Java EE 6, o web.xml é um arquivo de uso opcional ao desenvolver aplicações web.
A annotation @WebServlet deve ser utilizada para configurar o servlet. No exemplo apresentado, o atributo urlPatterns foi utilizado para indicar o padrão de URL que deverá ser mapeado para o servlet. Ele permite também a definição de mais de um pattern, o que representa, na prática, que você pode delegar a um servlet o atendimento de requisições que usam diversos padrões de URL. A vantagem desta abordagem é que você centraliza suas operações em apenas um objeto e, dependendo da requisição feita, pode tratá-la de forma adequada.
A annotation @WebServlet também possui outros atributos, como name (para definir um nome para o servlet), description (para definir uma descrição), asyncSupported (para suporte a servlets assíncronos, que serão abordados mais adiante) e initParams.
O atributo initParams merece um destaque especial, pois possibilita que sejam fornecidos parâmetros ao servlet, os quais podem ser recuperados posteriormente através da chamada getServletConfig().getInitParameter(). Utilizar a passagem de parâmetros é interessante para tirar do código-fonte determinada informação que pode sofrer alteração com o passar do tempo. A definição de cada um dos parâmetros é feita através da annotation @WebInitParam. A Listagem 4 mostra como definir um parâmetro chamado msg e acessá-lo a partir do código do servlet.
Sempre que uma mesma configuração for feita através de annotations e no arquivo web.xml, o que está definido no arquivo possui precedência.
Listagem 1. Implementando o servlet.
package servlet;
public class ProcessarServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
PrintWriter out = response.getWriter();
out.print("<HTML><H1>Servlet de processamento</H1></HTML>");
out.close();
}
}"
Artigos relacionados
-
Artigo
-
Artigo
-
Artigo
-
Artigo
-
Artigo