Diferencia entre revisiones de «Controller con Spring usando anotaciones»

De Dos Ideas.
Saltar a: navegación, buscar
(Página creada con '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 contr…')
 
(Ver también)
 
(No se muestran 19 ediciones intermedias de 3 usuarios)
Línea 1: Línea 1:
Spring 2.5 y Spring 3 nos permiten la creación de Controllers mediante anotaciones. Mostraremos un sencillo ejemplo utilizando Spring 3.
+
[[Spring Framework]] nos permiten la creación de Controllers mediante anotaciones. Mostraremos un sencillo ejemplo utilizando [[Spring Framework]] 3.0
  
 
== Ejemplo ==
 
== Ejemplo ==
Línea 15: Línea 15:
  
 
     @RequestMapping(value="/unMetodo.htm")
 
     @RequestMapping(value="/unMetodo.htm")
     public String iniciarAplicacion() {
+
     public String imprimirHolaMundo() {
         System.out.println("www.dosideas.com");
+
         System.out.println("Hola Mundo");
 
         return "index";
 
         return "index";
 
     }
 
     }
 
}
 
}
</code java>
+
</code>
  
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 en 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.
+
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 ===
 
=== Configuración del web.xml ===
Línea 31: Línea 31:
 
xmlns="http://java.sun.com/xml/ns/javaee"
 
xmlns="http://java.sun.com/xml/ns/javaee"
 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 
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">
+
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee  
 +
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
  
 
     <!-- Declaración del servlet -->
 
     <!-- Declaración del servlet -->
Línea 53: Línea 54:
  
 
</web-app>
 
</web-app>
</code xml>
+
</code>
  
=== Configuración del nombreController-servlet.xml ===
+
=== Configuración del <servlet-name>-servlet.xml ===
  
En nuestro caso llamado pruebaController-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 :)
  
 
<code xml>
 
<code xml>
Línea 65: Línea 66:
 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 
xmlns:context="http://www.springframework.org/schema/context"
 
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
+
xsi:schemaLocation="http://www.springframework.org/schema/beans  
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd">
+
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">
  
 
<!--
 
<!--
La siguiente declaración buscará todos los estereotipos(Clases declaradas
+
La siguiente declaración se encargará de levantar las clases que posean las
con las anotaciones @Service,@Component,@Controller,@Repository)
+
anotaciones (@Controller, @RequestMapping, @Repository, etc) en el paquete que  
en el paquete que se le indique una vez identificado el
+
se le indique. Notese que en este caso le indico el paquete de la clase controller
estereotipo entonces el contenedor instanciará el bean y por lo tanto estará
+
que quiero ejemplificar.
listo para ser utilizado por la aplicación
 
 
-->
 
-->
 
     <context:component-scan base-package="com.dosideas.web.controller"/>
 
     <context:component-scan base-package="com.dosideas.web.controller"/>
  
 
<!-- Declaramos un HandlerMapping para que entre al método del controller -->
 
<!-- Declaramos un HandlerMapping para que entre al método del controller -->
   <bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"/>
+
   <bean
 +
class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"/>
  
 
<!-- Declaramos un HandlerAdapter para que se redirija al .jsp que configuramos -->
 
<!-- Declaramos un HandlerAdapter para que se redirija al .jsp que configuramos -->
     <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"/>
+
     <bean
 +
class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"/>
  
 
      
 
      
 
<!--
 
<!--
El siguiente bean configura las propiedades prefijo(prefix) y sufijo(suffix)
+
En la siguiente declaración configuramos el prefijo y el
de Internalresourceviewresolver, el cual resuelve nombres de vistas lógicas
+
sufijo del archivo .jsp (en este caso) al cual se va a
retornadas por los controladores(en el ejm:clases en el paquete controller)
+
redireccionar una vez que se ejecute el método del Controller.
 
-->
 
-->
 
     <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"
 
     <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"
 
p:prefix="/WEB-INF/jsp/" p:suffix=".jsp"/>
 
p:prefix="/WEB-INF/jsp/" p:suffix=".jsp"/>
 
</beans>
 
</beans>
</code xml>
+
</code>
 +
 
 +
=== 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:
 +
 
 +
<nowiki>http://<ip>:<puerto>/<nombreApp>/<valor setteado en el @RequestMapping del método></nowiki>
 +
 
 +
Por ejemplo:
 +
<nowiki>http://111.111.111.111:8001/servletSpringConAnotaciones/unMetodo.htm</nowiki>
 +
 
 +
== Ver también ==
 +
* [[REST con Spring]]
 +
* [http://static.springsource.org/spring/docs/2.5.6/reference/mvc.html#mvc-annotation Documentación oficial de Spring para Controller con Anotaciones]
 +
 
 +
[[Category:Spring Framework]]

Revisión actual del 17:26 10 feb 2011

Spring Framework nos permiten la creación de Controllers mediante anotaciones. Mostraremos un sencillo ejemplo utilizando Spring Framework 3.0

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 imprimirHolaMundo() {
       System.out.println("Hola Mundo");
       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 <servlet-name>-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