sábado, 18 de diciembre de 2010
Semana de bastante práctica... un Blog de Noticias!
Esta semana no ha sido muy teórica, con lo que la información dada el lunes ya tuvimos las pinceladas necesarias para ir enfocando un proyecto de mayor envergadura a los anteriores.
Hemos aprendido a manejar y crear los componentes y eventos de Flex, y ala vez combinar con NetBeans.
La creación de componentes propios a partir de los genéricos de Flex nos permite separar en módulos nuestra aplicación y asi, hacer mucho más rentable la re-utilización de código.
Estos componentes heredan propiedades y comportamientos, lo cual no spuede resultar muy útil (¡ojo, y tambien complicarnos un proyecto!)
Por defecto en un proyecto todo es privado, si queremos hacer una parte pública tenemos que usar [Bindable] en el ActionScript.
En nuestro componente podemos incluir enventos segun las necesidades del proyecto. Para un buen control de nuestros eventos necesitamos:
* Definir un evento con la etiqueta Metadata.
<fx:Metadata>
[Event (name="login" type="ruta de nuestro evento")]
</fx:Metadata>
* Instanciar el evento.
* Disparar el evento.
* Crear un manejador.
* Utilzamos la información desde el objeto event.
Para disparar nuestro evento (pasando parametros si es necesario) desde donde deseemos tenemos que usar:
dispatchEvent(new NombreEvento (XML(result)));
Con estas pinceladas podemos hacer nuestro Blog de Noticias... asi que, ahora sólo toca comentar alguans cosas que yo considero importantes para tener en cuenta dentro del ejercicio propuesto. Vamos a comentar algunas cosillas!
domingo, 12 de diciembre de 2010
Puente de la Constitución...
Esta semanita va a resultar corta puesto que con el puente de cinco días de fiesta pues nos hemos plantado en jueves y con ejercicios por hacer.
Seguimos con el ejercicio del blog de noticias de la semana anterior... aunque un poco fríos y con la sensación de que cuesta concentrarse despues de tantos dias libres, conseguimos seguir adelante con nuestro proyecto y parece que el profesor nos tiene que 'sacar' de la clase al finalizar a las 20:30H!
El viernes damos los últimos retoques a lo que nos queda y seguimos avanzando con las Cookies y las Session. Parece que ha habido algunas dudas con el manejo de Cookies y después de algunas aclaraciones nos explican como usas las Session para controlar el acceso de usuarios... Menuda diferencia! esto es mucho más fácil y lo que es mejor... funcionan a la primera! jajaja!
Como ejercicio nos manda crear un chat con el que tendremos que manejar estas sesiones para ver quien esta conectado y que no haya expirado la sesión. El código a utilizar es el siguiente. (Como siempre, pongo el código refente al tema nuevo de las Session para no liar al lector con el resto de lineas)
/*Creamos nuestra 'variable' de sesión y le damos el valor que necesitemos para después reconocer que se ha logado el usuario. */
HttpSession sesion = request.getSession(true);
String login = "logado";
sesion.setAttribute("usuario",login);
Hay que tener en cuenta que la primera vez que se creauna sesión debe ponerse TRUE, después siempre será False para no macharcar el valor.
Aunque NetBeans nos avisará antes de lanzar el proyecto, tenemos que importar la siguiente libreria para que funcione:
import javax.servlet.http.HttpSession;
El método de controlar y gestionar lo que hemos creado será algo parecido a esto:
HttpSession sesion = request.getSession(false);
String usuario = (String)sesion.getAttribute("usuario");
if (usuario == "logado"){
//Aqui pondriamos toda la funcionalidad en caso de estar logado nuestro usuario.
}
Pues con esto nuevo ya tenemos todos los elementos necesarios para crear un pequeño chat... Ahora sólo toca pensar!
A disfrutar el fin de semana que el lunes tenemos que venir con energia!
miércoles, 1 de diciembre de 2010
Caminando por la cuarta semana...
Estamos a miércoles y creo que, hasta el momento al menos, hemos hecho una de las cosas más importantes... un proyecto de Gestión de Contactos con Flex y Java.
El proyecto esta enfocado a dar de Alta, Baja, Modificar y Buscar un usuario. Estos usuarios están en guardados en una Base de Datos en MySQL con lo que tenemos que hacer la gestión básica de manejo de datos para cualquier empresa.
Los conceptos básicos de cómo he enfocado mi proyecto para gestionarlo han sido estos:
- En la parte de NetBeans he creado diferentes servlets para cada una de las funciones de dar de alta, baja, modificar y buscar usuarios. Además he creado otro servlet para cargar inicialmente en un data grid todos los contactos que tengo almacenados en mi base de datos.
- En la parte de Flash he cargado todo lo que podríamos llamar 'Diseño'. Es decir, todo lo que es el formulario con sus componentes para posteriormente manejarlos desde los servlets y/o proyecto flex.
La manera de comunicar Flex con NetBeans es através de XMLs que se van creando con el objeto HTTPServices que llama al servlet correspondiente, y aquí ejecutar todo lo necesario de codigo java.
< s:HTTPService id="usuarioPeticion" url="svlGestionContactos" useProxy="false" method="POST" resultFormat="e4x" fault="Comprobar(event)">
<mx:request xmlns="">
<idusuarios>{dgContactos.selectedItem.idusuarios}</idusuarios>
<nombre>{nombre.text}</nombre>
<apellidos>{apellidos.text}</apellidos>
<direccion>{direccion.text}</direccion>
<ciudad>{ciudad.text}</ciudad>
<provincia>{provincia}</provincia>
<pais>{pais.text}</pais>
<telefono>{telefono.text}</telefono>
<fax>{fax.text}</fax>
<email>{email.text}</email>
<web>{web.text}</web>
<mensajeria>{mensajeria.text}</mensajeria>
</mx:request>
</s:HTTPService>´
Son importantes las propiedades useProxy="false" y resultFormat="e4x" de HTTPService, siempre deben estar y además, estar con esta configuración.
Fijarse en las etiquetas, ya que estos nombres serán los 'Id' que tendremos que manejar en los servlets para referirnos a los valores.
Utilizaremos <mx:XMLListCollection> para poder gestionar datos de vuelta del Servlet a Flex.
La clase de inglés del jueves sigue sienfo muy interesante. Está vez lo que mejor me vino fue quela profesora se ofreciera a corregirnos nuestros CV en inglés puesto que días antes me habian pedido mi curriculum en este idioma para una empresa y no tenia claro si estaba bien.
El viernes tambien se da una clase muy interesante puesto que se tocan temas de redes sociales y como implementarlos en nuestros códigos.
Lo primero que se da es ReCaptcha para que parezca una caja con letras aleatorias de verificación al crear un nuevo usuario. Hay varias maneras de conseguirlo pero en nuestro caso cogemos el código de Gmail. Hay que tener cuidado con las Keys puesto que serán unicas para nosotros.
También aprendemos a incluir código de Facebook en nuestras aplicaciones. Lo hacemos desde http://developers.facebook.com/plugins Esta página nos ofrece el código ya hecho y con sólo pegarlo en la parte deseada podemos poner un link de 'Me gusta' o de 'Comentario' en un desarrollo nuestro.
Ahora toca practicar y hacer ejercicios para asentar conocimientos. El ejercicio propuesto es el de la creación de una página de gestión de noticias, que llamaremos blog de noticias; con un CRUD para su manejo, con un enlace a redes sociales de Me gusta y de Comentario, además de un control de acceso y alta de usuarios.
Ahora toca disfrutar de un largo y merecido puente de la Constitución! Hasta el jueves!
jueves, 25 de noviembre de 2010
Y vamos por la tercera semana!
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.
viernes, 19 de noviembre de 2010
Segunda semana... y esto pasa de divertido a MUY divertido!
Pues eso! esto ya se complica y vamos aprnediendo de los pequeños detalles que nos dajamos olvidados por el 'ansia' de programar!
El lunes 15 de noviembre empezamos con "Java para web y Flex" y como no, hay que dar pequeños conceptos de lenguajes de programación, de caracteristicas y estas cositas que muchas veces olvidamos que tienen... conceptos tales como Sobrecarga, Polimorfismo, Herencia, Encapsulación. Conceptos básicos que todo programador debe tener presentes a la hora de hacer una programación fácil.
Después de un comienzo teórico, toca instalar NetBeens. La herramienta que usaremos en el curso para poder programar JSP's y Servlet's.
JSP es la parte 'printanble' del programa. Aunque una definición exacta es dificil, podemos decir que es la parte que dibuja en HTML lo que necesitamos mostrar.
¿Servlet? Servlet's son la parte donde se envia y recibe los datos de la pagina JSP. Sin embargo, veremos que tambien pueden ejecutar desde el inicio de una aplicación cambiando unos parametros de inicio de NetBeens. Se puede resumir que es la parte de ejecución e interpretación de código, pero que no está pensada para 'dibujar' en la pagina HTML (aunque sí se puede hacer, no es lo recomendable).
Antes de empezar con sus funcionamientos, quiero recalcar la importancia de las carpetas de proyecto. Los JSP deben crearse en las carpetas de WEB y los Servlet's en la carpeta de Servlet (en SourcePackages).
Para poder mandar la información de un JSP a un Servlet para que la interprete hay que enlazar ambos ficheros. La forma de hacerlo es a traves de la propiedad "action" de los formularios. Ej: form id="miFormulario" action="miServletName" /form
Tambien podemos ejecutar un JSP desde otro, en vez de un Servlet. Entonces lo que tenemos que poner en el action es el nuevo fichero de JSP, pero esta vez no podemos olvidar la extensión del fichero (con los Servlet no hay que hacerlo). Ej: form id="miFormulario" action="miFicheroJSP.jsp" /form
Pero si lo que necesitamos es ejecutar al inicio un Servlet en vez de un JSP, entonces lo que tenemos que hacer es ir a Propiedades del proyecto --> Run --> en la ventana que aparece Display Browser ponemos nuestro Servlet con la extensión .java
El martes seguimos con NetBeens pero algo mucho más práctico, ejercicios y ejemplos para entender mejor toda la teoria del dia anterior.
Además vemos conceptos como .sendRedirect (no manda los datos, sólo 'dibuja' la petición sin devolver nada) y .forward (manda los datos y reconoce los objetos).
Merece la pena mencionar sobre las colecciones (también dimos un repaso sobre ellas) que es recomendable el uso de la propiedad .iterator() en vez de bucles.
Vamos a instalar! Pues ahora nos toca MySQL y Xamp. Por fin datos! es lo ideal para una Administradora de BBDD jejeje.
Una vez instalados los programas, pues nos toca crear la conexión! En vez de poner aquí una parrafada enorme os recomiendo revisar la documentación subida en el site de Google.
El miércoles es un dia para practicaaaaar! y eso hacemos, tenemos que afianzar todos nuestros conocimientos y nada mejor que un ejercicio grande donde esten recogidos todos los conceptos de estos dias. Tenemos que hacer un Quizz.
Este ejercicio consta de varias partes. Por un lado, tenemos la primera página donde se nos van a mostrar una serie de preguntas que están dadas de alta en una base de datos de MySQL. En esa misma página, una vez cargadas las preguntas, se muestra un formulario de Alta de Preguntas (ideal para profesores) para ir añadiendo más preguntas a nuestra BBDD.
Nuestra pagina tiene dos botones uno para registrar la pregunta y otro para realizar el test. Al dar a este último botón, se debe abrir otra pagina con todas las preguntas, pero esta vez habilitadas para ser seleccionada una respuesta (Radio Button). Por supuesto, una vez terminado el cuestionario tiene que ser corregido.
Vamos a ver como seria la interfaz gráfica del ejercicio:
Sin Preguntas cargadas el formulario seria este.
a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgVUE_0uHzbGsmMuZGyR9z-g2V6v5dwj9TuE2ihAasjGCpb7PEfeAvDiangKWRG6YUlh0W83z0PTGBJIQEFFwUUugK61A-UPP3TbmdJ1aM2QaG2DgidQQ9v99YVo2WLqQvmBqASxIo90i0b/s1600/Index_SinPreg.jpg">
/a
Si ya tuviéramos alguna pregunta guardada en nuestra BBDD, la página de inicio sería algo así:
Al pulsar el botón de 'Incluir test' guarda en la BBDD (veremos como hacerlo un poco más abajo). Y si se pulsa el botón de hacer el examen muestra un formulario para responder tipo test. Véase la imagen de abajo.
"Todo esto esta muy bien, ¡¡¡pero como se hace!!!" se preguntará el lector. Sí, sí, vamos a ello... pero sin prisas ¿eh?. Vamos paso a paso. Empezaremos por la parte de cargar las preguntas (si las hay) y de guardarlas, es decir, por la parte SQL.
Es muy importante antes de ver ningún tipo de código en la aplicación que se tengan claros unos conceptos muy básicos de SQL. ¿Sabes qué son y cómo se hacen un CREATE, SELECT, UPDATE, DELETE e INSERT en lenguaje SQL? Si ya lo tienes claro, puedes saltarte este paso pero si crees que te falta algún concepto o tienes alguna pequeña duda, te recomiendo que le éches un vistazo a este enlace 'Repaso de lenguaje SQL Básico'...
Una vez claro lo que son y como se hacen estas operaciones básicas de SQL vamos a dar un pequeño paseo por la programación.
Para cargar las preguntas al iniciar tenemos que hacer un SELECT de nuestra base de datos para recoger nuestros registros y mostrarlos. Consejo: Procura NO usar "SELECT * FROM tabla". Si sólo necesitamos parte de las columnas de la tabla no ¿para qué recoger todos? coge sólo lo que necesites. Y si necesitas todos los campos, hazlo uno a uno por sus nombres ¿por qué? las razones son: Optimizar, Rendimiento y Seguridad.
span style="font-style:italic;"
//Recordar que hay que importar algunas librerias de SQL cuando estamos en un JSP
%@page import="java.sql.ResultSet"%
%@page import="java.sql.Connection"%
%@page import="java.sql.DriverManager"%
%@page import="java.sql.SQLException"%
%@page import="java.sql.Statement"%
%
Connection conn=null;
Statement stm= null;
try{
//crear el driver
Class.forName("com.mysql.jdbc.Driver").newInstance();
//obtener el manejador
// localhost, que en este caso es "prueba",
//el usuario mysql es admin la password es adminadmin
conn=DriverManager.getConnection("jdbc:mysql://localhost/quizz", "root", "");
//obtener el statement
stm = conn.createStatement();
String sql;
//consulta
sql="SELECT * from tblpreguntasrespuestas order by idtblPreguntasRespuestas";
//ejecutar la consulta
ResultSet rst = stm.executeQuery(sql);
while(rst.next()) {
// Columnas. Pintamos el HTML de nuestra Pregunta y Respuestas
out.println("Pregunta: " + rst.getString(2) + "
");
out.println("A. " + rst.getString(3) + "
");
out.println("B. " + rst.getString(4) + "
");
out.println("C. " + rst.getString(5) + "
");
out.println("D. " + rst.getString(6) + "
");
}
//Cerramos el statement
stm.close();
}catch(SQLException err){
System.out.println("Error SQLException: "+ err.getMessage() + "\n" + err.toString()); }
catch(Exception e){System.out.println(e.getMessage());}
finally{
//cerrar la conexion
if (conn!=null){
try{
conn.close();
}catch(Exception e){}
}
}
%
/span
Al pulsar 'Incluir test' ya no hacemos un select, sino que la sentencia requerida es INSERT. Como su nombre indica, esto nos insertará los datos del formulario en la tabla correspondiente. Para el INSERT tanto la creación y cierre de las conexiones como la mayoría del código es igual que lo anterior. Sin embargo si que cambia tanto la sentencia SQL como la propiedad del statement para ejecución. En nuestro caso sería algo asi:
//consulta SQL a ejecutar. Siendo request.getParameter("txtPregunta") el valor insertado en el formulario anterior en la caja 'txtPregunta'
sql="INSERT INTO tblpreguntasrespuestas (Pregunta, Respuesta1, Respuesta2, Respuesta3, Respuesta4, Correcta) VALUES ('" + request.getParameter("txtPregunta")+ "','" + request.getParameter("txtRespuesta1") + "','" + request.getParameter("txtRespuesta2") + "','" + request.getParameter("txtRespuesta3")+ "','" + request.getParameter("txtRespuesta4") + "','" + request.getParameter("txtRespuestaCorrecta")+ "')";
/////////////////////////
//ejecutar la consulta//
///////////////////////
//Remarco esto porque es IMPORTANTE fijarse que cambia respecto al SELECT
stm.executeUpdate(sql);
Sólo recordar que cuando se implementa código en un Servlet también hay que incluir las librerías pertinentes para SQL. Serían de esta forma:
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
¿Qué os ha parecido? intenso ¿no? Por esta razón este ejercicio nos ocupó todo el miercoles y la tarde del viernes. A algunos incluso, parte del lunes... siempre hay alguna 'chorrada' que se atasca o deja de funcionar de repente. Pero lo importante es aprender avanzando! Animo muchach@s!!!
El jueves fue un poco más relajado ya que la clase fue de inglés. Una profesora escocesa que hizo pasar un rato divertido! Fue una toma de contacto perfecta, ha hecho que la gente de clase hablaran unos con otros y nos conocieramos mejor. Te das cuenta que es un buen grupo el que se ha juntado.
El viernes fue practicar un poco lo que habiamos dado el resto de la semana y vimos la validación de formularios y control de errores con la etiqueta span y los elementos .getElement(byName) y .getElement(byId).
viernes, 12 de noviembre de 2010
Primera semana del curso
En esta semana no hemos tenido muchos dias de trabajo, tan sólo martes, jueves y viernes.
El primer dia fue un primer contacto con las herramientas de Flash y Flex. Un poco de teoria sobre algunos conceptos básicos y de como va ir evolucionando el curso.
El segundo dia, jueves, vimos el control de eventos, HTTPService y Datagrid. Todos estos controles me parecieron muy útiles y de manejo cómodo en la herramienta. Se darán algunos detalles de ellos más adelante.
El tercer dia ha sido hoy, viernes. Ha sido un dia muy divertido porque hemos hecho un par de crucigramas que han ayudado a la comprensión de algunos conceptos dados en dias anteriores, además, por supuesto, de hacer la clase mucho más amena. Tambien hemos visto como crear este Blog y varias aplicaciones de google que van a resultar de mucha utilidad. Ah! y no se me puede olvidar dos cosas importantes: creationComplete y addEventListener. También se dará un poco de información sobre ambos más adelante.
A pasar un buen fin de semana!
*****************************************************************
Bueno dicen que lo prometido es deuda, asi que voy a explicar los términos que mencioné más arriba.
Antes de empezar con las definiciones de arriba, me gustaría dejar claro al lector de este blog que aqui no pretendemos enseñar a programar, por lo que no pondremos toda la pagina de codigo necesario para que funcionen las aplicaciones. Este blog está más orientado a dar los datos precisos para esos momentos en los que todo programador siente que no sabe como seguir.
Por esta razón, no llenaremos paginas interminables de código, sino que trataremos de poner el ejemplo concreto para lo que se esté explicando, dar su definición en caso necesario y decir como, cuando y para que se usan las 'cosas'.
Creo que es una manera de encontrar una información puntual de forma rápida y sencilla. Si hubiera alguna duda, consejo, mejora etc recomiendo la parte de comentarios para hacerlo llegar... considero esta herramienta muy importante para poder aprender de una manera fácil!
Empezaremos con HTTPService. Como su propio nombre nos indica, llama a los servicios de Flex a traves de un protocolo HTTP. Es importante no olvidarse de la declaración en la zona de las declaraciones seria algo así:
/*
*/
Seguimos con la siguiente definición, Datagrid. Un Datagrid en Flex sirve para lo mismo que en cualquier otro lenguaje de programación, es decir, es una "lista" enlazada a datos que muestra los elementos del origen de datos en una tabla. Pero dada la importancia que tiene en la programación de paginas web creo que es importante detallar su forma de declaración.
/*
*/
Teniendo en cuenta que con dataProvider lo que hacemos es situarnos en la etiqueta que necesitamos dentro del XML y que mx:columns nos marcará las diferentes columnas.
Respecto a los dos términos que nos faltan, creationComplete y addEventListener. Aunque son nombres diferentes, van intimamente ligados. Es decir, para que un addEventListener funcione debe tener creationComplete bien inicializado.
Podemos decir que addEventListener es un "escuchador", un listener del componente que se “esta escuchando” los posibles eventos de checkbox, label, textbox etc.
Veamos un ejemplo:
//Incluimos el creationComplete="init(event)" en la parte de Applicartions para que addEventListener funcione correctamente.
/*
//Codigo que fuera necesario antes del Action Script
/*Se recomienda el uso de funciones para un codigo limpio y de fácil lectura, por eso incluiremos el addEventListener dentro de una
// Resto de codigo de nuestra página.
*/
Por ahora esto es suficiente para la primera semana!
El primer dia fue un primer contacto con las herramientas de Flash y Flex. Un poco de teoria sobre algunos conceptos básicos y de como va ir evolucionando el curso.
El segundo dia, jueves, vimos el control de eventos, HTTPService y Datagrid. Todos estos controles me parecieron muy útiles y de manejo cómodo en la herramienta. Se darán algunos detalles de ellos más adelante.
El tercer dia ha sido hoy, viernes. Ha sido un dia muy divertido porque hemos hecho un par de crucigramas que han ayudado a la comprensión de algunos conceptos dados en dias anteriores, además, por supuesto, de hacer la clase mucho más amena. Tambien hemos visto como crear este Blog y varias aplicaciones de google que van a resultar de mucha utilidad. Ah! y no se me puede olvidar dos cosas importantes: creationComplete y addEventListener. También se dará un poco de información sobre ambos más adelante.
A pasar un buen fin de semana!
*****************************************************************
Bueno dicen que lo prometido es deuda, asi que voy a explicar los términos que mencioné más arriba.
Antes de empezar con las definiciones de arriba, me gustaría dejar claro al lector de este blog que aqui no pretendemos enseñar a programar, por lo que no pondremos toda la pagina de codigo necesario para que funcionen las aplicaciones. Este blog está más orientado a dar los datos precisos para esos momentos en los que todo programador siente que no sabe como seguir.
Por esta razón, no llenaremos paginas interminables de código, sino que trataremos de poner el ejemplo concreto para lo que se esté explicando, dar su definición en caso necesario y decir como, cuando y para que se usan las 'cosas'.
Creo que es una manera de encontrar una información puntual de forma rápida y sencilla. Si hubiera alguna duda, consejo, mejora etc recomiendo la parte de comentarios para hacerlo llegar... considero esta herramienta muy importante para poder aprender de una manera fácil!
Empezaremos con HTTPService. Como su propio nombre nos indica, llama a los servicios de Flex a traves de un protocolo HTTP. Es importante no olvidarse de la declaración en la zona de las declaraciones seria algo así:
/*
*/
Seguimos con la siguiente definición, Datagrid. Un Datagrid en Flex sirve para lo mismo que en cualquier otro lenguaje de programación, es decir, es una "lista" enlazada a datos que muestra los elementos del origen de datos en una tabla. Pero dada la importancia que tiene en la programación de paginas web creo que es importante detallar su forma de declaración.
/*
*/
Teniendo en cuenta que con dataProvider lo que hacemos es situarnos en la etiqueta que necesitamos dentro del XML y que mx:columns nos marcará las diferentes columnas.
Respecto a los dos términos que nos faltan, creationComplete y addEventListener. Aunque son nombres diferentes, van intimamente ligados. Es decir, para que un addEventListener funcione debe tener creationComplete bien inicializado.
Podemos decir que addEventListener es un "escuchador", un listener del componente que se “esta escuchando” los posibles eventos de checkbox, label, textbox etc.
Veamos un ejemplo:
//Incluimos el creationComplete="init(event)" en la parte de Applicartions para que addEventListener funcione correctamente.
/*
//Codigo que fuera necesario antes del Action Script
/*Se recomienda el uso de funciones para un codigo limpio y de fácil lectura, por eso incluiremos el addEventListener dentro de una
// Resto de codigo de nuestra página.
*/
Por ahora esto es suficiente para la primera semana!
Primer dia del Blog
Hoy hemos estado creando este blog, ideado para hacer un recorrido semanal de nuestro aprendizaje.
Para muchos de nosotros esta forma de compartir nuestros avances en un blog va a ser una nueva manera de trabajar.
Para muchos de nosotros esta forma de compartir nuestros avances en un blog va a ser una nueva manera de trabajar.
Suscribirse a:
Entradas (Atom)