<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Ab uno discent omnes</title>
	<atom:link href="http://abunodiscentomnes.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://abunodiscentomnes.wordpress.com</link>
	<description>"De uno, aprenden todos" (Publio Virgilio Marón - Eneida)</description>
	<lastBuildDate>Fri, 16 May 2008 10:21:27 +0000</lastBuildDate>
	<generator>http://wordpress.com/</generator>
	<language>es</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<cloud domain='abunodiscentomnes.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://www.gravatar.com/blavatar/cab6f818b7be7317436aeadf735ca5c4?s=96&#038;d=http://s.wordpress.com/i/buttonw-com.png</url>
		<title>Ab uno discent omnes</title>
		<link>http://abunodiscentomnes.wordpress.com</link>
	</image>
			<item>
		<title>Lucas Wolenczak</title>
		<link>http://abunodiscentomnes.wordpress.com/2008/02/21/lucas-wolenczak/</link>
		<comments>http://abunodiscentomnes.wordpress.com/2008/02/21/lucas-wolenczak/#comments</comments>
		<pubDate>Thu, 21 Feb 2008 12:10:22 +0000</pubDate>
		<dc:creator>Dende</dc:creator>
				<category><![CDATA[Personal]]></category>
		<category><![CDATA[noticia]]></category>
		<category><![CDATA[seaquest]]></category>
		<category><![CDATA[wolenczak]]></category>

		<guid isPermaLink="false">http://abunodiscentomnes.wordpress.com/?p=5</guid>
		<description><![CDATA[Leyendo los comentarios  de una noticia sobre cine, he leido que el actor Jonathan Brandis que encarnaba al mítico &#8220;Hacker&#8221; Lucas Wolenczak en una de las series favoritas de mi infancia SeaQuest llevaba fallecido desde 2003.
La verdad es que la serie me engancho por este personaje. Un genio informático adolescente que era capaz de [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=abunodiscentomnes.wordpress.com&blog=1263461&post=5&subd=abunodiscentomnes&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Leyendo los comentarios  de una noticia sobre cine, he leido que el actor <a href="http://en.wikipedia.org/wiki/Jonathan_Brandis">Jonathan Brandis</a> que encarnaba al mítico &#8220;Hacker&#8221; <a href="http://en.wikipedia.org/wiki/Lucas_Wolenczak">Lucas Wolenczak</a> en una de las series favoritas de mi infancia <a href="http://en.wikipedia.org/wiki/SeaQuest_DSV">SeaQuest</a> llevaba fallecido desde 2003.</p>
<p>La verdad es que la serie me engancho por este personaje. Un genio informático adolescente que era capaz de manejar el ordenador para acceder a todos los sistemas (cierto que es pura fantasía, pero realmente es la fantasía de más de uno jeje) y que vivía en una nave increíble llena de gadgets impresionantes. </p>
<p>Si que me había preguntado alguna vez que fue de la serie pero no sabía que no había pasado de la tercera temporada.</p>
<p>Lo dicho, es una pena. D.E.P</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/abunodiscentomnes.wordpress.com/5/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/abunodiscentomnes.wordpress.com/5/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/abunodiscentomnes.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/abunodiscentomnes.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/abunodiscentomnes.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/abunodiscentomnes.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/abunodiscentomnes.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/abunodiscentomnes.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/abunodiscentomnes.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/abunodiscentomnes.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/abunodiscentomnes.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/abunodiscentomnes.wordpress.com/5/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=abunodiscentomnes.wordpress.com&blog=1263461&post=5&subd=abunodiscentomnes&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://abunodiscentomnes.wordpress.com/2008/02/21/lucas-wolenczak/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/873bde6be14025c242b8cf11f601b254?s=96&#38;d=identicon" medium="image">
			<media:title type="html">Dende</media:title>
		</media:content>
	</item>
		<item>
		<title>Please Wait&#8230;</title>
		<link>http://abunodiscentomnes.wordpress.com/2008/02/20/please-wait/</link>
		<comments>http://abunodiscentomnes.wordpress.com/2008/02/20/please-wait/#comments</comments>
		<pubDate>Wed, 20 Feb 2008 08:43:19 +0000</pubDate>
		<dc:creator>Dende</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[blog]]></category>
		<category><![CDATA[espera]]></category>
		<category><![CDATA[parado]]></category>
		<category><![CDATA[vivo]]></category>

		<guid isPermaLink="false">http://abunodiscentomnes.wordpress.com/?p=4</guid>
		<description><![CDATA[Buenas a tod@s,
Escribo este post para que podáis ver que este Blog sigue vivo pero parado ya que ahora no dispongo de tiempo para dedicarle (el trabajo y más cosas).
Mi prioridad inmediata es terminar la traducción libre de Una pequeña aplicación en Spring paso a paso ya que sigo creyendo que es un ejemplo muy [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=abunodiscentomnes.wordpress.com&blog=1263461&post=4&subd=abunodiscentomnes&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Buenas a tod@s,</p>
<p>Escribo este post para que podáis ver que este Blog sigue vivo pero parado ya que ahora no dispongo de tiempo para dedicarle (el trabajo y más cosas).</p>
<p>Mi prioridad inmediata es terminar la traducción libre de <a href="http://abunodiscentomnes.wordpress.com/2007/07/18/una-pequena-aplicacion-en-spring-paso-a-paso-i/">Una pequeña aplicación en Spring paso a paso</a> ya que sigo creyendo que es un ejemplo muy útil para iniciarse en los caminos de Spring.</p>
<p>Bueno pues nada más, gracias por la paciencia y un saludo a tod@s!</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/abunodiscentomnes.wordpress.com/4/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/abunodiscentomnes.wordpress.com/4/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/abunodiscentomnes.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/abunodiscentomnes.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/abunodiscentomnes.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/abunodiscentomnes.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/abunodiscentomnes.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/abunodiscentomnes.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/abunodiscentomnes.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/abunodiscentomnes.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/abunodiscentomnes.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/abunodiscentomnes.wordpress.com/4/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=abunodiscentomnes.wordpress.com&blog=1263461&post=4&subd=abunodiscentomnes&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://abunodiscentomnes.wordpress.com/2008/02/20/please-wait/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/873bde6be14025c242b8cf11f601b254?s=96&#38;d=identicon" medium="image">
			<media:title type="html">Dende</media:title>
		</media:content>
	</item>
		<item>
		<title>Una pequeña aplicación en Spring Paso a Paso &#8211; I</title>
		<link>http://abunodiscentomnes.wordpress.com/2007/07/18/una-pequena-aplicacion-en-spring-paso-a-paso-i/</link>
		<comments>http://abunodiscentomnes.wordpress.com/2007/07/18/una-pequena-aplicacion-en-spring-paso-a-paso-i/#comments</comments>
		<pubDate>Wed, 18 Jul 2007 06:49:34 +0000</pubDate>
		<dc:creator>Dende</dc:creator>
				<category><![CDATA[J2EE]]></category>

		<guid isPermaLink="false">http://abunodiscentomnes.wordpress.com/2007/07/18/una-pequena-aplicacion-en-spring-paso-a-paso-i/</guid>
		<description><![CDATA[Antes de nada, indicar que esta es una traducción libre al español y que no soy ni me considero un traductor profesional pero espero que sirva para la gente que no se lleva bien con el inglés
Esta es la primera parte de cuatro de un documento &#8220;Developing a Spring Framework MVC aplication setp-by-step&#8221; , escrito [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=abunodiscentomnes.wordpress.com&blog=1263461&post=3&subd=abunodiscentomnes&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Antes de nada, indicar que esta es una traducción libre al español y que no soy ni me considero un traductor profesional pero espero que sirva para la gente que no se lleva bien con el inglés</p>
<p>Esta es la primera parte de cuatro de un documento <a href="http://www.springframework.org/docs/MVC-step-by-step/Spring-MVC-step-by-step.html" target="_blank"><strong><em>&#8220;Developing a Spring Framework MVC aplication setp-by-step&#8221;</em></strong></a> , escrito por <strong>Thomas Risberg</strong>, en el que se explica como desarrollar una pequeña aplicación usando <a href="http://www.springframework.org" target="_blank">Spring</a>.</p>
<p>Esta es una guía paso a paso de como desarrollar una aplicación web desde cero usando Spring.</p>
<p>Pre requisitos:</p>
<ul>
<li>Java SDK (<em>Actualmente usando la versión 1.4.2</em>)</li>
<li>Ant (<em>usando la versión 1.6.2</em>)</li>
<li>Apache Tomcat (<em>usando la versión 5.0.28</em>)</li>
</ul>
<p>Se recomienda tener algo de experiencia con las herramientas arriba mencionadas.</p>
<p>No voy a usar demasiada información o teoría en este artículo, para ello existen multitud de libros que lo abarcan en profundidad. En cambio abarcaremos el desarrollo de la aplicación en profundidad.</p>
<p><strong>Paso 1 – Directorio de desarrollo</strong></p>
<p>Vamos a necesitar un lugar en el que guardar todo el código fuente y los demás ficheros que iremos creando, yo he creado un directorio llamado <em>&#8217;springapp&#8217;</em>. Puedes crear ese directorio en tu directorio home o en cualquier otra localización. Yo he creado el mio en el directorio &#8216;projects&#8217; que ya tenía creado en el directorio &#8216;home&#8217; con lo que mi ruta completa será &#8216;/users/trisberg/projects/springapp&#8217;. Dentro del directorio he creado un directorio llamado &#8217;src&#8217; para almacenar el código fuente Java. Después he creado otro directorio llamado &#8216;war&#8217;. Este directorio almacenará todo aquello que irá dentro del fichero WAR, el cual vamos a usar para desplegar la aplicación. Todos los archivos fuente que no sean Java, como JSPs y ficheros de configuración, irán en este directorio.</p>
<p><strong>Paso 2 – index.jsp</strong></p>
<p>Empezaremos creando una página JSP llamada &#8216;index.jsp&#8217; en el directorio &#8216;war&#8217;. Será el punto de entrada para nuestra aplicación.</p>
<table border="1" cellspacing="0" cellpadding="4" width="100%">
<thead>
<tr>
<td width="100%" valign="top" bgcolor="#ffcc99"><strong><span style="font-size:x-small;"><span style="font-family:Nimbus Mono L;">springapp/war/index.jsp</span></span></strong></td>
</tr>
</thead>
<tbody>
<tr>
<td width="100%" valign="top" bgcolor="#ffffcc">
<pre>
&lt;html&gt;
	&lt;head&gt;
		&lt;title&gt;Ejemplo :: Aplicación con Spring&lt;/title&gt;
	&lt;/head&gt;
	&lt;body&gt;
		&lt;h1&gt;Ejemplo - Aplicación con Spring&lt;/h1&gt;
		&lt;p&gt;Esta es mi prueba.&lt;/p&gt;
	&lt;/body&gt;
&lt;/html&gt;
				</pre>
</td>
</tr>
</tbody>
</table>
<p></p>
<p>Para tener una aplicación web completa, creo el archivo <strong><em>web.xml</em></strong> en el directorio <em>&#8216;WEB-INF&#8217;</em> que he creado como subdirectorio del directorio <em>war</em>.</p>
<table border="1" cellspacing="0" cellpadding="4" width="100%">
<thead>
<tr>
<td width="994" valign="top" bgcolor="#ffcc99"><strong><span style="font-size:x-small;"><span style="font-family:Nimbus Mono L;">springapp/war/WEB-INF/web.xml</span></span></strong></td>
</tr>
<tbody>
<tr>
<td width="994" valign="top" bgcolor="#ffffcc">
<pre>&lt;?xml version="1.0" encoding="UTF-8"?&gt;

&lt;!DOCTYPE web-app PUBLIC '-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN' 'http://java.sun.com/dtd/web-app_2_3.dtd'&gt;&lt;web-app&gt;

&lt;/web-app&gt;</pre>
</td>
</tr>
</tbody>
</table>
<p></p>
<p><strong>Paso 3 – Desplegando la aplicación en Tomcat</strong></p>
<p>A continuación creo un script Ant que usaré a lo largo de este documento. Contiene tareas para la construcción y el desplegado de la aplicación. Otro script de construcción contiene las tareas especificas del servidor. También hay tareas para controlar la aplicación bajo Tomcat.</p>
<table border="1" cellspacing="0" cellpadding="4" width="100%">
<thead>
<tr>
<td width="100%" valign="top" bgcolor="#ffcc99"><strong><span style="font-size:x-small;"><span style="font-family:Nimbus Mono L;">springapp/build.xml</span></span></strong></td>
</tr>
</thead>
<tbody>
<tr>
<td width="100%" valign="top" bgcolor="#ffffcc">
<pre>&lt;?xml version="1.0"?&gt;&lt;project name="springapp" basedir="." default="usage"&gt;

    &lt;property file="build.properties"/&gt;

&lt;property name="src.dir" value="src"/&gt;

    &lt;property name="web.dir" value="war"/&gt;

    &lt;property name="build.dir" value="${web.dir}/WEB-INF/classes"/&gt;

    &lt;property name="name" value="springapp"/&gt;

&lt;path id="master-classpath"&gt;

        &lt;fileset dir="${web.dir}/WEB-INF/lib"&gt;

            &lt;include name="*.jar"/&gt;

        &lt;/fileset&gt;

        &lt;!-- We need the servlet API classes:        --&gt;

        &lt;!--   for Tomcat 4.1 use servlet.jar        --&gt;

        &lt;!--   for Tomcat 5.0 use servlet-api.jar    --&gt;

        &lt;!--   for Other app server - check the docs --&gt;

        &lt;fileset dir="${appserver.home}/common/lib"&gt;

            &lt;include name="servlet*.jar"/&gt;

        &lt;/fileset&gt;

        &lt;pathelement path="${build.dir}"/&gt;

    &lt;/path&gt;

&lt;target name="usage"&gt;

        &lt;echo message=""/&gt;

        &lt;echo message="${name} build file"/&gt;

        &lt;echo message="-----------------------------------"/&gt;

        &lt;echo message=""/&gt;

        &lt;echo message="Available targets are:"/&gt;

        &lt;echo message=""/&gt;

        &lt;echo message="build     --&gt; Construye la aplicación"/&gt;

        &lt;echo message="deploy    --&gt; Despliega la aplicación como un directorio"/&gt;

        &lt;echo message="deploywar --&gt; Despliega la aplicación como un fichero WAR"/&gt;

        &lt;echo message="install   --&gt; Instala la aplicación en Tomcat"/&gt;

        &lt;echo message="reload    --&gt; Recarga la aplicación en Tomcat"/&gt;

        &lt;echo message="start     --&gt; Inicia la aplicación Tomcat"/&gt;

        &lt;echo message="stop      --&gt; Para la aplicación Tomcat"/&gt;

        &lt;echo message="list      --&gt; Lista las aplicaciones de Tomcat"/&gt;

        &lt;echo message=""/&gt;

    &lt;/target&gt;

&lt;target name="build" description="Compile main source tree java files"&gt;

        &lt;mkdir dir="${build.dir}"/&gt;

        &lt;javac destdir="${build.dir}" target="1.3" debug="true"

               deprecation="false" optimize="false" failonerror="true"&gt;

            &lt;src path="${src.dir}"/&gt;

            &lt;classpath refid="master-classpath"/&gt;

        &lt;/javac&gt;

    &lt;/target&gt;

&lt;target name="deploy" depends="build" description="Deploy application"&gt;

        &lt;copy todir="${deploy.path}/${name}" preservelastmodified="true"&gt;

            &lt;fileset dir="${web.dir}"&gt;

                &lt;include name="**/*.*"/&gt;

            &lt;/fileset&gt;

        &lt;/copy&gt;

    &lt;/target&gt;

&lt;target name="deploywar" depends="build" description="Deploy application as a WAR file"&gt;

        &lt;war destfile="${name}.war"

             webxml="${web.dir}/WEB-INF/web.xml"&gt;

            &lt;fileset dir="${web.dir}"&gt;

                &lt;include name="**/*.*"/&gt;

            &lt;/fileset&gt;

        &lt;/war&gt;

        &lt;copy todir="${deploy.path}" preservelastmodified="true"&gt;

            &lt;fileset dir="."&gt;

                &lt;include name="*.war"/&gt;

            &lt;/fileset&gt;

        &lt;/copy&gt;

    &lt;/target&gt;

&lt;!-- ============================================================== --&gt;

&lt;!-- Tareas de Tomcat - borralas si no tienes instalado Tomcas      --&gt;

&lt;!-- ============================================================== --&gt;

&lt;taskdef name="install" classname="org.apache.catalina.ant.InstallTask"&gt;

        &lt;classpath&gt;

            &lt;path location="${appserver.home}/server/lib/catalina-ant.jar"/&gt;

        &lt;/classpath&gt;

    &lt;/taskdef&gt;

    &lt;taskdef name="reload" classname="org.apache.catalina.ant.ReloadTask"&gt;

        &lt;classpath&gt;

            &lt;path location="${appserver.home}/server/lib/catalina-ant.jar"/&gt;

        &lt;/classpath&gt;

    &lt;/taskdef&gt;

    &lt;taskdef name="list" classname="org.apache.catalina.ant.ListTask"&gt;

        &lt;classpath&gt;

            &lt;path location="${appserver.home}/server/lib/catalina-ant.jar"/&gt;

        &lt;/classpath&gt;

    &lt;/taskdef&gt;

    &lt;taskdef name="start" classname="org.apache.catalina.ant.StartTask"&gt;

        &lt;classpath&gt;

            &lt;path location="${appserver.home}/server/lib/catalina-ant.jar"/&gt;

        &lt;/classpath&gt;

    &lt;/taskdef&gt;

    &lt;taskdef name="stop" classname="org.apache.catalina.ant.StopTask"&gt;

        &lt;classpath&gt;

            &lt;path location="${appserver.home}/server/lib/catalina-ant.jar"/&gt;

        &lt;/classpath&gt;

    &lt;/taskdef&gt;

&lt;target name="install" description="Instala la aplicación en Tomcat"&gt;

        &lt;install url="${tomcat.manager.url}"

                 username="${tomcat.manager.username}"

                 password="${tomcat.manager.password}"

                 path="/${name}"

                 war="${name}"/&gt;

    &lt;/target&gt;

&lt;target name="reload" description="Recarga la aplicación en Tomcat"&gt;

        &lt;reload url="${tomcat.manager.url}"

                 username="${tomcat.manager.username}"

                 password="${tomcat.manager.password}"

                 path="/${name}"/&gt;

    &lt;/target&gt;

&lt;target name="start" description="Iniciar la aplicación Tomcat"&gt;

        &lt;start url="${tomcat.manager.url}"

                 username="${tomcat.manager.username}"

                 password="${tomcat.manager.password}"

                 path="/${name}"/&gt;

    &lt;/target&gt;

&lt;target name="stop" description="Parar la aplicación Tomcat"&gt;

        &lt;stop url="${tomcat.manager.url}"

                 username="${tomcat.manager.username}"

                 password="${tomcat.manager.password}"

                 path="/${name}"/&gt;

    &lt;/target&gt;

&lt;target name="list" description="Listar aplicaciones de Tomcat"&gt;

        &lt;list url="${tomcat.manager.url}"

                 username="${tomcat.manager.username}"

                 password="${tomcat.manager.password}"/&gt;

    &lt;/target&gt;

&lt;!-- Fin de las tareas Tomcat --&gt;

&lt;/project&gt;</pre>
</td>
</tr>
</tbody>
</table>
<p></p>
<p>El script ahora contiene todo lo necesario para hacer nuestra tarea de desarrollo más sencillas. No voy a explicar el script en detalle ya que la mayor parte de él es estandar de Ant y Tomcat. Puedes simplemente copiar el archivo y ponerlo en el directorio raiz de desarrollo. Tambien necesitaremos crear un fichero <em>build.properties</em> que debes personalizar para que se ajuste a la instalación de tu servidor. Este fichero deberá estar en el mismo directorio que el fichero <em>build.xml.</em></p>
<table border="1" cellspacing="0" cellpadding="4" width="100%">
<thead>
<tr>
<td width="100%" valign="top" bgcolor="#ffcc99"><strong><span style="font-size:x-small;"><span style="font-family:Nimbus Mono L;">springapp/build.properties</span></span></strong></td>
</tr>
</thead>
<tbody>
<tr>
<td width="100%" valign="top" bgcolor="#ffffcc">
<pre># Propiedades ANT para construir la aplicación Spring</pre>
<pre>appserver.home=${user.home}/jakarta-tomcat-5.0.28

deploy.path=${appserver.home}/webappstomcat.manager.url=http://localhost:8080/manager

tomcat.manager.username=admin

tomcat.manager.password=tomcat</pre>
</td>
</tr>
</tbody>
</table>
<p></p>
<p><em>Si te encuentras en un sistema del cual no eres administrador de Tomcat debes pedir al administrador que te proporcione acceso completo al directorio &#8216;webapps&#8217; o que cree un nuevo directorio llamado &#8217;springapp&#8217; en el directorio &#8216;webapps&#8217; y que te de permisos completos para desarrollar en el nuevo directorio. En linux utilizar el comando </em><em><strong><span style="font-size:x-small;"><span style="font-family:Fixed,monospace;">chmod a+rwx springapp </span></span></strong></em><em>para dar a todo el mundo permisos completos sobre este directorio.</em></p>
<p><em>Si estás usando un servidor de aplicaciones web diferente puedes eliminar la parte de tareas específicas de Tomcat al final del fichero de construcción. Puedes usar el desplegado en &#8220;caliente&#8221; de tu servidor o bien parar e iniciar tu aplicación manualmente.</em></p>
<p>Ejecutamos Ant para asegurarnos que todo está trabajando correctamente. Debes colocarte en el directorio &#8217;springapp&#8217; antes de ejecutar Ant.</p>
<table border="1" cellspacing="0" cellpadding="4" width="100%">
<tbody>
<tr>
<td width="100%" valign="top" bgcolor="#e6e6ff">
<pre><span style="color:#280099;">[trisberg@localhost springapp]$ ant</span>

<span style="color:#280099;">Buildfile: build.xml</span>

<span style="color:#280099;"> </span>

<span style="color:#280099;">usage:</span>

<span style="color:#280099;"> </span>

<span style="color:#280099;">     [echo] springapp build file</span>

<span style="color:#280099;">     [echo] -----------------------------------</span>

<span style="color:#280099;"> </span>

<span style="color:#280099;">     [echo] Available targets are:</span>

<span style="color:#280099;"> </span>

<span style="color:#280099;">     [echo] build     --&gt; Build the application</span>

<span style="color:#280099;">     [echo] deploy    --&gt; Deploy application as directory</span>

<span style="color:#280099;">     [echo] deploywar --&gt; Deploy application as a WAR file</span>

<span style="color:#280099;">     [echo] install   --&gt; Install application in Tomcat</span>

<span style="color:#280099;">     [echo] reload    --&gt; Reload application in Tomcat</span>

<span style="color:#280099;">     [echo] start     --&gt; Start Tomcat application</span>

<span style="color:#280099;">     [echo] stop      --&gt; Stop Tomcat application</span>

<span style="color:#280099;">     [echo] list      --&gt; List Tomcat applications</span>

<span style="color:#280099;"> </span>

<span style="color:#280099;"> </span>

<span style="color:#280099;">BUILD SUCCESSFUL</span>

<span style="color:#280099;">Total time: 2 seconds</span></pre>
</td>
</tr>
</tbody>
</table>
<p></p>
<p>La última acción es desplegar. Simplemente ejecuta Ant especificando la orden &#8216;deploy&#8217; o &#8216;deploywar&#8217;.</p>
<table border="1" cellspacing="0" cellpadding="4" width="100%">
<tbody>
<tr>
<td width="100%" valign="top" bgcolor="#e6e6ff">
<pre><span style="color:#280099;">[trisberg@localhost springapp]$ ant deploy</span>

<span style="color:#280099;">Buildfile: build.xml</span>

<span style="color:#280099;"> </span>

<span style="color:#280099;">build:

    [mkdir] Created dir: /Users/trisberg/projects/springapp/war/WEB-INF/classes
</span><span style="color:#280099;">deploy:

     [copy] Copying 2 files to /Users/trisberg/jakarta-tomcat-5.0.28/webapps/springapp</span>

<span style="color:#280099;">
</span><span style="color:#280099;">BUILD SUCCESSFUL</span>

<span style="color:#280099;">Total time: 2 seconds</span></pre>
</td>
</tr>
</tbody>
</table>
<p></p>
<p><strong>Paso 4 – Probando la aplicación</strong></p>
<p>Iniciamos Tomcat y nos aseguramos que podemos acceder a la aplicación. Usa la tarea &#8216;list&#8217; de Ant para ver si Tomcat a reconocido la nueva aplicación.</p>
<table border="1" cellspacing="0" cellpadding="4" width="100%">
<tbody>
<tr>
<td width="100%" valign="top" bgcolor="#e6e6ff">
<pre><span style="color:#280099;">[trisberg@localhost springapp]$ ant list</span>

<span style="color:#280099;">Buildfile: build.xml</span>

<span style="color:#280099;"> </span>

<span style="color:#280099;">list:

     [list] OK - Listed applications for virtual host localhost
</span><span style="color:#280099;">     [list] /admin:running:0:/Users/trisberg/jakarta-tomcat-5.0.28/server/webapps/admin</span>

<span style="color:#280099;">
</span><span style="color:#280099;">     [list] /webdav:running:0:/Users/trisberg/jakarta-tomcat-5.0.28/webapps/webdav</span>

<span style="color:#280099;">
</span><span style="color:#280099;">     [list] /servlets-examples:running:0:/Users/trisberg/jakarta-tomcat-5.0.28/webapps/servlets-examples</span>

<span style="color:#280099;">
</span><span style="color:#280099;"> <span style="font-weight:bold;">    [list] /springapp:running:0:/Users/trisberg/jakarta-tomcat-5.0.28/webapps/springapp</span>

     [list] /jsp-examples:running:0:/Users/trisberg/jakarta-tomcat-5.0.28/webapps/jsp-examples</span>

<span style="color:#280099;">
</span><span style="color:#280099;">     [list] /balancer:running:0:balancer</span>

<span style="color:#280099;">
</span><span style="color:#280099;">     [list] /tomcat-docs:running:0:/Users/trisberg/jakarta-tomcat-5.0.28/webapps/tomcat-docs</span>

<span style="color:#280099;">
</span><span style="color:#280099;">     [list] /:running:0:/Users/trisberg/jakarta-tomcat-5.0.28/webapps/ROOT</span>

<span style="color:#280099;">
</span><span style="color:#280099;">     [list] /manager:running:0:/Users/trisberg/jakarta-tomcat-5.0.28/server/webapps/manager

</span><span style="color:#280099;"> </span>

<span style="color:#280099;"> </span>

<span style="color:#280099;">BUILD SUCCESSFUL</span>

<span style="color:#280099;">Total time: 1 second</span></pre>
</td>
</tr>
</tbody>
</table>
<p></p>
<p>Si no aparece, usa la opción &#8216;install&#8217; de Ant para instalar la aplicación en Tomcat.</p>
<table border="1" cellspacing="0" cellpadding="4" width="100%">
<tbody>
<tr>
<td width="100%" valign="top" bgcolor="#e6e6ff">
<pre><span style="color:#280099;">[trisberg@localhost springapp]$ ant install</span>

<span style="color:#280099;">Buildfile: build.xml</span>

<span style="color:#280099;"> </span>

<span style="color:#280099;">install:</span>

<span style="color:#280099;">  [install] OK - Installed application at context path /springapp</span>

<span style="color:#280099;"> </span>

<span style="color:#280099;"> </span>

<span style="color:#280099;">BUILD SUCCESSFUL</span>

<span style="color:#280099;">Total time: 2 seconds</span></pre>
</td>
</tr>
</tbody>
</table>
<p>Abrimos el navegador y probamos con la url <a href="http://localhost:8080/springapp/index.jsp">http://localhost:8080/springapp/index.jsp</a>.</p>
<p><img src="http://www.springframework.org/docs/MVC-step-by-step/Spring-MVC-step-by-step_html_m5b7553b2.png" border="0" alt="" width="90%" align="left" /></p>
<p><strong>Paso 5 – Descargando la distribución SpringDownload Spring distribution</strong></p>
<p>Si no has descargando todavía Spring, ahora es el momento de hacerlo. Actualmente estoy usando &#8217;spring-framework-1.2-with-dependencies.zip&#8217; que he descargado de <a href="http://www.springframework.org/download.html">www.springframework.org/download.html</a>. Descomprimo el archivo en mi directorio &#8216;home&#8217;. Vamos a usar bastantes ficheros de ello más tarde.</p>
<p><span style="font-size:medium;"><span style="text-decoration:underline;"><strong>Esto completa la configuración del entorno necesaria, ahora podemos empezar a desarrollar nuestra aplicación con Spring.</strong></span></span></p>
</p>
<p><strong>Paso 6 – Modificación del web.xml en el directorio WEB-INF </strong></p>
<p>Nos colocamos en el directorio &#8217;springapp/war/WEB-INF&#8217; . Modificamos el archivo &#8216;web.xml&#8217; que creamos anteriormente. Ahora lo modificaremos para ajustarlo a nuestras necesidades. Definimos un DispatcherServlet que se encargará de controlar el enrutado de nuestras &#8216;request&#8217; basándose en la información que vamos a introducir en el siguiente punto. Tambien posee un sistema de mapeo de servlet para asignarle las urls que utilizaremos. Yo dejé que cualquier url con un &#8216;.htm&#8217; sea dirigida al <em>dispatcher</em> de &#8217;springapp&#8217;.</p>
<table border="1" cellspacing="0" cellpadding="4" width="100%">
<thead>
<tr>
<td width="100%" valign="top" bgcolor="#ffcc99"><strong><span style="font-size:x-small;"><span style="font-family:Nimbus Mono L;">springapp/war/WEB-INF/web.xml</span></span></strong></td>
</tr>
</thead>
<tbody>
<tr>
<td width="100%" valign="top" bgcolor="#ffffcc">
<pre>&lt;?xml version="1.0" encoding="UTF-8"?&gt;

&lt;!DOCTYPE web-app PUBLIC '-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN' 'http://java.sun.com/dtd/web-app_2_3.dtd'&gt;&lt;web-app&gt;

<span style="color:#800000;">  &lt;servlet&gt;</span>

<span style="color:#800000;">    &lt;servlet-name&gt;springapp&lt;/servlet-name&gt;</span>

<span style="color:#800000;">    &lt;servlet-class&gt;org.springframework.web.servlet.DispatcherServlet&lt;/servlet-class&gt;</span>

<span style="color:#800000;">    &lt;load-on-startup&gt;1&lt;/load-on-startup&gt;</span>

<span style="color:#800000;">  &lt;/servlet&gt;</span>

<span style="color:#800000;">  &lt;servlet-mapping&gt;</span>

<span style="color:#800000;">    &lt;servlet-name&gt;springapp&lt;/servlet-name&gt;</span>

<span style="color:#800000;">    &lt;url-pattern&gt;*.htm&lt;/url-pattern&gt;</span>

<span style="color:#800000;">  &lt;/servlet-mapping&gt;</span>

<span style="color:#800000;">  &lt;welcome-file-list&gt;</span>

<span style="color:#800000;">    &lt;welcome-file&gt;</span>

<span style="color:#800000;">      index.jsp</span>

<span style="color:#800000;">    &lt;/welcome-file&gt;</span>

<span style="color:#800000;">  &lt;/welcome-file-list&gt;</span>

&lt;/web-app&gt;</pre>
</td>
</tr>
</tbody>
</table>
<p></p>
<p>Lo siguiente es crear un fichero llamado &#8217;springapp-servlet.xml&#8217; en el directorio &#8217;springapp/war/WEB-INF&#8217; (puedes obtener un ejemplo de este fichero de la distribución de Spring en el directorio &#8217;sample/skeletons/webapp-minimal&#8217;). Este es el fichero donde las definiciones usadas por el <em>DispatcherServlet</em> han de ser introducidas. Debe llamarse basandose en la nombre del servlet usado en el <em>web.xml</em> con &#8216;-servlet&#8217; al final. Esta es una convención estandar de nombrado usada en Spring. Ahora, añadimos un registro de un bean llamado <em>springAppController</em> y hacemos la clase <em>SpringAppController</em>. Esta define el controlador que nuestra aplicación usará. También necesitamos añadir el mapeo de url para que el <em>DispatcherServlet</em> conozca que controlador debe ser invocado para las diferentes urls.</p>
<table border="1" cellspacing="0" cellpadding="4" width="100%">
<thead>
<tr>
<td width="100%" valign="top" bgcolor="#ffcc99"><strong><span style="font-size:x-small;"><span style="font-family:Nimbus Mono L;">springapp/war/WEB-INF/springapp-servlet.xml</span></span></strong></td>
</tr>
</thead>
<tbody>
<tr>
<td width="100%" valign="top" bgcolor="#ffffcc">
<pre>&lt;?xml version="1.0" encoding="UTF-8"?&gt;

&lt;!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"&gt;&lt;!--

  - Application context definition for "springapp" DispatcherServlet.

  --&gt;

&lt;beans&gt;

     &lt;bean id="springappController" class="SpringappController"/&gt;

     &lt;bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"&gt;

        &lt;property name="mappings"&gt;

            &lt;props&gt;

                &lt;prop key="/hello.htm"&gt;springappController&lt;/prop&gt;

            &lt;/props&gt;

        &lt;/property&gt;

     &lt;/bean&gt;

&lt;/beans&gt;</pre>
</td>
</tr>
</tbody>
</table>
<p></p>
<p><strong>Paso 7 – Copia de los Jars en WEB-INF/lib</strong></p>
<p>Primero crea el directorio &#8216;lib&#8217; dentro del directorio &#8216;war/WEB-INF&#8217;.  Despues, desde el directorio donde descomprimimos Spring, copia spring.jar (spring-framework-1.2/dist/spring.jar) al directorio recien creado &#8216;war/WEB-INF/lib&#8217;. Tambien copia los Jars de <em>commons-logging</em> al directorio &#8216;war/WEB-INF/lib&#8217; (spring-framework-1.2/lib/jakarta-commons/commons-logging.jar). También vamos a necesitar el jar de <em>log4j</em>. Copia log4j-1.2.9.jar al directorio &#8216;war/WEB-INF/lib&#8217; (spring-framework-1.2/lib/log4j/log4j-1.2.9.jar). Estos Jars serán desplegado por el servidor y tambien son usados durante el proceso de compilación.</p>
</p>
<p><strong>Paso 8 – Crear tu controlador<br />
</strong></p>
<p>He nombrado el mio como <em>SpringappController.java</em> y lo he colocado en el directorio &#8217;springapp/src&#8217;.</p>
<table border="1" cellspacing="0" cellpadding="4" width="100%">
<thead>
<tr>
<td width="100%" valign="top" bgcolor="#ffcc99"><strong><span style="font-size:x-small;"><span style="font-family:Nimbus Mono L;">springapp/src/SpringappController.java</span></span></strong></td>
</tr>
</thead>
<tbody>
<tr>
<td width="100%" valign="top" bgcolor="#ffffcc">
<pre>import org.springframework.web.servlet.mvc.Controller;

import org.springframework.web.servlet.ModelAndView;import javax.servlet.ServletException;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import java.io.IOException;

public class SpringappController implements Controller {
     public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        return new ModelAndView("");
    }
}</pre>
</td>
</tr>
</tbody>
</table>
<p></p>
<p>Este es un controlador básico. Lo ampliaremos más tarde, incluso ampliaremos algunas implementaciones abstractas que tenemos. El Controlador (controller) &#8216;maneja&#8217; la petición (request) y devuelve un &#8216;ModelAndView&#8217;. Todavía no hemos definido ninguna Vista,  pero por ahora no vamos a hacer ninguna.</p>
</p>
<p><strong>Paso 9 – Compilando la aplicación</strong></p>
<p>Ejecuta la tarea Ant &#8216;build&#8217; del fichero <em>build.xml</em>, Run the &#8216;build&#8217; task of the <em>build.xml</em>. Esperamos que compile todo bien.</p>
<table border="1" cellspacing="0" cellpadding="4" width="100%">
<tbody>
<tr>
<td width="100%" valign="top" bgcolor="#e6e6ff">
<pre><span style="color:#280099;">[trisberg@localhost springapp]$ ant build</span>

<span style="color:#280099;">Buildfile: build.xml</span>

<span style="color:#280099;"> </span>

<span style="color:#280099;">build:</span>

<span style="color:#280099;">    [javac] Compiling 1 source file to /Users/trisberg/projects/springapp/war/WEB-INF/classes</span>

<span style="color:#280099;"> </span>

<span style="color:#280099;">BUILD SUCCESSFUL</span>

<span style="color:#280099;">Total time: 2 seconds</span></pre>
</td>
</tr>
</tbody>
</table>
<p></p>
<p><strong>Paso 10 – Copiar y modificar el log4j.properties</strong></p>
<p>Spring usa log4j para crear logs por lo que tenemos que crear el fichero de configuración para log4j. Copiamos el archivo de ejemplo <em>log4j.properties</em> de una aplicación de ejemplo (spring-framework-1.2/samples/petclinic/war/WEB-INF/log4j.properties) al directorio &#8216;war/WEB-INF/classes&#8217;  (este directorio deberemos crearlo antes). Ahora descomentamos o modificamos la propiedad <strong>log4j.rootCategory</strong>, cambiamos el nombre y la ubicación donde se ubicará el log. Yo lo he puesto donde se encuentran los logs de Tomcat.</p>
<table border="1" cellspacing="0" cellpadding="4" width="100%">
<thead>
<tr>
<td width="100%" valign="top" bgcolor="#ffcc99"><span style="font-family:Nimbus Mono L;"><span style="font-size:x-small;"><strong>springapp/war/WEB-INF/classes/log4j.properties</strong></span></span></td>
</tr>
</thead>
<tbody>
<tr>
<td width="100%" valign="top" bgcolor="#ffffcc">
<pre># For JBoss: Avoid to setup Log4J outside $JBOSS_HOME/server/default/deploy/log4j.xml!

# For all other servers: Comment out the Log4J listener in web.xml to activate Log4J.

log4j.rootLogger=INFO, stdout, logfilelog4j.appender.stdout=org.apache.log4j.ConsoleAppender

log4j.appender.stdout.layout=org.apache.log4j.PatternLayout

log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - &lt;%m&gt;%n

log4j.appender.logfile=org.apache.log4j.RollingFileAppender

<span style="font-weight:bold;">log4j.appender.logfile.File=/Users/trisberg/jakarta-tomcat-5.0.28/logs/springapp.log</span>log4j.appender.logfile.MaxFileSize=512KB

# Keep three backup files.

log4j.appender.logfile.MaxBackupIndex=3

# Pattern to output: date priority [category] - message

log4j.appender.logfile.layout=org.apache.log4j.PatternLayout

log4j.appender.logfile.layout.ConversionPattern=%d %p [%c] - %m%n</pre>
</td>
</tr>
</tbody>
</table>
<p></p>
<p><strong>Paso 11 – Desplegado de la aplicación</strong></p>
<p>Ejecutamos la tarea &#8216;deploy&#8217; y después ejecutamos las tareas &#8217;stop&#8217; y &#8217;start&#8217; del build.xml. Esto forzará la recarga de la aplicación. Comprobamos los logs de Tomcat por si se refleja algún error de desplegado. Este es un ejemplo de como debería ser. (/Users/trisberg/jakarta-tomcat-5.0.28/logs/springapp.log)</p>
<table border="1" cellspacing="0" cellpadding="4" width="100%">
<tbody>
<tr>
<td width="70%" valign="top" bgcolor="#e6e6ff">
<code><span style="color:#280099;">2005-04-24 14:58:18,112 INFO [org.springframework.web.servlet.DispatcherServlet] - Initializing servlet 'springapp'</p>
<p>2005-04-24 14:58:18,261 INFO [org.springframework.web.servlet.DispatcherServlet] - FrameworkServlet 'springapp': initialization started</p>
<p>2005-04-24 14:58:18,373 INFO [org.springframework.beans.factory.xml.XmlBeanDefinitionReader] - Loading XML bean definitions from ServletContext resource [/WEB-INF/springapp-servlet.xml]</p>
<p>2005-04-24 14:58:18,498 INFO [org.springframework.web.context.support.XmlWebApplicationContext] - Bean factory for application context [WebApplicationContext for namespace 'springapp-servlet']: org.springframework.beans.factory.support.DefaultListableBeanFactory defining beans [springappController,urlMapping]; root of BeanFactory hierarchy</p>
<p>2005-04-24 14:58:18,505 INFO [org.springframework.web.context.support.XmlWebApplicationContext] - 2 beans defined in application context [WebApplicationContext for namespace 'springapp-servlet']</p>
<p>2005-04-24 14:58:18,523 INFO [org.springframework.core.CollectionFactory] - JDK 1.4+ collections available</p>
<p>2005-04-24 14:58:18,524 INFO [org.springframework.core.CollectionFactory] - Commons Collections 3.x available</p>
<p>2005-04-24 14:58:18,537 INFO [org.springframework.web.context.support.XmlWebApplicationContext] - Unable to locate MessageSource with name 'messageSource': using default [org.springframework.context.support.DelegatingMessageSource@8dacb]</p>
<p>2005-04-24 14:58:18,539 INFO [org.springframework.web.context.support.XmlWebApplicationContext] - Unable to locate ApplicationEventMulticaster with name 'applicationEventMulticaster': using default [org.springframework.context.event.SimpleApplicationEventMulticaster@5674a4]</p>
<p>2005-04-24 14:58:18,549 INFO [org.springframework.ui.context.support.UiApplicationContextUtils] - No ThemeSource found for [WebApplicationContext for namespace 'springapp-servlet']: using ResourceBundleThemeSource</p>
<p>2005-04-24 14:58:18,556 INFO [org.springframework.beans.factory.support.DefaultListableBeanFactory] - Pre-instantiating singletons in factory [org.springframework.beans.factory.support.DefaultListableBeanFactory defining beans [springappController,urlMapping]; root of BeanFactory hierarchy]</p>
<p>2005-04-24 14:58:18,557 INFO [org.springframework.beans.factory.support.DefaultListableBeanFactory] - Creating shared instance of singleton bean 'springappController'</p>
<p>2005-04-24 14:58:18,603 INFO [org.springframework.beans.factory.support.DefaultListableBeanFactory] - Creating shared instance of singleton bean 'urlMapping'</p>
<p>2005-04-24 14:58:18,667 INFO [org.springframework.web.servlet.DispatcherServlet] - Using context class [org.springframework.web.context.support.XmlWebApplicationContext] for servlet 'springapp'</p>
<p>2005-04-24 14:58:18,668 INFO [org.springframework.web.servlet.DispatcherServlet] - Unable to locate MultipartResolver with name 'multipartResolver': no multipart request handling provided</p>
<p>2005-04-24 14:58:18,670 INFO [org.springframework.web.servlet.DispatcherServlet] - Unable to locate LocaleResolver with name 'localeResolver': using default [org.springframework.web.servlet.i18n.AcceptHeaderLocaleResolver@318309]</p>
<p>2005-04-24 14:58:18,675 INFO [org.springframework.web.servlet.DispatcherServlet] - Unable to locate ThemeResolver with name 'themeResolver': using default [org.springframework.web.servlet.theme.FixedThemeResolver@c11e94]</p>
<p>2005-04-24 14:58:18,681 INFO [org.springframework.web.servlet.DispatcherServlet] - No HandlerAdapters found in servlet 'springapp': using default</p>
<p>2005-04-24 14:58:18,700 INFO [org.springframework.web.servlet.DispatcherServlet] - No ViewResolvers found in servlet 'springapp': using default</p>
<p>2005-04-24 14:58:18,700 INFO [org.springframework.web.servlet.DispatcherServlet] - FrameworkServlet 'springapp': initialization completed in 439 ms</p>
<p>2005-04-24 14:58:18,704 INFO [org.springframework.web.servlet.DispatcherServlet] - Servlet 'springapp' configured successfully</span></code>
</td>
</tr>
</tbody>
</table>
<p></p>
<p><strong>Paso 12 – Crear una vista</strong></p>
<p>Es el turno de crear nuestra primer vista. Yo usaré una página JSP que llamaré hello.jsp. La colocaré en el directorio war para empezar.</p>
<table border="1" cellspacing="0" cellpadding="4" width="100%">
<thead>
<tr>
<td width="100%" valign="top" bgcolor="#ffcc99"><span style="font-family:Nimbus Mono L;"><span style="font-size:x-small;"><strong>springapp/war/hello.jsp</strong></span></span></td>
</tr>
</thead>
<tbody>
<tr>
<td width="100%" valign="top" bgcolor="#ffffcc">
<pre>&lt;html&gt;

&lt;head&gt;&lt;title&gt;Example :: Spring Application&lt;/title&gt;&lt;/head&gt;

&lt;body&gt;

&lt;h1&gt;Hello - Spring Application&lt;/h1&gt;

&lt;p&gt;Greetings.&lt;/p&gt;

&lt;/body&gt;

&lt;/html&gt;</pre>
</td>
</tr>
</tbody>
</table>
<p></p>
<p>Ahora modificaremos el <em>SpringappController</em> para redirigirlo a esta vista.</p>
<table border="1" cellspacing="0" cellpadding="4" width="100%">
<thead>
<tr>
<td valign="top" bgcolor="#ffcc99"><strong><span style="font-size:x-small;"><span style="font-family:Nimbus Mono L;">springapp/src/SpringappController.java</span></span></strong></td>
</tr>
</thead>
<tbody>
<tr>
<td valign="top" bgcolor="#ffffcc">
<pre>import org.springframework.web.servlet.mvc.Controller;

import org.springframework.web.servlet.ModelAndView;import javax.servlet.ServletException;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import java.io.IOException;

<span style="color:#800000;">import org.apache.commons.logging.Log;</span>

<span style="color:#800000;">import org.apache.commons.logging.LogFactory;</span>

public class SpringappController implements Controller {

<span style="color:#800000;">    /** Logger para esta clase y subclases */</span>

<span style="color:#800000;">    protected final Log logger = LogFactory.getLog(getClass());</span>
    public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response)
           throws ServletException, IOException {
<span style="color:#800000;">         logger.info("SpringappController - devolviendo la vista hello");</span>
         return new ModelAndView("<span style="color:#800000;">hello.jsp</span>");
    }
}</pre>
</td>
</tr>
</tbody>
</table>
<p></p>
<p>Mientras modificaba la clase he añadido un logger para poder verificar que lo hemos conseguido. Los cambios han sido  resaltados en <span style="color:#800000;">rojo</span>. El modelo al que vuelve esta clase es resuelto por un ViewResolver. Puesto que no hemos especificado ninguno, usaremos el de por defecto que simplemente nos redireccionara a la url que case con el nombre de la vista especificado. Esto se modificará más adelante.</p>
<p>Ahora compilamos y desplegamos la aplicación. Después paramos y arrancamos Tomcat para que todo quede recargado.</p>
<p>Ponemos en el navegador la siguiente url <a href="http://localhost:8080/springapp/hello.htm">http://localhost:8080/springapp/hello.htm</a> y nos deberá aparece lo siguiente, (Podemos comprobar el log y ver como el controlador ha sido invocado y ha redireccionado a la vista <em>hello.)</em>:</p>
<p><img src="http://www.springframework.org/docs/MVC-step-by-step/Spring-MVC-step-by-step_html_m3871950e.png" border="0" alt="" width="90%" height="90%" align="left" /></p>
<p>(/Users/trisberg/jakarta-tomcat-5.0.28/logs/springapp.log)</p>
<table border="1" cellspacing="0" cellpadding="4" width="100%">
<tbody>
<tr>
<td width="100%" valign="top" bgcolor="#e6e6ff">
<pre><span style="color:#280099;">2005-04-24 15:01:56,217 INFO [org.springframework.web.servlet.DispatcherServlet] - FrameworkServlet 'springapp': initialization completed in 372 ms

2005-04-24 15:01:56,217 INFO [org.springframework.web.servlet.DispatcherServlet] - Servlet 'springapp' configured successfully

2005-04-24 15:03:57,908 INFO [SpringappController] - SpringappController - returning hello view</span></pre>
</td>
</tr>
</tbody>
</table>
<p></p>
<p><strong>Resumen</strong></p>
<p>Echemos un vistazo rapido a las partes de nuestra aplicación que hemos creado por ahora.</p>
<ol>
<li>
<p>Una página de introducción <strong>index.jsp</strong> que no hace nada util. Simplemente ha sido usada para probar nuestra configuración. <span style="font-size:small;">En un futuro cambiaremos esto para obtener un link en nuestra aplicación</span></p>
</li>
<li>
<p>Un DispatcherServlet con su correspondiente fichero de configuración <strong>springapp-servlet.xml</strong>.</p>
</li>
<li>
<p>Un controlador con funcionalidad limitada <strong>springappController.java</strong> – simplemente redirige un ModelAndView a un ViewResolver. Por ahora tenemos un modelo vacio pero lo arreglaremos pronto.</p>
</li>
<li>
<p>Una vista extremadamente básica <strong>hello.jsp</strong>. Pero la configuración funciona y estamos listos para añadir más funcionalidad.</p>
</li>
</ol>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/abunodiscentomnes.wordpress.com/3/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/abunodiscentomnes.wordpress.com/3/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/abunodiscentomnes.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/abunodiscentomnes.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/abunodiscentomnes.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/abunodiscentomnes.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/abunodiscentomnes.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/abunodiscentomnes.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/abunodiscentomnes.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/abunodiscentomnes.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/abunodiscentomnes.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/abunodiscentomnes.wordpress.com/3/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=abunodiscentomnes.wordpress.com&blog=1263461&post=3&subd=abunodiscentomnes&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://abunodiscentomnes.wordpress.com/2007/07/18/una-pequena-aplicacion-en-spring-paso-a-paso-i/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/873bde6be14025c242b8cf11f601b254?s=96&#38;d=identicon" medium="image">
			<media:title type="html">Dende</media:title>
		</media:content>

		<media:content url="http://www.springframework.org/docs/MVC-step-by-step/Spring-MVC-step-by-step_html_m5b7553b2.png" medium="image" />

		<media:content url="http://www.springframework.org/docs/MVC-step-by-step/Spring-MVC-step-by-step_html_m3871950e.png" medium="image" />
	</item>
		<item>
		<title>Uno de tantos&#8230;</title>
		<link>http://abunodiscentomnes.wordpress.com/2007/06/20/hello-world/</link>
		<comments>http://abunodiscentomnes.wordpress.com/2007/06/20/hello-world/#comments</comments>
		<pubDate>Wed, 20 Jun 2007 13:45:17 +0000</pubDate>
		<dc:creator>Dende</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Buenos días a tod@s,
Me presento ante tod@s como un aficionado a la informática y a la vez trabajador en el sector.
A lo largo de mi corta pero intensa carrera, me he visto envuelto en multitud de situaciones en las que gracias al trabajo y persistencia de otras personas, fundamentalmente, he conseguido superar esos obstáculos o [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=abunodiscentomnes.wordpress.com&blog=1263461&post=1&subd=abunodiscentomnes&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Buenos días a tod@s,</p>
<p>Me presento ante tod@s como un aficionado a la informática y a la vez trabajador en el sector.</p>
<p>A lo largo de mi corta pero intensa carrera, me he visto envuelto en multitud de situaciones en las que gracias al trabajo y persistencia de otras personas, fundamentalmente, he conseguido superar esos obstáculos o aprender el uso de esta o aquella herramienta.</p>
<p>Ahora me gustaría devolver el favor publicando en este humilde blog todos los descubrimientos, soluciones, mejoras, etc que voy recopilando para que gente que se encuentre ante un obstáculo pueda aprovechar mi experiencia para seguir adelante.</p>
<p>Espero que mucha gente salga beneficiada de este <a href="http://abunodiscentomnes.wordpress.com" target="_blank">blog</a>.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/abunodiscentomnes.wordpress.com/1/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/abunodiscentomnes.wordpress.com/1/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/abunodiscentomnes.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/abunodiscentomnes.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/abunodiscentomnes.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/abunodiscentomnes.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/abunodiscentomnes.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/abunodiscentomnes.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/abunodiscentomnes.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/abunodiscentomnes.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/abunodiscentomnes.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/abunodiscentomnes.wordpress.com/1/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=abunodiscentomnes.wordpress.com&blog=1263461&post=1&subd=abunodiscentomnes&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://abunodiscentomnes.wordpress.com/2007/06/20/hello-world/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/873bde6be14025c242b8cf11f601b254?s=96&#38;d=identicon" medium="image">
			<media:title type="html">Dende</media:title>
		</media:content>
	</item>
	</channel>
</rss>