- May+Alt+L: crea una variable que almacena el valor de retorno de un método
- Ctrl+May+T: abre un cuadro de diálogo para abrir un tipo (clase, interfaz,...)
- Ctrl+May+R: abre un cuadro de diálogo que nos permite abrir un fichero
- Ctrl+May+flecha arriba o abajo: nos permite copiar la línea en la que está el cursor
- Ctrl+D: elimina la línea en la que está el cursor
- Alt+flecha arriba o abajo: mueve la línea en la que está el cursor
- Ctrl+7: añade la dobre barra de comentario en la línea en la que está el cursor
lunes, 9 de febrero de 2009
Atajos de teclado en Eclipse II
Uso de la herramienta de Log de Apache
Apache nos ofrece dos librerías para hacer log de nuestras aplicaciones en consola con funcionalidades más amplias al típico System.out.println().
Introducción al modelo de aplicaciones web en capas
Organización de las clases en paquetes
Introducción a JSP (Java Server Pages)
Las JavaServer Pages (JSP) nos permiten separar la parte dinámica de nuestras páginas Web del HTML estático. Básicamente, conseguimos incrustar código java dentro de un documento HTML cuya extensión ha de ser *.jsp.
Hay tres tipos de construcciones JSP que embeberemos en una página: elementos de script, directivas y acciones. Los elementos de script nos permiten especificar código Java que se convertirá en parte del servlet resultante, las directivas nos permiten controlar la estructura general del servlet, y las acciones nos permiten especificar componentes que deberían ser usuados, y de otro modo controlar el comportamiento del motor JSP. En el siguiente enlace podemos ver una tabla detallada de estas construcciones.
En el modelo MVC, JSP conformaría la vista de nuestra aplicación. En el siguiente tutorial se muestra más detalladamente la especificación JSP:
- Tutorial Servlets y JSP
Hay tres tipos de construcciones JSP que embeberemos en una página: elementos de script, directivas y acciones. Los elementos de script nos permiten especificar código Java que se convertirá en parte del servlet resultante, las directivas nos permiten controlar la estructura general del servlet, y las acciones nos permiten especificar componentes que deberían ser usuados, y de otro modo controlar el comportamiento del motor JSP. En el siguiente enlace podemos ver una tabla detallada de estas construcciones.
En el modelo MVC, JSP conformaría la vista de nuestra aplicación. En el siguiente tutorial se muestra más detalladamente la especificación JSP:
- Tutorial Servlets y JSP
Patrón de diseño Controlador Frontal
¿QUÉ ES UN PATRÓN DE DISEÑO?
Los patrones del diseño tratan los problemas del diseño que se repiten y que se presentan en situaciones particulares del diseño, con el fin de proponer soluciones a ellas. Por lo tanto, los patrones de diseño son soluciones exitosas a problemas comunes.
¿QUÉ ES EL PATRÓN CONTROLADOR FRONTAL (FRONT CONTROLLER)?
Es un patrón de diseño que se basa en usar un controlador como punto inicial para la gestión de las peticiones. El controlador gestiona estas peticiones, y realiza algunas funciones como: comprobación de restricciones de seguridad, manejo de errores, mapear y delegación de las peticiones a otros componentes de la aplicación que se encargarán de generar la vista adecuada para el usuario. La siguiente figura muestra un esquema de ello:

Ventajas:
Los patrones del diseño tratan los problemas del diseño que se repiten y que se presentan en situaciones particulares del diseño, con el fin de proponer soluciones a ellas. Por lo tanto, los patrones de diseño son soluciones exitosas a problemas comunes.
¿QUÉ ES EL PATRÓN CONTROLADOR FRONTAL (FRONT CONTROLLER)?
Es un patrón de diseño que se basa en usar un controlador como punto inicial para la gestión de las peticiones. El controlador gestiona estas peticiones, y realiza algunas funciones como: comprobación de restricciones de seguridad, manejo de errores, mapear y delegación de las peticiones a otros componentes de la aplicación que se encargarán de generar la vista adecuada para el usuario. La siguiente figura muestra un esquema de ello:

