Mikeylla: El eje de mi mundo

21 de Noviembre, el día mas felíz de mi existencia en este mundo. Se dio el nacimiento de primera hija Mikeylla Alessandra, a las 00:18 para ser mas exacto y como comprenderan no tengo palabras para expresar todo lo que siento. Siempre escuche lo que es traer hijos a este mundo pero definitivamente nada como vivirlo y experimentarlo de carne propia.

p1000635

Solo me queda agradecer a Dios, por enviarme este angelito y disfrutar de mi nueva vida.

Como re-inicializar una variable del tipo StringBuilder

Esta es una de las tantas formas de como poder re-inicializar un variable del tipo StringBuilder. Como sabemos a veces resulta mas eficiente manejar variables del tipo StringBuilder que del tipo String, por razones obvias.

Imaginense tener una variable del tipo String en donde tenemos que concatenar varios campos, lo que hariamos seria algo como esto:

String cad = campo_1 + campo_2 + campo_3 + …. + campo_n

y de esta forma estaremos realizando una instancia por cada campo. Cosa contraria pasa con StringBuilder, en donde esto solo se instanciaria una sola vez

StringBuilder cad = new StringBuilder();

cad.append(campo_1).append(campo_2).append(campo_3)…..append(campo_n);

Bueno, al tema, para poder re-inicializar esta variable cad lo unico que tendriamos que hacer seria:

cad.delete(0,cad.length());

De esta forma yo pude realizar la re-inicializacion de esta variable, y volver a utilizarla, dado que lo trabaja dentro de un bucle y concatenaba varios campos.

Corrigiendo el error “getOutputStream() has already…”

En el post anterior mencione una manera de poder crear un código captcha para trabajar con paginas jsp. Bueno, revisando este código me tope con que el log del servidor(GlassFish) me arrojaba un error que quizas para muchos que trabajen con esto les sea algo familiar:

error_getoutputstream

En mi caso esto solo me aparecia en el log del servidor pero en algunos casos la excepción no deja cargar la página (Error 500). Parte del código para generar el captcha es el siguiente:

response

El cual a este punto es donde me genera el error. Ahora, para poder corregir esto lo que tendriamos que agregar seria lo que esta en el recuadro de color rojo en la imagen siguiente:

response_01

De esta manera estariamos dando una posible solución a este problema; por lo menos a mi me funcionó :).

Creando un “CAPTCHA” con JSP

Quizas algunos ya conozcan este término, pero para los que no lo conozcan, Captcha es el acrónimo de Completely Automated Public Turing test to tell Computers and Humans Apart (Prueba de Turing pública y automática para diferenciar a máquinas y humanos).

Se trata de una prueba desafío-respuesta utilizada en computación para determinar cuándo el usuario es o no humano. (Fuente: Wikipedia). En algunos casos (por no decir la mayoria) es una forma de seguridad, el de tratar de evitar o reducir de alguna manera el ataque de sites que solicitan datos para acceso ya sea usuario y contraseñas, para la realización de algun tipo de operacion.

Este código esta hecho para trabajar con JSP, y lo encontre en la web y le hice unas pequeñas modificaciones para poder adaptarla a mi proyecto.

captcha

Descarga el código captcha

PD: Se me olvido, para poder llamar al codigo desde una pagina jsp lo hacemos de la siguiente manera <img src=’Captcha.jsp’>

Manejo de Sesiones con Struts en NetBeans 6.1

Retomando el blog luego de un pequeño receso, seguiremos viendo alguna formas simples de poder trabajar con sesiones, como vimos en un post anterior lo trabajamos de manera basica con servlets, ahora veremos como es que podemos trabajarlo utilizando Struts, no detallo la teoria sobre este framework dado que lo podemos encontrar en la web, pasaremos defrente a la parte práctica.

Bueno para eso ya sabemos que hacer, abrimos nuestro Netbeans y creamos un proyecto web al cual llamaremos LoginStruts, seleccionamos el server con el que trabajaremos (Apache Tomcat) y luego en la parte donde dice seleccionar framework, escogemos Struts 1.29 nos mostrara un detalle como este:

loginstruts_01

Para este pequeño articulo no tocaremos esta parte, solo lo dejaremos por defecto y finalizamos. Una vez realizado este proceso tendriamos la siguiente estructura creada.

loginstruts_02

Al abrir el archivo “index.jsp” nos damos cuenta que tenemos solo la siguiente linea: <jsp:forward page=”Welcome.do”/>, el cual indica que lo unico que haria es un redireccionamiento a la pagina “Welcome.do”, pero se preguntaran ¿de donde sale la pagina “Welcome.do”?, alli es donde entra a tallar el archivo de configuración “struts-config.xml”:

loginstruts_03

