O Spring MVC é o componente web do framework Spring. Ele fornece uma rica funcionalidade para construir aplicações Web robustas. O framework Spring MVC é projetado de tal forma que cada pedaço da lógica e da funcionalidade é altamente configurável. Além disso, o Spring pode ser integrado sem esforço adicional com outros frameworks para Web populares como Struts, WeBWork, Java Server Faces e Tapestry. Isso significa que você pode instruir o Spring a usar qualquer um desses frameworks. Mais que isso, o Spring não é fortemente associado com Servlets ou JSPs para renderizar sua Visão aos Clientes. Integração com outras tecnologias de Visualização como Velocity, Freemarker, Excel ou PDF também são possíveis.
No Spring MVC você pode usar qualquer objeto como comando ou forma de apoio; você não precisa implementar uma interface específica de um framework. A ligação de dados do Sptring é extremamente flexível: por exemplo, ele trata troca de tipos como erros de validação que podem ser tratados pela aplicação, não como erros de sistema. Assim você não precisa duplicar as suas propriedades dos objetos do negócio, usar strings genéricas em seus objetos de formulários simplesmente para manipular submissões inválidas, ou para converter as Strings adequadamente. Ao invés disso, é frequentemente preferível fazer ligações diretas com seus objetos de negócio.
Ciclo de vida do processamento de requisições
O framework Spring MVC é, como muitos outros fameworks web MVC, direcionado por requisições, projetado em torno de um servlet central que dispara requisições à controladores e oferece outras funcionalidades que facilitam o desenvolvimento de aplicações web. O DispatcherServlet
do Spring é completamente integrado ao contêiner IoC do Sptring e permite que usemos todos os outros recursos do Spring.
A seguir, o ciclo de vida do processamento de requisições do Spring 3.0 MVC:
- O cliente envia uma requisição ao contêiner web na forma de uma requisição http (http request).
- Essa requisição de entrada é inteceptada pelo Front controller (DispatcherServlet) que tenta localizar um apropriado Handler Mappings.
- Com a ajuda do Handler Mappings, o DispatcherServlet irá disparar a requisição para o Controller apropriado.
- O Controller tenta processar a requisição e retorna o objeto Model and View na forma de uma instância de ModelAndView para o Front Controller.
- O Front Controller então tenta determinar a Visão (que pode ser um JSP, Freemarker, Velocity etc) através da consulta ao objeto View Resolver.
- A visão selecionada é renderizada de volta para o cliente.
Recursos do Spring 3.0
- O framework Spring 3.0 suporta o Java 5. Ele fornece suporte a configuração baseado em anotações (annotation). Recursos do Java 5 como generics, annotations, varargs etc também podem ser usados no Spring.
- Uma nova linguagem de expressão chamada Spring Expression Language SpEL foi introduzida. A linguagem Spring Expression Language pode ser usada quando for definir XMLs e definições de bean baseados em anotações.
- O framework Spring 3.0 suporta serviços web REST.
- Formatação de dados nunca foi tão fácil. O Spring 3.0 suporta formatação baseada em anotações. Podemos usar agora as anotações @DateFimeFormat(iso=ISO.DATE) e @NumberFormat(style=Style.CURRENCY) para converter formatos de data e moeda.
- O Spring 3.0 passou a suportas o JPA 2.0.
Configurando o Spring 3.0 MVC
O ponto de partifa do Spring 3.0 MVC é o DispatcherServlet
. O DispatcherServlet é uma classe de servlet comum que implementa a classe base HttpServlet
. Assim precisamos configura-la no arquivo web.xml
.
< web-app > < servlet > < servlet-name >example</ servlet-name > < servlet-class >org.springframework.web.servlet.DispatcherServlet</ servlet-class > < load-on-startup >1</ load-on-startup > </ servlet > < servlet-mapping > < servlet-name >example</ servlet-name > < url-pattern >*.html</ url-pattern > </ servlet-mapping > </ web-app > |
No pedaço de código acima, configuramos o DispatcherServlet no aquivo web.xml. Obsrve que mapeamos o padrão de URL *.html com o nosso DispatcherServlet exemplo. Assim qualquer URL com o padrão *.html irá chamar o Front Controller do Spring MVC.
Uma vez que o DispatcherServlet for inicializado, irá procurar por arquivos nomeados como [servlet-name]-servlet.xml
na pasta WEB-INF de nossa aplicação web. No exemplo acima, o framework irá procurar por um arquivo chamado example-servlet.xml
.
Observe o diagrama acima. O item WebApplicationContext
especificado nele é uma extensão de ApplicationContext
com alguns recursos extras necessários para aplicações web. O WebApplicationContext é capaz de determinar temas e também se associa com seu servlet correspondente. Ele se conecta ao ServletContext, e através do uso de métodos estáticos da classe RequestContextUtils você sempre pode encontrar WebApplicationContext.
Seguindo adiante
Agora que temos uma ideia geral sobre a arquitetura do framework Spring 3.0 MVC e seu ciclo de vida, no próximo artigo iremos criar uma aplicação Hello World com o Spring 3.0 MVC do zero.
Traduzido de viralpatel.net