Ventajas:
- Tenemos centralizado en un único punto la gestión de las peticiones
- Aumentamos la reusabilidad de código
- Mejoramos la gestión de la seguridad
- La velocidad de respuesta disminuye al tener que ser procesadas las peticiones primero por el controlador.
jueves, 5 de febrero de 2009
Principios POO
En este artículo resumo cinco principios básicos de la programación orientada a objetos:
En los siguientes enlaces se encuentran explicaciones más detalladas a cerca de estos principios
-Principios POO 1
-Principios POO 2
- Responsabilidad única
- Abierto / Cerrado
- Sustitución
- Inversión de dependencia
- Segregación de Interface
En los siguientes enlaces se encuentran explicaciones más detalladas a cerca de estos principios
-Principios POO 1
-Principios POO 2
miércoles, 4 de febrero de 2009
Instalación de testNG en Eclipse
¿QUÉ ES TESTNG?
TestNG es un framework para pruebas y testing que nos permite desarrollar nuestro proyectos usando TDD (Test Driven Development -desarrollo guiado por pruebas). Esta técnica de desarrollo se podría resumir en los siguientes pasos:
Para descargar el proyecto:
TestNG es un framework para pruebas y testing que nos permite desarrollar nuestro proyectos usando TDD (Test Driven Development -desarrollo guiado por pruebas). Esta técnica de desarrollo se podría resumir en los siguientes pasos:
- Se crea una prueba unitaria
- Se verifica que falle
- Se implementa el código que hace que la prueba no falle
- Se verifica que no falle
- Se refactoriza el código
Para descargar el proyecto:
- Nos dirigimos al sitio http://testng.org/doc/download.html
- Descargamos el fichero *.zip que contiene el proyecto
- Abrimos Help->Software Updates
- Pulsamos sobre Add Site...
- En el diálogo escribimos la dirección http://beust.com/eclipse
- Seleccionamos el nuevo sitio y pulsamos sobre Install
- Seguimos el asistente de instalación
- Reiniciamos Eclipse
- Descomprimimos el *.zip del proyecto en nuestra carpeta de trabajo de Eclipse
- Creamos un nuevo proyecto, por ejemplo, un proyecto java
- Le damos el nombre, por ejemplo, testeo y pulsamos siguiente
- Creamos dos nuevas carpetas de fuentes pulsando sobre Create new source folder: a una la llamamos java/src y a la otra java/test. Lo importante es que ambas carpetas tengan la misma raíz, es decir, java (o el nombre que elijamos).
- En la pestaña Libraries del mismo cuadro de diálogo pulsamos sobre Add External JARs...
- En el cuadro de selección de ficheros nos dirigimos a la carpeta del proyecto testng que está en la carpeta workspace de Eclipse y seleccionamos el fichero testng-5.8-jdk15.jar
- Pulsamos sobre finalizar
- En nuetro nuevo proyecto, dentro de la carpeta java/src creamos un nuevo paquete, por ejemplo, es.cea y dentro de la carpeta java/test creamos exactamente el mismo (es.cea). Es muy importante que ambas carpetas el nombre del paquete sea el mismo
- Pulsamos sobre Window->Show View->Other...
- En el campo de texto del diálogo que nos aparece, escribimos testng y nos debe aparecer la vista
- La seleccionamos y listo
- Seleccionamos la clase que queremos comprobar
- Abrimos el menú contextual y seleccionamos Run As->TestNG Test
martes, 3 de febrero de 2009
Evitar recorrer listas con bucles implementando el método equals()
Cuando tenemos una lista de objetos y necesitamos comprobar que un elemento existe en ella podemos resolverlo creando un bucle(for,while,..) junto con una sentencia if que compruebe en cada iteración si el objeto existe. Una opción a esto consiste en lo siguiente:
- Sobreescribir el método equals() de la clase de dicho objeto y establecer qué atributos se tienen en cuenta a la hora de comparar.
- Instanciar un objeto de dicha clase con los mismos valores que el que buscamos
- Usar el método contains(Object o) de la lista con el objeto que hemos creado para comprobar si existe uno igual
Métodos forward(), include(),init() y sendRedirect()
INTRODUCCIÓN
Un servlet/JSP puede invocar de modo directo a un recurso de la web. La idea es poder reenviar la petición (request) a dicho recurso. Para hacer esto necesitamos un RequestDispatcher, que es un referencia que encapsula el recurso. En el siguiente ejemplo (véase la clase PruebaDispatcher) el servlet tiene como "dispatcher" otro servlet (sc es un ServletContext que se obtiene en init()):
RequestDispatcher dispatcher = sc.getRequestDispatcher("/requestimagen");
Observar que el argumento corresponde con el url-pattern de web.xml. La creación del dispatcher se podría escribir de otra forma:
ResquestDispatcher dispatcher = request.getRequestDispatcher("/requestimagen");
Pero se puede observar que este método en ocasiones falla y la documentación de Sun recomienda la primera forma: sc.getRequestDispatcher(arg). El argumento es la ruta del recurso, que debe comenzar con "/" y es interpretado como relativo al contexto actual. Conviene usar getContext() para obtener un RequestDispatcher de recursos en contextos externos.
getRequestDispatcher(arg) retorna null si el ServletContext no puede retornar un RequestDispatcher.
La invocación al recurso se puede hacer de dos formas:
La diferencia entre sendRedirect() y forward() (o también include()) es:
Un servlet/JSP puede invocar de modo directo a un recurso de la web. La idea es poder reenviar la petición (request) a dicho recurso. Para hacer esto necesitamos un RequestDispatcher, que es un referencia que encapsula el recurso. En el siguiente ejemplo (véase la clase PruebaDispatcher) el servlet tiene como "dispatcher" otro servlet (sc es un ServletContext que se obtiene en init()):
RequestDispatcher dispatcher = sc.getRequestDispatcher("/requestimagen");
Observar que el argumento corresponde con el url-pattern de web.xml. La creación del dispatcher se podría escribir de otra forma:
ResquestDispatcher dispatcher = request.getRequestDispatcher("/requestimagen");
Pero se puede observar que este método en ocasiones falla y la documentación de Sun recomienda la primera forma: sc.getRequestDispatcher(arg). El argumento es la ruta del recurso, que debe comenzar con "/" y es interpretado como relativo al contexto actual. Conviene usar getContext() para obtener un RequestDispatcher de recursos en contextos externos.
getRequestDispatcher(arg) retorna null si el ServletContext no puede retornar un RequestDispatcher.
La invocación al recurso se puede hacer de dos formas:
- Incluir el recurso en el flujo de salida. La salida de "/requestimagen" se incluye en la salida del primer servlet.
- Redirigir (forward) la petición al recurso. Funcionalmente semejante a sendRedirect(). Se trata de redirigir la petición a otro componente:
La diferencia entre sendRedirect() y forward() (o también include()) es:
- En sendRedirect() la petición acaba bajo el control del segundo servlet. La URL que se puede ver en el navegador es la del segundo servlet. Además sendRedirect() es un método de HttpResponse
- En forward() o include() la petición se controla por el primer servlet. La URL que se puede ver en el navegador es la del primer servlet.
Suscribirse a:
Entradas (Atom)