En el circulo de color rojo que muestro en la figura es lo que nos interesa. Alli podemos obervar la accion que se realiza al utilizar “Welcome.do“, el de redireccionar a la pagina “welcomeStruts.jsp”. Para que no haya confusion podemos borrar el forward que dentro de los tags “<global-forwards>”, dado que es suficiente con el action.

Ya sabemos como parte inicial para que sirve el action en el archivo de configuracion, ahora pasamos a  crear una pagina jsp a la que llamaremos “menu.jsp” la que nos servira como pagina de carga luego del logueo correcto.

Luego pasamos a crear nuestra primera clase (Bean), la que manejaria las variables de usuario y password, las cuales la  “seteariamos” utilizando etiquetas struts desde el archivo “welcomeStruts.jsp”. A esta clase la llamaremos “LoginForm.java” y la crearemos dentro del paquete que se creo por defecto o de lo contrario creamos nuestros propios paquetes y lo creamos alli, para este caso utilizare el paquete por defecto, quedando la clase de la siguiente manera.

loginstruts_042

Fijense en la parte superior que esta con el recuadro de color rojo, eso es muy importante dado de que esta manera haremos que los valores que se “seteen” desde la pagina principal “welcomeStruts.jsp” puedan ser utilizados desde nuestra clase que haria el action.

Bueno, ya creamos el bean que almacenaria la informacion inicial, ahora lo que tenemos que hacer es registrar este bean dentro del archivo de configuracion “struts-config.xml” y lo ubicamos dentro de los tags “<form-beans>”. Para eso podemos hacer manualmente o tambien dentro del archivo de configuracion hacemos click derecho y elegimos el menu struts y luego escogemos “Add ActionForm Bean” de la siguiente manera:

loginstruts_06

Y luego nos aparecera la siguiente ventana en la cual agregaremos el nombre del bean y la clase que lo contiene.

loginstruts_07

Una vez realizado este proceso ya tendriamos el bean registrado en el archivo de configuracion quedando de la siguiente forma:

<form-beans>
<form-bean name=”LoginForm” type=”com.myapp.struts.LoginForm”/>
</form-beans>

Ahora, nos toca crear la clase que haria la accion, para eso nos ubicamos en el proyecto y le damos click derecho; seleccionamos “Struts Action” de la siguiente forma:

loginstruts_05

Se nos abrira un ventana en la cual nos pedira que agreguemos el nombre de la clase que haria la accion, para este caso le pondremos “LoginAction.java” y en el Action Path le pondremos “/Login”. Este ultimo parametro lo utilizaremos para registrarlo en archivo de configuracion y tambien para utilizarlo en action del formulario de nuestra pagina principal.

loginstruts_08

Le damos click en siguiente y tendremos el siguiente cuadro

loginstruts_09

En donde pueden observar que en el “ActionForm Bean Name” esta seleccionado nuestro bean “LoginForm”, en la opcion “Input Resource” borramos el “/” y listo le damos click en finalizar; podemos ver que en el archivo de configuracion esta registrado nuestro “Struts Action” de la siguiente forma

loginstruts_12

Ahora lo que haremos seria agregar dos forward al action uno que indicaria que hacer cuando el login sera correcto y otro cuando es incorrecto. Para esto damos click derecho sobre el archivo de configuracion y vamos al menu “struts” -> “Add forward” al cual llenamos los campos segun la figura:

loginstruts_10

y lo mismo hacemos para cuando es incorrecto quedando el archivo de configuracion de la siguiente manera:

loginstruts_11

Ahora nos metemos en el archivo LoginAction.java y escribimos el siguiente codigo:

loginstruts_13

Como podran darse cuenta tengo dos variables, usuario y password, el cual sus valores lo obtego instanciando al bean “LoginForm” y asi poder validar.

Si el usuario y clave es correcto se realizaria el envio de la variable SUCESS o en caso contrario se enviaria FAILURE, para cualquiera de estos casos se sabria que hacer de acuerdo a lo indicado en el archivo de configuracion (con los forward).

Ahora para terminar, se tendria que ingresar esos valores al bean; recuerdan que teniamos una pagina llamada “welcomeStruts.jsp” aqui es donde enviaremos los datos modificando el codigo, borramos todo el contenido del body y agregamos lo siguiente:

loginstruts_141

hay que fijarse en la parte resaltada con los recuadros de color rojo, ya que es muy importante, vemos que en el action tenemos “/Login” que es lo que tenemos registrado en el archivo de configuracion. y los campos property del text y password deben ser los mismos que del bean. Ya dependera de uds. que poner en el archivo “menu.jsp” 😛

Bueno, hasta aqui llego con el manejo de sessiones con struts espero haberme explicado con esto, cualquier comentario o duda solo postearlo.

PD: Disculpen, los errores ortograficos son a proposito.