InicioApuntes Y MonografiasIntroducción a Spring Web MVC
Framework Web MVC
Introducción al Framework Spring Web MVC

El framework Spring Web modelo-vista-controlador (MVC) está diseñado alrededor de un DispatcherServlet que asigna peticiones a los manejadores, con handler mappings(bean especial de spring que mapea peticiones a manejadores)configurables, resolución de vistas, manejo de idioma, zona horaria y resolución de temas así apoyo para la carga de archivos. El manejador por default está basado en las anotaciones @Controller y @RequestMapping, ofreciendo una amplia gama de flexibles métodos handler. Con la introducción de Spring 3.0, el mecanismo @Controller también permite crear sitios y aplicaciones Web RESTful (REST es una técnica de arquitectura software), por medio de la anotación @PathVariable y otras características.
“Abierto para extensión…” Un principio clave de diseño en Spring Web MVC y en Spring en general es el principio: “Abierto para extensión, cerrado para modificación”.
Algunos métodos en las clases core de Spring Web MVC son marcadas como final. Como desarrollador no podrás sobrescribir esos métodos para suministrar comportamiento personalizado. Esto no se ha hecho de manera arbitraria, sino específicamente con este principio en mente.
Para una explicación de este principio, referirse a Expert Spring Web MVC and Web Flow de Seth Ladd y otros; específicamente ver la sección “Una mirada al diseño” en la página 11 de la primera edición. Alternativamente, ver
•Bob Martin, The Open-Closed Principle (PDF)
No puedes agregar asesoramiento a métodos final cuando usas Spring MVC. Por ejemplo, no puedes agregar comportamiento a el método AbstractController.setSynchronizeOnSession(). Referir a la sección “Entendiendo proxies AOP” para más información sobre proxis AOP y porque no puedes agregar comportamiento a métodos final.

17.3 Implementando Controladores

Los controladores proporcionan acceso al comportamiento de la aplicación que típicamente se define a través de una interfaz de servicio. Los controladores interpretan las entradas de los usuarios y transforman en un modelo que se representa al usuario por la vista. Spring implementa un controlador en una forma muy abstracta, la cual te permite crear una variedad muy grande de controladores.
Spring 2.5 introdujo un modelo de programación basado en anotaciones para controladores MVC que usan anotaciones tales como @RequestMapping, @RequestParam, @ModelAttribute, y muchas más. Este soporte de anotaciones está disponible para Servlet MVC y Portlet MVC. Los controladores implementados con este estilo no tienen que extender ninguna clase ni implementar alguna interfaz especifica. Además, usualmente estos controladores no tienen dependencias directas hacia los APIs Servlet o Portlet, aunque usted puede fácilmente configurar acceso a las bondades de Servlet o Portlet.
Nota: En spring-projects Org on Github están disponibles varias aplicaciones web que aprovechan el soporte de anotaciones que se describe en esta sección incluyendo MvcShowcase, MvcAjax, MvcBasic, PetClinic, PetCare, además de otras.

Como se puede ver, las anotaciones @Controller y @RequestMapping permiten nombres de métodos y firmas flexibles. En este ejemplo en particular el método recibe un Model y regresa un nombre de vista en un String, pero se pueden utilizar varios tipos de parámetros y retorno como se explicara en una sección posterior. Las anotaciones @Controller y @RequestMapping entre otras forman la base de la implementación Spring MVC. Esta sección documenta estas anotaciones y como ellas son las más comúnmente utilizadas en un ambiente Servlet.

17.3.1 Definiendo un controlador con @Controller

La anotación @Controller indica que una clase particular tiene el rol de controlador. Spring no requiere que extiendas ninguna clase base controlador o referencia al API Servlet. Sin embargo, si las necesitas puedes referir a las características específicas del Servlet.
La anotación @Controller actúa como un estereotipo de la clase anotada, indicando su función. El dispatcher lee estas clases anotadas buscando métodos mapeados y detecta anotaciones @RequestMapping (ver la sección siguiente).
Se puede definir explícitamente beans Controller anotados, usando la definición estándar de Spring bean en el contexto del dispatcher. Sin embargo, el estereotipo @Controller también permite la detección automática, alineado con el soporte general de spring para detectar clases component en el classpath y registrar automáticamente definiciones de sus beans internos.
Para habilitar la detección automática de dichos controladores anotados, puedes agregar el elemento component-scan a tu configuración. Usa el esquema spring-context como se muestra en el siguiente extracto de XML:

17.3.2 Mapear Request con @RequestMapping

Utiliza la anotación @RequestMapping para mapear URLs, por ejemplo: /appointments, sobre toda la clase o sobre un método handler especifico. Típicamente las anotaciones a nivel de clase mapean un path de request especifico (o un patrón de path) sobre un form controller, con anotaciones adicionales a nivel de método se reduce el mapeo principal para un tipo de método HTTP especifico (“GET”,”POST”, etc.) o un parámetro condicional de un request HTTP.
El siguiente ejemplo del proyecto “Petcare” muestra un controlador en una aplicación Spring MVC que usa esta anotación:

En el ejemplo, @RequestMapping es utilizado en varios lugares. La primera vez se utiliza a nivel clase, esto indica que en este controlador todos los métodos son relativos a el path /appointments. El método get() va mas allá: solamente acepta request GET, significa que en un GET HTTP con el path /appointments se invocara a este método. El método add() tiene una especialización similar, y el getNewForm() combina la definición de un método HTTP y el path, de tal forma que request GET para appointments/new son procesadas por este método.
El método getForDay() muestra otra utilización de @RequestMapping: URI templates. (ver la sección siguiente).
Un @RequestMapping a nivel de clase no es obligatorio. Sin él, todos los paths son simplemente absolutos, no relativos. El siguiente ejemplo del proyecto “PetClinic” muestra un controlador multi-acción utilizando @RequestMapping:

El ejemplo anterior no especifica GET vs. PUT, POST, y así sucesivamente, porque @RequestMapping mapea todos los métodos HTTP por default. Utilizar @RequestMapping(method=GET) para filtrar mas el procesamiento de los request.
Datos archivados del Taringa! original
2puntos
617visitas
0comentarios
Actividad nueva en Posteamelo
0puntos
2visitas
0comentarios
Dar puntos:

Dejá tu comentario

0/2000

Autor del Post

H
HuetzinCL🇦🇷
Usuario
Puntos0
Posts2
Ver perfil →
PosteameloArchivo Histórico de Taringa! (2004-2017). Preservando la inteligencia colectiva de la internet hispanohablante.

CONTACTO

18 de Septiembre 455, Casilla 52

Chillán, Región de Ñuble, Chile

Solo correo postal

© 2026 Posteamelo.com. No afiliado con Taringa! ni sus sucesores.

Contenido preservado con fines históricos y culturales.