Controller con Spring usando anotaciones

De Dos Ideas.
Revisión del 13:15 30 dic 2009 de 201.251.182.130 (discusión) (Configuración del nombreController-servlet.xml)
Saltar a: navegación, buscar

Spring 2.5 y Spring 3 nos permiten la creación de Controllers mediante anotaciones. Mostraremos un sencillo ejemplo utilizando Spring 3.

Ejemplo

Creación del controller

package com.dosideas.web.controller;

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

@Controller public class PruebaController {

   @RequestMapping(value="/unMetodo.htm")
   public String imprimirDosIdeas() {
       System.out.println("www.dosideas.com");
       return "index";
   }

}

Lo que hacemos en la creación del controller es agregar la anotación @Controller, que indica que dicha clase es un controller. Además, antes del método agregamos la anotación @RequestMapping con un valor. Dicho valor tendrá que ver con el url al que tendremos que dirigirnos para ejecutar el método del controller. Por último en el controller, estamos retornando un String (en este caso "index"). Ese String corresponde al nombre del .jsp (que se encuentra en WEB-INF/jsp) al que queremos que se redirija la página una vez que se ejecute el método.

Configuración del web.xml

<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

   <servlet>
       <servlet-name>pruebaController</servlet-name>
       <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
       <load-on-startup>1</load-on-startup>
   </servlet>
   <servlet-mapping>
       <servlet-name>pruebaController</servlet-name>
       <url-pattern>*.htm</url-pattern>
   </servlet-mapping>
   <session-config>
       <session-timeout>30</session-timeout>
   </session-config>

</web-app>

Configuración del nombreController-servlet.xml

El nombre de este archivo debe ser el mismo que se configuró en el web.xml en el tag <servlet-name>. Como nosotros le pusimos pruebaController, quedará pruebaController-servlet.xml :)

<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:p="http://www.springframework.org/schema/p" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd">

   <context:component-scan base-package="com.dosideas.web.controller"/>
 <bean
class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"/>
   <bean
class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"/>


   <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"

p:prefix="/WEB-INF/jsp/" p:suffix=".jsp"/> </beans>

Probamos lo realizado

Si todo quedó como mostramos y tenemos el archivo index.jsp en la carpeta WEB-INF/jsp, deployamos el .war y deberíamos poder pegarle al controller, que ejecute el método y que redirija a index.jsp utilizando la siguiente url:

http://<ip>:<puerto>/<nombreApp>/<valor setteado en el @RequestMapping del método>

Por ejemplo: http://111.111.111.111:8001/servletSpringConAnotaciones/unMetodo.htm

Ver también