Empezamos la semana con los ejercicios pendientes, siempre tenemos algo que revisar y además nos viene bien para calentar...
Vamos a dar un repaso a dos conceptos importantes que, aunque tenemos claro lo que es, nos cuesta un poco programar con ellos. Estos conceptos son: Cookie y Session. Estos dos tipos de validación nos va a venir muy bien para controlar las sesiones abiertas o cerradas de los usuarios.
Una Cookie tiene una vida que el programador puede controlar. Vamos a usar este tipo de variables para mantener al usuario logado durante la sesión de navegador.
Una variable de Session es una forma de mantener variables 'globales' entre diversos enlaces. Además este tipo de variables son de lo que se lllaman 'de Servidor'. Esto lo que implica es que se le asigna a la variable un Id sobre el que se va creando objetos pero la vida de la sesión se marca sobre el servidor y no lo hace el programador sino que el que lo controla es el Administrador del servidor.
Por esta razón, vamos a usar Cookies para mantener al usuario logado.
El código para ponerlo en la parte de Servlet es:
//Crear una nueva cookie
Cookie miCookie = new Cookie("logado","true");
//Darle el tiempo de vida
miCookie.setMaxAge(60*60*24);
//Guardarla en el navegador del cliente.
response.addCookie(miCookie);
try {
Cookie [] cookies = request.getCookies();
for(int i=0; i
//Aqui pondremos el código que deseemos.
}
} finally { out.close();}
En la parte de JSP sería lo siguiente, antes del codigo HTML.
//Pedir la cookie
Cookie [] cookieActual = request.getCookies();
//Comparo la cookie si vale true
if ((cookieActual).equals(true)){
out.println("LOGEADO");
} else {out.println("por favor logéate");}
Otra parte interesante e importante fue la clase del martes. En esta clase nos instalamos Flash Builder y además vimos ciertos controles muy usados de Navegación (LinkButton, TabNavigator, ViewStack, Accordion y States) y Validación de formularios con Validators y Formateadores.
Voy a dar un pequeño ejemplo para codificar cada uno de los controles mencioandos anteriormente para tener claro su definición. Vease el siguiente código:
LINKBUTTON
**********
mx:LinkButton x="349" y="259" label="Google" click="navigateToURL(new URLRequest('http://www.google.es'),'_self')" includeIn="State1"
TABNAVIGATOR
************
mx:TabNavigator borderStyle="solid" x="20" y="55" includeIn="State1"
mx:VBox label="Tab 1" width="297" height="145" x="15" y="256"
mx:Label text="Menu Principal"/
/mx:VBox
mx:VBox label="Tab 2" width="300" height="150"
mx:Label text="Mis archivos"/
/mx:VBox>
mx:VBox label="Tab 3" width="300" height="150"
mx:Label text="Archivos comunes"/
/mx:VBox
/mx:TabNavigator
VIEWSTACK
*********
s:VGroup includeIn="State1"
mx:HBox borderStyle="solid" width="518"
s:Button id="btnBuscar" label="Busqueda" click="myViewStack.selectedChild=cBuscar;" /
s:Button id="btnInfo" label="Información" click="myViewStack.selectedChild=cInfo;" /
s:Button id="btnAyuda" label="Ayuda" click="myViewStack.selectedChild=cAyuda;" /
mx:ViewStack id="myViewStack" borderStyle="solid" width="100%" height="21"
mx:Canvas id="cBuscar" label="Buscar" /
mx:Canvas id="cInfo" label="Info"
mx:Label text="Informacion"/
/mx:Canvas
mx:Canvas id="cAyuda" label="Ayuda"
mx:Label text="Ayuda"/
/mx:Canvas
/mx:ViewStack
mx:Label text="Busqueda" includeIn="State1"/
/mx:HBox
/s:VGroup
ACCORDION
*********
mx:Accordion x="218" y="320" width="200" height="200" includeIn="State1"
s:NavigatorContent label="Inicio" width="100%" height="100%"
/s:NavigatorContent
s:NavigatorContent label="Registro" width="100%" height="100%"
/s:NavigatorContent
/mx:Accordion
STATES
******
s:states>
s:State name="State1"/
s:State name="Inicial"/
s:State name="Principal"/
/s:states>
Después de ver unos ejemplos de los controles de navegación veremos la vadilación de formularios. Es muy importante validar y controlar que al enviar un formulario todos los datos esten bien y sean correctos. La manera de hacerlo es con Validators y Formatters.
El primero lo que hacen es que validan los datos de los controles que le indiquemos por codigo. Hay Validators que son especificos para Cadenas de texto, para números de telefono, Códigos Postales etc. Hay muchos, nosotros veremos algunos para ver como se utilizan pero el progrmaador deberá buscar el más adecuado según las necesidades del proyecto.
mx:StringValidator source="{txtNombre}" property="text" minLength="6" maxLength="12"
tooShortError="Debes escribir un minimo de 6 caracteres."
tooLongError="Debes escribir como maximo 12 caracteres."
/mx:StringValidator
mx:PhoneNumberValidator id="vTelefono" source="{txtTelefono}" property="text" /
mx:ZipCodeValidator id="vCP" source="{txtCP}" property="text" trigger="{btnSubmit}" triggerEvent="click" wrongLengthError="CP demasiado largo." /
Un Formatter sirve para formatear un control de nuestro formulario a un formato que nosotros deseemos. Por ejemplo, si tenemos un número de teléfono y nosotros necesitamos que se lea de una determinada manera (digamos: ### ## ## ##) necesitaremos un Formatter para indicarlo al programa. Lo haremos de la siguiente manera:
mx:PhoneFormatter id="fTelefono" formatString="### ## ## ##" /
Al igual que los Validators, el programador deberá buscar el Formateador que necesite en cada momento.
El jueves tuvimos clase de inglés. Esta clases son muy interesantes tanto por la profesora que las hace muy amenas como por el contenido de las mismas. La profesora hace juegos de aprendizaje que hacen refrescar conocimientos de una forma divertida y haciendo que no sintamos vergüenza de hablar en una lengua q no es la nuestra.
Esta clase de inglés fue especialmente útil porque vimos como usar correctamente el Simple Past y las condicionales de 2º grado. Ambos temas muy importantes para cualquier tipo de conversación.
Para la próxima clase tengo pensado pedirle a la profesora que nos explique como hacer un CV en inglés. Este comentario lo pongo por si alguno de mis compañeros de clase llegan a este punto de lectura del blog (y a mi se me olvida decirlo en la próxima clase) que lo recuerde. Nos vendrá bien a todos, 'I think!'
El viernes fue una clase muy buena. O a mi me lo pareció.
La clase estuvo orientada a mezclar Flex con Java. Esto tiene una utilidad tremenda porque puedes usar ambos códigos a la vez sin tener que elegir cual de los dos lenguajes se ajusta más a tus necesidades. Puedes combinarlos y hacer una programación mucho más facil y segura.
Esta parte la voy a detallar un poco más tanto por su importancia como por su posible dificultad ya que se requieren varios pasos previos antes de ponerse a programar.
1. Crear un proyecto normal en NetBeans y eliminar el fichero index.html que se genera automáticamente ya que usaremos como inicio una página creada en Flex. El Servlet de momento no lo tocamos, éste si va a ser útil en nuestro programa.
2. En Adobe Flash Builder creamos un proyecto. Sobre este proyecto vamos a sus propiedades y en 'Flex Build Path', en el campo de 'Output Folder' cambiar la carpeta 'bin-debug' (viene por defecto) por la ruta de nuestro proyecto en NetBeans (llegar hasta la carpeta WEB, y tener cuidado de NO llegar a WEB-INF).
3. Ahora volvemos a NetBeans, en nuestro Servlet tenemos que cambiar en la parte de ProcessRequest, donde pone "response.setContentType("text/html;charset=UTF-8");" cambiar html por XML.
4. Volvemos a Flash. Aqui tenemos que cambiar, en la carpeta de SRC, el nombre de nuestro fichero mxml por index. Tener cuidado de no poner la extensión .html. Esto se hará automaticamente.
Esta es la base para comunicar ambos programas y ahora toca programar lo que necesitamos en cada uno según las necesidades.
Un detalle importante es la etiqueta HTTPService. Para montar 'dinamicamente' un XML, es decir, con los datos que tenemos en un formulario, debemos configurar nuestro HTTPService de la siguiente forma:
s:HTTPService id="userRequest" url="ServletData" useProxy="false" method="POST" resultFormat="e4x" fault="Comprobar(event)"
mx:request xmlns=""
username {username.text} /username
emailaddress {emailaddress.text} /emailaddress
/mx:request
/s:HTTPService
NOTA: Contad que todo va entre etiquetas (como un XML normal), simplemente este blog interpreta las etiquetas y no las muestra si las pongo como deberian ser.
No hay comentarios:
Publicar un comentario