Spring MVC

Uso de Spring MVC en ataStore

Spring MVC

Uno de los componentes del framework Spring es el módulo Spring MVC

Paradigma MVC

El paradigma modelo-vista-controlador establece una forma de desarrollar aplicaciones basado en la estricta separación de la lógica de negocio y la presentación. De esta manera se puede trabajar en la presentación (plantillas HTML, JSP, etc.) más ágilmente.

Uno de los frameworks que más contribuyeron a extender la filosofía MVC es Struts.

Spring MVC es el módulo de Spring que implementa MVC. La documentación se encuentra en Spring MVC

Anotaciones de Spring MVC

En las últimas versiones de Spring MVC se usan anotaciones para configurar las clases. Veamos algunas de las anotaciones más usadas:

@Controller

Anotando una clase Java como @Controller se convierte en un controlador, es decir, en una clase encargada de recibir las peticiones HttpServletRequest.

@RequestMapping

Cada método que anotemos con @RequestMapping se asociará a determinada URL o patrón de URLs. También podemos especificar el método HTTP (GET o POST) al que responderá.

Veamos un ejemplo:

    @Controller
    public class ProductController {

        @RequestMapping("/productList*")
        public String list(...) {
            ...
        }

        @RequestMapping("/productCreate*")
        public String create(...) {
            ...
        }

        @RequestMapping(value = "/productSave", method = RequestMethod.POST)
        public String save(...) {
            ...
        }
    }

Más elementos de Spring MVC

El objeto Model

El objeto Model simplemente es un mapa donde guardaremos los objetos que queremos pasar a la vista (es la M de MVC).

Podemos tener acceso al objeto Model simplemente declarándolo en un método del controller.

    @RequestMapping("/productList*")
    public String list(Model model) {
        model.addAttribute("userName", "Johnny");
        model.addAttribute("today", Calendar.getInstance());
        ...
    }

Autobinding de los parámetros del request

Spring puede procesar los parámetros del request y crear automáticamente un objeto con ellos sin más que especificarle el objeto que queremos crear como parámetro de un método del controlador.

Por ejemplo:

    @RequestMapping("/productSave*")
    public String save(Product product) {
        ...
    }

Para que Spring sepa como rellenar el objeto deberán coincidir los nombres de los elementos del formulario HTML con los nombres de los campos de la clase Java.

URL al estilo REST

Spring nos facilita trabajar con URLs al estilo REST parseando las variables que contengan. Para ello debemos usar la anotación @PathVariable. Por ejemplo:

    @RequestMapping("/{lang}/productEdit/{productId}/*")
    public String edit(@PathVariable String lang, @PathVariable Long productId) {
        ...
    }

Interceptors

Un handler interceptor de Spring MVC es lo mismo que un ServletFilter, es decir, una clase que puede interceptar peticiones y respuestas, justo antes de que se produzcan, para modificarlas convenientemente.

Podemos definir nuevos interceptors en el archivo de configuración de Spring WEB-INF/spring/servlet-context.xml, bajo el elemento >

 


Volver