miércoles, 21 de abril de 2010

Algo simple MVC y Spring Framework

Como crear un aplicativo simple MVC con Spring Framework
Para este ejemplo voy a usar JDK1.6, Eclipse(Galileo), SpringFramework 3.0, Ubuntu 9.10, JBossv4.2

Primeramente abrimos Eclipse



Luego File/New/Other/Web/Dynamic Web Project. Llamaremos al proyecto como Sample1 y damos click en Finish



Ahora agreguemos las librerias necesarias.
Primeramente descargamos spring-framework-3.0.2.RELEASE.zip de Spring Framework desde http://www.springsource.com/download/community. Luego descomprimimos este archivo en algun lugar de nuestro equipo.
Desde Nautilus o Windows Explorer copiamos estas librerias a <Ruta de proyectos>Sample1/WebContent/WEB-INF/lib.
Regresamos a Eclipse y damos refresh sobre el proyecto y vemos que sobre Web App Libraries, ya nos salen las respectivas librerias



Una vez hecho esto, modificamos web.xml para cargar el servlet encargado de hacer las funciones de Dispatcher(Java Pattern), para este ejemplo. Es decir agregamos el siguiente código a web.xml

<servlet>
<servlet-name>springapp</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
<servlet-name>springapp</servlet-name>
<url-pattern>*.htm</url-pattern>
</servlet-mapping>



Una vez hecho esto, debemos crear springapp-servlet.xml que sera el encargado de hacer de mapeo entre el controlador y la vista. Para esto creamos un archivo XML llamado springapp-servlet.xml en el directorio WEB-INF. Este archivo tiene la siguiente forma:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">

<!-- Cuando se llame a saludo.htm se procesa con la clase com.ejemplo.Saludo-->

<bean name="/saludo.htm" class="com.ejemplo.Saludo"/>
</beans>




Ahora tenemos que crear la clase Saludo. Entonces creamos el paquete com.ejemplo y luego la clase Saludo.



Esta clase debe implementar de Controller la función handleRequest que devuelve un ModelAndView, que corresponde a la pagina jsp, que se hará en un próximo paso.

package com.ejemplo;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;

public class Saludo implements Controller {

@Override
public ModelAndView handleRequest(HttpServletRequest arg0,
HttpServletResponse arg1) throws Exception {
System.out.println("Esta procesando el requerimiento");
return new ModelAndView("saludo.jsp");
}
}






Una vez hecho esto creemos saludo.jsp.



<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
ESTA ES UNA PRUEBA MVC DE SPRING FRAMEWORK
</body>
</html>


Ejecutamos la aplicación Web.


Luego de levantarse el servidor entramos a http://localhost:8080/Sample1/saludo.htm


2 comentarios:

  1. Hola, en la clase Saludo.java, al hacer los imports:
    import org.springframework.web.servlet.ModelAndView;
    import org.springframework.web.servlet.mvc.Controller;
    Me da el siguiente error:
    The import org.springframework.web.servlet.ModelAndView cannot be resolved e igual para Controller igual.
    Tengo las librerias importadas y se muestran, sabes que puede estar pasando?
    Gracias de antemano.

    ResponderEliminar
  2. Que tal Juanlu, te recomiendo que verifiques que las librerias se encuentren dentro de WEB-INF/lib y que en el java Buildpath esten esten marcadas para usar. Si esto no te funciona una la opción de librerias externas al proyecto para agregarlas.

    ResponderEliminar