Spring MultiActionControler

Spring MultiActionControler

Uso de la clase MultiActionController en
Spring, puede agrupar acciones relacionadas en un solo controlador. El método de control para cada acción debe estar en el siguiente formulario.

public (ModelAndView | Map | String | void) nombreAccion(HttpServletRequest, HttpServletResponse [,HttpSession] [,CommandObject]);

Para agrupar varias acciones de su clase controladora debe extender la clase MultiActionController. Aquí la clase UserController extiende la clase MultiActionController y contiene el método add () y el método remove () como se muestra a continuación.

package com.amalakaky.web;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.multiaction.MultiActionController;
public class UserController extends MultiActionController {
    // Metodo que añade la llamada
    public ModelAndView add(HttpServletRequest request,
            HttpServletResponse response) throws Exception {
        System.out.println(“Llamada al método agregada”);
        return new ModelAndView(“user”, “message”, “Llamada al método agregada”);
    }    
    //Metodo que borra la llamada
    public ModelAndView remove(HttpServletRequest request,
            HttpServletResponse response) throws Exception {
        System.out.println(“Llamada a método borrada “);
        return  new ModelAndView(“user”, “message”, “Llamada a método borrada”);
    }

}

Aquí se utiliza el Bean NameUrlHandlerMapping para asignar la URL de la petición. El archivo de configuración bean de Spring se muestra a continuación.

<?xml
version=“1.0”
encoding=“UTF-8”?>

<beans
xmlns=http://www.springframework.org/schema/beans&#8221;

    xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance&#8221;

    xmlns:p=http://www.springframework.org/schema/p&#8221;

    xsi:schemaLocation=http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd&#8221;>

    <bean
id=“viewResolver”
class=“org.springframework.web.servlet.view.InternalResourceViewResolver”
p:prefix=“/WEB-INF/jsp/”
p:suffix=“.jsp”
/>

    

    <bean
name=“/user/*.htm”
class=“com.amalakaky.web.UserController”
/>

</beans>

Así que para asignar múltiples acciones, se utiliza el carácter de asterisco *. Todo lo que coincide con el carácter asterisco se considera como el nombre de método de la clase UserController.

En la página redirect.jsp tenemos dos urls uno para llamar al método add () y el otro para llamar al método remove ().

redirect.jsp

<%@page
contentType=“text/html”
pageEncoding=“UTF-8”%>

<a
href=“user/add.htm”
>Añadir</a>
<br>

<a
href=“user/remove.htm”
>Borrar</a>

Puedes descargar el ejemplo desde aqui:

Descargar

Ahora Vamos a ver como se hace lo mismo pero con las anotaciones de Spring.

Para agrupar las acciones relacionadas en un solo controlador mediante anotaciones de Spring usar la anotación @RequestMapping a nivel de método y @Controller a nivel
de clase quitando el extends MultiActionController
de clase.

En la clase UserController con el método add () y retire los parámetros del método (HttpServletRequest request,HttpServletResponse response) throws Exception) como se muestra a continuación.

package com.amalakaky.web;

import org.springframework.stereotype.Controller;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.servlet.ModelAndView;

@Controller

public
class UserController {

    

    @RequestMapping(“/user/add.htm”)

    public ModelAndView add() {

        System.out.println(“Llamada al método agregada”);

        return
new ModelAndView(“user”, “message”, “Llamada al método agregada”);

    }

    

    @RequestMapping(“/user/remove.htm”)

    public ModelAndView remove() {

        System.out.println(“Llamada a método borrada”);

        return
new ModelAndView(“user”, “message”, “Llamada a método borrada”);

    }

}

Para hacer frente a la acción múltiple en un solo controlador, que es el único cambio que tiene que hacer. En la página redirect.jsp tenemos dos urls uno para llamar al método add () y el otro para llamar al método remove ().

En el archivo de configuración de Spring tendremos el siguiente código.

<?xml
version=“1.0”
encoding=“UTF-8”?>

<beans
xmlns=http://www.springframework.org/schema/beans&#8221;

    xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance&#8221;
xmlns:p=http://www.springframework.org/schema/p&#8221;

    xmlns:context=http://www.springframework.org/schema/context&#8221;

    xsi:schemaLocation=http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd

        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd&#8221;>

    

    <bean
id=“viewResolver”
class=“org.springframework.web.servlet.view.InternalResourceViewResolver”
p:prefix=“/WEB-INF/jsp/”
p:suffix=“.jsp”
/>


<context:component-scan
base-package=“com.amalakaky.web”
/>

</beans>

Puedes descargar el ejemplo desde aqui:

Descargar

Anuncios
Minientrada | Esta entrada fue publicada en Spring. Guarda el enlace permanente.

Responder

Por favor, inicia sesión con uno de estos métodos para publicar tu comentario:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s