<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" version="2.0">

<channel>
	<title>De la Programación y Otras Artes</title>
	
	<link>http://www.andreimosso.com</link>
	<description />
	<lastBuildDate>Wed, 23 May 2012 18:44:32 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/veon" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="veon" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>Debuggeando un Servidor Weblogic Remotamente</title>
		<link>http://www.andreimosso.com/?p=141&amp;utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=debuggeando-un-servidor-weblogic-remotamente</link>
		<comments>http://www.andreimosso.com/?p=141#comments</comments>
		<pubDate>Fri, 21 Nov 2008 12:01:26 +0000</pubDate>
		<dc:creator>moshin</dc:creator>
				<category><![CDATA[programación]]></category>
		<category><![CDATA[webapps]]></category>
		<category><![CDATA[debug]]></category>
		<category><![CDATA[debugging]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[weblogic]]></category>

		<guid isPermaLink="false">http://www.andreimosso.com/?p=141</guid>
		<description><![CDATA[Rompiendo el silencio de más de 7 meses les traigo un tip muy útil cuando se requiere acceder a las bondades del debugger de Eclipse sobre una aplicación que no está ejecutándose localmente o que está corriendo de forma local pero que no podemos ejecutarla desde Eclipse. Aunque esto aplica para todo tipo de aplicaciones Java, un buen ejemplo es un servidor de aplicaciones J2EE. En este caso usaré Weblogic. La parte más &#8220;difícil&#8221; es agregar algunos argumentos al comando que inicia al Weblogic. Para ello hay que abrir la pantalla Server Start de la instancia de Weblogic que queremos debuggear. La ruta es Environment &#62;&#62; Servers &#62;&#62; [servername] &#62;&#62; Server Start. En esta pantalla hay un campo Arguments que nos permite mandar parámetros a la máquina virtual al momento de iniciar la instancia de Weblogic. En este campo agregamos lo siguiente: Hace falta reiniciar la instancia de Weblogic que afectamos para que los cambios surtan efecto. Ahora solo hay que crear una nueva configuración de Debug para conectarse a la aplicación Java remota. Para ello haz clic sobre Run &#62;&#62; Debug Configurations. En seguida crea una nueva configuración bajo la categoría de Remote Java Application y usa los siguientes [...]]]></description>
			<content:encoded><![CDATA[<p>Rompiendo el silencio de más de 7 meses les traigo un tip muy útil cuando se requiere acceder a las bondades del <em>debugger</em> de Eclipse sobre una aplicación que no está ejecutándose localmente o que está corriendo de forma local pero que no podemos ejecutarla desde Eclipse.</p>
<p>Aunque esto aplica para todo tipo de aplicaciones Java, un buen ejemplo es un servidor de aplicaciones J2EE. En este caso usaré Weblogic.</p>
<p>La parte más &#8220;difícil&#8221; es agregar algunos argumentos al comando que inicia al Weblogic. Para ello hay que abrir la pantalla <em>Server Start</em> de la instancia de Weblogic que queremos <em>debuggear</em>. La ruta es Environment &gt;&gt; Servers &gt;&gt; <em>[servername]</em> &gt;&gt; Server Start.</p>
<p>En esta pantalla hay un campo <em>Arguments</em> que nos permite mandar parámetros a la máquina virtual al momento de iniciar la instancia de Weblogic. En este campo agregamos lo siguiente:</p>
<div class="blockquote">
-Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n<br />
<br /><span></span></div>
<div class="clearnospacing"></div>
<p>Hace falta reiniciar la instancia de Weblogic que afectamos para que los cambios surtan efecto.</p>
<p>Ahora solo hay que crear una nueva configuración de <em>Debug</em> para conectarse a la aplicación Java remota. Para ello haz clic sobre <em>Run</em> &gt;&gt; <em>Debug Configurations</em>. En seguida crea una nueva configuración bajo la categoría de <em>Remote Java Application</em> y usa los siguientes datos como referencia:</p>
<p align="center"><img class="aligncenter size-full wp-image-142" title="Eclipse Debug Configurations" src="http://www.andreimosso.com/wp-content/uploads/2008/11/screenshot-debug-configurations.png" alt="Eclipse Debug Configurations" width="640" /></p>
<p>Asegúrate de que el servidor Weblogic esté corriendo y que alguno de tus proyectos de Eclipse esté corriendo sobre el servidor. Ahora haz clic sobre el botón <em>Debug</em> para conectarse al servidor Weblogic y empezar a cachar las llamadas al <em>debugger</em>.</p>
<p>Eso fue todo. Es bastante sencillo pero muy útil cuando se requiere depurar una aplicación web que está un ambiente remoto.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.andreimosso.com/?feed=rss2&amp;p=141</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Modelado de BDs: MySQL Workbench</title>
		<link>http://www.andreimosso.com/?p=129&amp;utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=modelado-de-bds-mysql-workbench</link>
		<comments>http://www.andreimosso.com/?p=129#comments</comments>
		<pubDate>Thu, 17 Apr 2008 14:00:21 +0000</pubDate>
		<dc:creator>moshin</dc:creator>
				<category><![CDATA[programación]]></category>

		<guid isPermaLink="false">http://www.andreimosso.com/?p=129</guid>
		<description><![CDATA[¡Al fin un modelador gratis más que decente! Mmh&#8230; creo que no hay mucho más que decir después de eso. Solo me queda listar algunas de las características de esta maravilla: Diagramas E/R. Modelado de tablas, índices, vistas, etc. Modelado de stored procedures, triggers y funciones. Generación de un script SQL. Generación del modelo a partir de un script SQL. Actualización del modelo o del script en cualquier dirección. Guarda el modelo como imagen o PDF. Bueno, esas son algunas de las características de la versión Community. La versión completa cuesta USD$99 al año y cuenta con algunas otras monerías, como interactuar con una base de datos real en lugar de un script SQL, generar documentación y algunas otras cosas más. Sin embargo, la versión gratuita está muy completa.]]></description>
			<content:encoded><![CDATA[<p>¡Al fin un modelador gratis más que decente! Mmh&#8230; creo que no hay mucho más que decir después de eso. Solo me queda listar algunas de las características de esta maravilla:</p>
<p align="center"><a title="MySQL Workbench" href="http://www.mysql.com/products/workbench/"><img class="aligncenter size-full wp-image-130" style="vertical-align: middle;" title="MySQL Workbench" src="http://www.andreimosso.com/wp-content/uploads/2008/04/mysql_workbench.jpg" alt="MySQL Workbench" /></a></p>
<div class="list4">
<ul>
<li>Diagramas E/R.</li>
<li>Modelado de tablas, índices, vistas, etc.</li>
<li>Modelado de <em>stored procedures</em>, <em>triggers</em> y funciones.</li>
<li>Generación de un <em>script</em> SQL.</li>
<li>Generación del modelo a partir de un <em>script</em> SQL.</li>
<li>Actualización del modelo o del <em>script</em> en cualquier dirección.</li>
<li>Guarda el modelo como imagen o PDF.</li>
</ul>
</div>
<p>Bueno, esas son algunas de las características de la versión Community. La versión completa cuesta USD$99 al año y cuenta con algunas otras monerías, como interactuar con una base de datos real en lugar de un <em>script</em> SQL, generar documentación y algunas otras cosas más. Sin embargo, la versión gratuita está muy completa.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.andreimosso.com/?feed=rss2&amp;p=129</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Spring MVC Práctico I: Hola Mundo!</title>
		<link>http://www.andreimosso.com/?p=128&amp;utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=spring-mvc-practico-i-hola-mundo</link>
		<comments>http://www.andreimosso.com/?p=128#comments</comments>
		<pubDate>Mon, 14 Apr 2008 06:48:18 +0000</pubDate>
		<dc:creator>moshin</dc:creator>
				<category><![CDATA[java]]></category>
		<category><![CDATA[programación]]></category>
		<category><![CDATA[webapps]]></category>

		<guid isPermaLink="false">http://www.andreimosso.com/?p=154</guid>
		<description><![CDATA[Spring MVC es un framework para desarrollar aplicaciones Java basadas en Web. Dos de los objetivos más importantes de Spring MVC es permitir que el desarrollo se concentre en la lógica del negocio y que se haga empleando buenos principios de diseño orientado a objetos. Para lograrlo se utiliza un concepto muy interesante llamado Inversión del Control, también conocido como el principio Hollywood: &#8220;No nos llames, nosotros te llamaremos.&#8221; Esto permite que el código escrito por los desarrolladores para la lógica principal del sistema no tenga dependencias sobre las clases del framework; lo cual redunda en un código mucho más limpio y con la posibilidad de utilizar todas las ventajas de la programación orientada a objetos (específicamente la herencia). Ya que tenemos una idea de la utilidad de Spring MVC, pongamos manos a la obra. Configurar un ambiente de desarrollo con Eclipse, Tomcat y Spring MVC. Escribir una aplicación básica para demostrar el funcionamiento del framework. Java 5 o superior Apache Tomcat Eclipse Desacargar Spring (con dependencias) Para empezar hay que instalar las herramientas necesarias para desarrollar una aplicación Web con Eclipse. Primero abre la ventana de instalación de nuevos paquetes haciendo click en la ruta Help >> Software Updates [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.springframework.org/">Spring</a> MVC es un <em>framework</em> para desarrollar aplicaciones Java basadas en Web. Dos de los objetivos más importantes de Spring MVC es permitir que el desarrollo se concentre en la lógica del negocio y que se haga empleando buenos principios de diseño orientado a objetos.</p>
<p align="center">
<a href='http://www.springframework.org/' title='Spring 2.5'><img src='http://www.andreimosso.com/wp-content/uploads/2007/11/spring25.png' alt='Spring 2.5' /></a>
</p>
<p>Para lograrlo se utiliza un concepto muy interesante llamado Inversión del Control, también conocido como el principio Hollywood: &#8220;No nos llames, nosotros te llamaremos.&#8221; Esto permite que el código escrito por los desarrolladores para la lógica principal del sistema no tenga dependencias sobre las clases del <em>framework</em>; lo cual redunda en un código mucho más limpio y con la posibilidad de utilizar todas las ventajas de la programación orientada a objetos (específicamente la herencia).</p>
<p>Ya que tenemos una idea de la utilidad de Spring MVC, pongamos manos a la obra.</p>
<p><span class="highlight">Objetivos:</span></p>
<div class="list4">
<ul>
<li>Configurar un ambiente de desarrollo con Eclipse, Tomcat y Spring MVC.</li>
<li>Escribir una aplicación básica para demostrar el funcionamiento del <em>framework</em>.</li>
</ul>
</div>
<p><span class="highlight">Prerequisitos:</span></p>
<div class="list4">
<ul>
<li><a href="http://java.sun.com/javase/downloads/?intcmp=1281">Java 5 o superior</a></li>
<li><a href="http://tomcat.apache.org/download-60.cgi">Apache Tomcat</a></li>
<li><a href="http://www.eclipse.org/downloads/download.php?file=/technology/epp/downloads/release/20071103/eclipse-java-europa-fall2-win32.zip">Eclipse</a></li>
<li><a href="http://www.springframework.org/download">Desacargar Spring</a> (con dependencias)</li>
</ul>
</div>
<p><span id="more-128"></span><br />
<span class="highlight">1. Instalando herramientas necesarias en Eclispe</span></p>
<p>Para empezar hay que instalar las herramientas necesarias para desarrollar una aplicación Web con Eclipse. Primero abre la ventana de instalación de nuevos paquetes haciendo click en la ruta Help >> Software Updates >> Find and Install&#8230;<br />
Selecciona la opción <em>Search for new features to install</em> y haz click en <em>Next</em>.</p>
<p align="center">
<img src='http://www.andreimosso.com/wp-content/uploads/2007/12/2_search_for_new_features.png' alt='Search for New Features' />
</p>
<p>Selecciona Europa Discovery Site.</p>
<p align="center">
<img src='http://www.andreimosso.com/wp-content/uploads/2007/12/3_select_sites.png' alt='Selected Sites' />
</p>
<p>Haz click en <em>Finish</em> y selecciona un <em>mirror</em>. En la pantalla siguiente selecciona Web and JEE Development, te marcará un error diciendo que las dependencias no están satisfechas, para lo cual presionamos el botón <em>Select Required</em>.</p>
<p align="center">
<img src='http://www.andreimosso.com/wp-content/uploads/2007/12/4_selected_packages.png' alt='Selected Packages' />
</p>
<p>Después haz click en <em>Next</em>, acepta las licencias, de nuevo click en <em>Next</em> y luego en <em>Finish</em>. El manejador de actualizaciones empezará a descargar los paquetes necesarios.</p>
<p><span class="highlight">2. Creando un proyecto Web</span></p>
<p>Una vez terminada la descarga e instalación haz click en File >> New >> Project. Selecciona Web >> Dynamic Web Project y haz click en <em>Next</em>. Elige un nombre para el proyecto (este nombre formará parte del URL), yo llamaré a mi proyecto <span class="highlight">spring1</span>. Por último haz click en <em>Finish</em>.</p>
<p align="center">
<img src='http://www.andreimosso.com/wp-content/uploads/2007/12/5_new_web_project.png' alt='New Web Project' />
</p>
<p>Ahora vamos a integrar nuestra instalación de Tomcat para controlarla desde Eclipse, para lo cual vamos a Window >> Show View >> Other. En esta ventana selecciona <em>Servers</em> y haz click en Ok.</p>
<p align="center">
<img src='http://www.andreimosso.com/wp-content/uploads/2007/12/6_servers_view.png' alt='Servers View' />
</p>
<p>Para crear un nuevo servidor en Eclipse haz click derecho sobre el espacio blanco de la vista <em>Servers</em> y haz click en New >> Server. Elige el servidor que estarás usando (para efectos de este tutorial usaremos Tomcat, pero puede ser cuelquier otro contenedor de servlets, como JBoss o Weblogic).</p>
<p align="center">
<img src='http://www.andreimosso.com/wp-content/uploads/2007/12/7_new_server.png' alt='New Server' />
</p>
<p>Haz click en <em>Next</em>. En la siguiente pantalla selecciona la carpeta en la que se encuentra instalado Tomcat y haz click en <em>Finish</em>. Debe aparecer una nueva entrada en la vista <em>Servers</em> representando al servidor Tomcat que acabas de configurar.</p>
<p align="center">
<img src='http://www.andreimosso.com/wp-content/uploads/2007/12/8_tomcat_server.png' alt='Tomcat Server' />
</p>
<p>Ahora agreguemos nuestro proyecto al Tomcat para que haga el <em>deploy</em> automáticamente, para lo cual hay que hacer click sobre el servidor Tomcat y luego en <em>Add and Remove Projects</em>. Aparecerá la siguiente ventana, donde hay que pasar el proyecto <span class="highlight">spring1</span> de <em>Available Projects</em> a <em>Configured Projects</em> y luego haz click en <em>Finish</em>.</p>
<p align="center">
<img src='http://www.andreimosso.com/wp-content/uploads/2007/12/9_add_project_to_tomcat.png' alt='Add Project to Tomcat' />
</p>
<p>Es hora de probar que todo funcione hasta ahora. Haz click derecho sobre el del servidor que acabamos de configurar y luego en <em>Start</em>. A continuación se mostrará la consola del servidor, el cual debe arrancar sin problemas. Ahora abre tu navegador favorito y abre la dirección <a href="http://localhost:8080/spring1/">http://localhost:8080/spring1/</a>. Si se muestra un error 404 todo está bien (hasta ahora). El error es por que no hemos creado una página de inicio; según nuestro archivo WebContent/WEB-INF/web.xml se debe llamar index.jsp, por lo que procedemos a crearlo (en la carpeta WebContent):</p>
<div class="blockquote">
<pre>
&lt;?xml version="1.0" encoding="UTF-8" ?&gt;
&lt;%@ page language="java" contentType="text/html; charset=UTF-8"
		pageEncoding="UTF-8"%&gt;
&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
		"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;
&lt;html xmlns="http://www.w3.org/1999/xhtml"&gt;
	&lt;head&gt;
		&lt;meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /&gt;
		&lt;title&gt;Hola Mundo!&lt;/title&gt;
	&lt;/head&gt;
	&lt;body&gt;
		Hola Mundo!
	&lt;/body&gt;
&lt;/html&gt;
</pre>
<p><span></span></div>
<div class="clearnospacing"></div>
<p><br/></p>
<p>Si vuelves a checar <a href="http://localhost:8080/spring1/">http://localhost:8080/spring1/</a> te aparecerá el contenido de index.jsp.</p>
<p><span class="highlight">3. Spring MVC</span></p>
<p>Por si no lo han notado aún, lo que hemos hecho hasta ahora no ha tenido mucho que ver con Spring. Esto se debe a que solo hemos configurado un ambiente para desarrollo de aplicaciones JEE, lo cual nos facilitará las cosas para crear nuestra aplicación Spring MVC.</p>
<p>Ahora viene lo bueno. A manera de resumen, para crear un proyecto (mínimo) Spring MVC hay que seguir los siguientes pasos:</p>
<div class="list4">
<ul>
<li>Colocar las <span class="highlight">librerías</span> necesarias.</li>
<li>Configurar al <span class="highlight">DispatchServlet</span> como FrontController.</li>
<li>Configurar un <em>View Resolver</em> para asociar las vistas a los controladores.</li>
<li>&lt;loop_begin&gt;</li>
<li>Escribir un controlador y agregarlo al contexto del DispatcherServlet.</li>
<li>Escribir una vista (JSP).</li>
<li>&lt;loop_end&gt;</li>
</ul>
</div>
<p>3.1 Colocar las librerías necesarias</p>
<p>Copia los siguientes archivos a la carpeta WebContent/WEB-INF/lib del proyecto:</p>
<div class="list4">
<ul>
<li>spring-framework-2.5/dist/spring.jar</li>
<li>spring-framework-2.5/dist/modules/spring-webmvc.jar</li>
<li>spring-framework-2.5/lib/jakarta-commons/commons-logging.jar</li>
<li>spring-framework-2.5/lib/j2ee/servlet-api.jar</li>
</ul>
</div>
<p>3.2 Configurar al DispatchServlet como FrontController</p>
<p>Agrega lo siguiente al archivo WebContent/WEB-INF/web.xml dentro del tag <code>web-app</code>. El nombre que le daremos a este Servlet también será muy importante, ya que formará parte del nombre de el(los) archivo(s) de configuración del contexto del FrontController, donde definiremos los Beans que formarán nuestra aplicación.</p>
<div class="blockquote">
<pre>
&lt;servlet&gt;
	&lt;servlet-name&gt;spring1&lt;/servlet-name&gt;
	&lt;servlet-class&gt;
		org.springframework.web.servlet.DispatcherServlet
	&lt;/servlet-class&gt;
	&lt;load-on-startup&gt;1&lt;/load-on-startup&gt;
&lt;/servlet&gt;
</pre>
<p><span></span></div>
<div class="clearnospacing"></div>
<p><br/></p>
<p>La anterior definición solo le dice a Tomcat que cargue al DispatcherServlet al iniciar. Ahora hay que decirle qué URLs serán procesadas por Spring. Como pueden ver, el <code>url-pattern</code> incluye todas las direcciones que terminan con .jsp, en realidad esta es una terminación arbitraria y podemos sustituirla por cualquier cosa.</p>
<div class="blockquote">
<pre>
&lt;servlet-mapping&gt;
	&lt;servlet-name&gt;spring1&lt;/servlet-name&gt;
	&lt;url-pattern&gt;*.jsp&lt;/url-pattern&gt;
&lt;/servlet-mapping&gt;
</pre>
<p><span></span></div>
<div class="clearnospacing"></div>
<p><br/></p>
<p>3.3 Configurar un <em>View Resolver</em> para asociar las vistas a los controladores</p>
<p>El <em>View Resolver</em> es un bean que se define en el contexto de la aplicación (del DispatcherServlet). Para lo cual debemos crear un archivo llamado spring1-servlet.xml en la carpeta WebContent/WEB-INF/. El archivo tiene el siguiente contenido:</p>
<div class="blockquote">
<pre>
&lt;?xml version="1.0" encoding="UTF-8"?&gt;

&lt;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"&gt;

	&lt;bean id="viewResolver"
		class="org.springframework.web.servlet.view.InternalResourceViewResolver"&gt;
		&lt;property name="prefix" value="/WEB-INF/jsp/" /&gt;
		&lt;property name="suffix" value=".jsp"/&gt;
	&lt;/bean&gt;
&lt;/beans&gt;
</pre>
<p><span></span></div>
<div class="clearnospacing"></div>
<p><br/></p>
<p>En el código anterior hay tres cosas que notar: 1) El <em>View Resolver</em> que se utiliza. InternalResourceViewResolver es uno de los más sencillos y fáciles de usar, pero existen otros con mayor flexibilidad. 2) La <em>property</em> &#8220;prefix&#8221; define la carpeta en donde se encuentran las vistas. 3) La <em>property</em> &#8220;suffix&#8221; define la extensión de los archivos de las vistas.</p>
<p>3.4 Escribir un controlador y agregarlo al contexto del DispatcherServlet</p>
<p>Spring MVC prevee varios tipos de controladores que tienen usos diferentes, por ejemplo:</p>
<div class="list4">
<ul>
<li>Los que manejan un simple <em>request</em>, pero que no tienen ningún tipo de workflow.</li>
<li>Los <em>form controllers</em> que manejan el ciclo de vida completo de una forma XHTML.</li>
<li>Los <em>wizard controllers</em> que pueden manejar múltiples flujos de trabajo.</li>
</ul>
</div>
<p>En este caso usaremos el más sencillo: AbstractController.</p>
<div class="blockquote">
<pre>
package com.andreimosso.spring1.controller;

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

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

public class HomeController extends AbstractController {

	@Override
	protected ModelAndView handleRequestInternal(HttpServletRequest request,
			HttpServletResponse response) throws Exception {

		return new ModelAndView("home");
	}
}
</pre>
<p><span></span></div>
<div class="clearnospacing"></div>
<p><br/></p>
<p>Aquí debemos considerar un par de cosas importantes: 1) Los controladores deben implementar el método handleRequestInternal, que recibe un <em>request</em> y un <em>response</em>, y que también debe regresar un objeto de tipo ModelAndView. Este último objeto, como su nombre indica, contiene la información necesaria para representar al modelo y a la vista asociadas a un controlador. En este caso vemos que en el constructor del objeto ModelAndView se para una cadena: &#8220;home&#8221;. Esta cadena será utilizada por el <em>View Resolver</em> para generar el <em>path</em> para localizar al archivo de la vista (ejemplo: WebContent/WEB-INF/jsp/home.jsp).</p>
<p>Lo único que resta con el controlador es agregarlo al contexto de la aplicación. Agregaremos un <em>bean</em> más al archivo spring1-servlet.xml que haga referencia al controlador que recien creamos.</p>
<div class="blockquote">
<pre>
&lt;bean name="/home.htm" class="com.andreimosso.spring1.controller.HomeController"/&gt;
</pre>
<p><span></span></div>
<div class="clearnospacing"></div>
<p><br/></p>
<p>3.5 Escribir una vista (JSP)</p>
<p>Crea un archivo llamado home.jsp en la carpeta WebContent/WEB-INF/jsp/ con el siguiente contenido.</p>
<div class="blockquote">
<pre>
&lt;?xml version="1.0" encoding="UTF-8" ?&gt;
&lt;%@ page language="java" contentType="text/html; charset=UTF-8"
		pageEncoding="UTF-8"%&gt;
&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
		"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;
&lt;html xmlns="http://www.w3.org/1999/xhtml"&gt;
	&lt;head&gt;
		&lt;meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /&gt;
		&lt;title&gt;Insert title here&lt;/title&gt;
	&lt;/head&gt;
	&lt;body&gt;
		Hola Mundo!
	&lt;/body&gt;
&lt;/html&gt;
</pre>
<p><span></span></div>
<div class="clearnospacing"></div>
<p><br/></p>
<p>Finalmente podremos ver los resultados de todo este trabajo. Abre la siguiente dirección en tu navegador <a href="http://localhost:8080/spring1/home.htm">http://localhost:8080/spring1/home.htm</a> y verifica que se despliegue el contenido que definiste en la vista home.jsp.</p>
<p>Con esto concluye el ejercicio más simple que hay en Spring MVC. Sin embargo, a veces lo más difícil es ponernos sobre los pies y dar el primer paso. Espero pronto publicar una secuela a este post para manejar información enviada en una forma y tal vez un tercer post para acceso a bases de datos.</p>
<p>Espero que este tutorial haya sido de utilidad. Hasta la próxima.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.andreimosso.com/?feed=rss2&amp;p=128</wfw:commentRss>
		<slash:comments>34</slash:comments>
		</item>
		<item>
		<title>Libro Gratis: Starting Struts 2</title>
		<link>http://www.andreimosso.com/?p=126&amp;utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=libro-gratis-starting-struts-2</link>
		<comments>http://www.andreimosso.com/?p=126#comments</comments>
		<pubDate>Fri, 01 Feb 2008 05:57:15 +0000</pubDate>
		<dc:creator>moshin</dc:creator>
				<category><![CDATA[java]]></category>
		<category><![CDATA[literatura]]></category>

		<guid isPermaLink="false">http://www.andreimosso.com/?p=170</guid>
		<description><![CDATA[Con el pretexto de no dejar que enero se quede sin posts decidí que publicaría este recurso para que quien quiera dejar la obsolesencia y comenzar a escribir aplicaciones Web con uno de los mejores frameworks Java que existen, estoy hablando de Struts 2. Este framework mejora y reemplaza muchas de las prácticas que se tenían en la versión 1 de Struts y no me sorprendería que llegue a tener la misma aceptación que su antecesor en un futuro cercano; ya que a diferencia de Struts 1, esta versión no apesta. La única condición para hacerse de una copia digital de este libro es registrarse a InfoQ, que por cierto yo recomendaría que se registren aunque no quieran el libro. Bueno, ya basta de preámbulos y vayan por su copia.]]></description>
			<content:encoded><![CDATA[<p>Con el pretexto de no dejar que enero se quede sin posts decidí que publicaría este recurso para que quien quiera dejar la obsolesencia y comenzar a escribir aplicaciones Web con uno de los mejores frameworks Java que existen, estoy hablando de Struts 2. Este framework mejora y reemplaza muchas de las prácticas que se tenían en la versión 1 de Struts y no me sorprendería que llegue a tener la misma aceptación que su antecesor en un futuro cercano; ya que a diferencia de Struts 1, esta versión no apesta.</p>
<p align="center">
<a href='http://www.infoq.com/minibooks/starting-struts2' title='Starting Struts 2'><img src='http://www.andreimosso.com/wp-content/uploads/2008/02/starting_struts_2.jpg' alt='Starting Struts 2' /></a>
</p>
<p>La única condición para hacerse de una copia digital de este libro es registrarse a InfoQ, que por cierto yo recomendaría que se registren aunque no quieran el libro. Bueno, ya basta de preámbulos y <a href="http://www.infoq.com/minibooks/starting-struts2">vayan por su copia</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.andreimosso.com/?feed=rss2&amp;p=126</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Tutorial: Diseñando una Tarjeta de Presentación con Photoshop</title>
		<link>http://www.andreimosso.com/?p=125&amp;utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=tutorial-disenando-una-tarjeta-de-presentacion-con-photoshop</link>
		<comments>http://www.andreimosso.com/?p=125#comments</comments>
		<pubDate>Tue, 18 Dec 2007 20:07:29 +0000</pubDate>
		<dc:creator>moshin</dc:creator>
				<category><![CDATA[diseño]]></category>

		<guid isPermaLink="false">http://www.andreimosso.com/?p=167</guid>
		<description><![CDATA[No hace mucho que comencé a interesarme (otra vez) por el diseño gráfico y comencé a buscar algunos tutoriales. Todo esto a pesar de que generalmente la información en Internet es prácticamente inútil al respecto. Pero esta vez tuve un poco de suerte al encontrarme con PSDTUTS. Es de los pocos sitios de tutoriales que conozco que no solo ayudan a lograr un resultado final, sino que te permite comprender como funcionan las cosas; lo cual es una gran diferencia, ya que esa comprensión libera al aprendiz del caso específico del tutorial para poder crear sus propios diseños. Esta vez recomiendo el tutorial de la tarjeta de presentación que aunque ya lo había visto hace un tiempo, no tiene mucho que me animé a seguirlo; sorprendentemente con muy buenos resultados. He aquí lo que obtuve siguiendo el tutorial: Aunque a los autores les toma un par de días actualizar la página, vale la pena visitarla periódicamente. Para comenzar de inmediato visita el tutorial original (en inglés) o la traducción a español.]]></description>
			<content:encoded><![CDATA[<p>No hace mucho que comencé a interesarme (otra vez) por el diseño gráfico y comencé a buscar algunos tutoriales. Todo esto a pesar de que generalmente la información en Internet es prácticamente inútil al respecto. Pero esta vez tuve un poco de suerte al encontrarme con <a href="http://psdtuts.com/">PSDTUTS</a>. Es de los pocos sitios de tutoriales que conozco que no solo ayudan a lograr un resultado final, sino que te permite comprender como funcionan las cosas; lo cual es una gran diferencia, ya que esa comprensión libera al aprendiz del caso específico del tutorial para poder crear sus propios diseños.</p>
<p>Esta vez recomiendo el tutorial de la tarjeta de presentación que aunque ya lo había visto hace un tiempo, no tiene mucho que me animé a seguirlo; sorprendentemente con muy buenos resultados. He aquí lo que obtuve siguiendo el tutorial:</p>
<p align="center">
<a href='http://www.andreimosso.com/wp-content/uploads/2007/12/business_card_back.jpg' title='Tarjeta Posterior'><img src='http://bak.andreimosso.com/wp-content/uploads/2007/12/business_card_back-150x150.jpg' alt='Tarjeta Posterior' /></a> <a href='http://www.andreimosso.com/wp-content/uploads/2007/12/business_card_front-copy.jpg' title='Tarjeta Frente'><img src='http://bak.andreimosso.com/wp-content/uploads/2007/12/business_card_front-copy-150x150.jpg' alt='Tarjeta Frente' /></a>
</p>
<p>Aunque a los autores les toma un par de días actualizar la página, vale la pena visitarla periódicamente. Para comenzar de inmediato visita el <a href="http://psdtuts.com/designing-tutorials/making-a-print-ready-business-card-using-only-photoshop/">tutorial original</a> (en inglés) o la <a href="http://www.leemiblog.com/Articulos/Diseo/Creando-una-Tarjeta-de-Visita-lista-para-imprimir-usando-slo-Photoshop.html">traducción a español</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.andreimosso.com/?feed=rss2&amp;p=125</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Juego: Escapa!</title>
		<link>http://www.andreimosso.com/?p=145&amp;utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=juego-escapa</link>
		<comments>http://www.andreimosso.com/?p=145#comments</comments>
		<pubDate>Fri, 14 Dec 2007 21:46:14 +0000</pubDate>
		<dc:creator>moshin</dc:creator>
				<category><![CDATA[juegos]]></category>

		<guid isPermaLink="false">http://www.andreimosso.com/?p=164</guid>
		<description><![CDATA[Este juego, aunque ya tiene un par de años, está muy bueno. Según la descripción que lo acompaña, si llegas a durar más de 18 segundos eres un fenómeno. Las reglas son muy sencillas: solo hay que arrastrar el cuadro rojo sin tocar a los bordes y evitando el contacto con los cuadros azules. Ahora mis sospechas quedan fundamentadas: ¡soy un freak! Lo más que pude hacer fueron 23.8 segundos. (Haz click en la imagen para jugar) Gracias al Mosh, por mandarlo.]]></description>
			<content:encoded><![CDATA[<p>Este juego, aunque ya tiene un par de años, está muy bueno. Según la descripción que lo acompaña, si llegas a durar más de 18 segundos eres un fenómeno.<br />
Las reglas son muy sencillas: solo hay que arrastrar el cuadro rojo sin tocar a los bordes y evitando el contacto con los cuadros azules.</p>
<p align="center">
<a href='http://www.andreimosso.com/?p=164' title='Escapa!'><img src='http://www.andreimosso.com/wp-content/uploads/2007/12/escapa.jpg' alt='Escapa!' /></a>
</p>
<p>Ahora mis sospechas quedan fundamentadas: ¡soy un freak! Lo más que pude hacer fueron 23.8 segundos.</p>
<p>(Haz click en la imagen para jugar)</p>
<p>Gracias al Mosh, por mandarlo.<br />
<span id="more-145"></span></p>
<p align="center">
<iframe frameborder="0" style="width: 800px; height: 500px;" src="/wp-content/uploads/2007/12/aguanta18segundos.htm"/></p>
]]></content:encoded>
			<wfw:commentRss>http://www.andreimosso.com/?feed=rss2&amp;p=145</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Conociendo a Flex</title>
		<link>http://www.andreimosso.com/?p=100&amp;utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=conociendo-a-flex</link>
		<comments>http://www.andreimosso.com/?p=100#comments</comments>
		<pubDate>Mon, 19 Nov 2007 23:09:01 +0000</pubDate>
		<dc:creator>moshin</dc:creator>
				<category><![CDATA[webapps]]></category>

		<guid isPermaLink="false">http://www.andreimosso.com/?p=142</guid>
		<description><![CDATA[Hace unos días, después de leer algunos artículos de Matt Raible, comencé a darle una oportunidad a Flex. Desde que Adobe lo anunció, yo no había hecho más que hartarme de todo el hype que ha levantado, pues sigo pensando que es una reacción a OpenLaszlo. A pesar de ese hecho y de que Flex Builder no es gratis, decidí descargar la versión trial y asegurarme de una vez de qué se trata todo el entusiasmo al rededor de Flex. Para no seguir con esta larga historia, les diré lo que más me gustó de Flex. Primero, y puede que para muchos no sea importante, pero para mi si: Flex Builder está basado en Eclipse, por lo que puedo hacer todos mis desarrollos en una sola herramienta. Bueno esa razón es un tanto una manía que tengo con Eclipse. Las demás si son razones de verdad y aprovechando mi experiencia con OpenLaslo, intentaré hacer un par de comparaciones: El compilador está integrado a Flex Builder, por lo que el desarrollo se vuelve muy ágil. En OpenLaszlo hay que tener un contenedor de JSPs para que funcione el asunto y después de un rato el desempeño se degrada mucho El debugger [...]]]></description>
			<content:encoded><![CDATA[<p>Hace unos días, después de leer algunos artículos de <a href="http://raibledesigns.com/resume.jsp">Matt Raible</a>, comencé a darle una oportunidad a <a href="http://www.adobe.com/products/flex/">Flex</a>. Desde que Adobe lo anunció, yo no había hecho más que hartarme de todo el <em>hype</em> que ha levantado, pues sigo pensando que es una reacción a <a href="http://www.openlaszlo.org/">OpenLaszlo</a>. A pesar de ese hecho y de que Flex Builder no es gratis, decidí descargar la versión <em>trial</em> y asegurarme de una vez de qué se trata todo el entusiasmo al rededor de Flex.<br />
Para no seguir con esta larga historia, les diré lo que más me gustó de Flex. Primero, y puede que para muchos no sea importante, pero para mi si: Flex Builder está basado en Eclipse, por lo que puedo hacer todos mis desarrollos en una sola herramienta. Bueno esa razón es un tanto una manía que tengo con Eclipse. Las demás si son razones de verdad y aprovechando mi experiencia con OpenLaslo, intentaré hacer un par de comparaciones:</p>
<div class="list4">
<ul>
<li>El compilador está integrado a Flex Builder, por lo que el desarrollo se vuelve muy ágil. En OpenLaszlo hay que tener un contenedor de JSPs para que funcione el asunto y después de un rato el desempeño se degrada mucho</li>
<li>El <em>debugger</em> funciona de maravilla.</li>
<li>El lenguaje de etiquetas me parece más consistente que Laszlo.</li>
<li>Existe la posibilidad de programarlo todo en clases con ActionScript. Creo que esta opción es de gran utilidad para manejar mejor la complejidad con desarrollos más complicados que el &#8220;Hello World&#8221;.</li>
<li>Hay diseñadores en Adobe, por lo que los diseños por defecto en Flex están muy bonitos. Pero más allá de eso, es muy fácil aplicar un <em>look</em> personalizado a los componentes con CSS. En OpenLaslo la personalización de los componentes gráficos es una pesadilla.</li>
<li>La documentación (al estilo Javadoc!) es abundante y en la Interner hay ejemplos para casi todo.</li>
</ul>
</div>
<p>Bien, pues fue todo por hoy. Solo me queda decir que ya comienzo a superar los sentimientos encontrados, ya que por un lado me duele un poco dejar a OpenLaslo (la alternativa origina y abierta) por Flex. Pero por otro lado me alegro de haberme animado a probar Flex, que ha hecho el desarrollo de RIAs un poco más sencillo.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.andreimosso.com/?feed=rss2&amp;p=100</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

