Desarrollo WEB.


Las practicas de programación orientadas a la web son muy cambiantes en el tiempo. Es necesario conocer e implementar tecnologías, conocer lenguajes,integrar comunidades,usar Ides, etc, recientes, para responder al mercado que se acerca.

martes, 23 de noviembre de 2010

Modelado de Software mediante UML2

Aplicación WEB para el Control en Línea de Reservas de Salas del Departamento de TICS en la I.E. Los Pinos.

Este proyecto es desarrollado como trabajo final en la asignatura de Ingenieria de Software II  bajo la supervicion del Ingeniero Edwardo Millan a quien agradezco profundamente por las enseñanzas brindadas en clase.


Propósito del sistema

Sistema de información en línea (Aplicación Web), que permite llevar a cabo el control general para un departamento de TIC (Tecnologías de la información y la comunicación), en la Institución Educativa Los Pinos de la Ciudad de Florencia.

Sistema propuesto

Se Propone el desarrollo de un sistema de control orientado a la web para el control de un Departamento de Tecnologías de la Información y la Comunicación permitiendo realizar gestión de recursos, usuarios y control de salas de sistemas. Como el proyecto abarca gran tiempo en el desarrollo de sus módulos se desarrollara para esta primera versión solo el modulo de reserva de salas en línea.

Requerimientos funcionales 
    • ·         Consultar Horario de Disponibilidad de las Salas. 
    • ·         Ver historiales de reservas y ver reserva actual en servicio. 
    • ·         Realizar reservas en línea. 
    • ·         Un administrador de salas debe aprobar o rechazar la solicitud de una reserva y enviar por correo electrónico un mensaje de aprobación o rechazo al solicitante. 
    • ·         Ingresar novedades por parte del administrador o ingresar recomendaciones de parte del usuario servido, si existen, al terminar cada uso de sala (reserva). 
    • ·         Gestionar Inventarios de salas de sistemas (Hardware y Software) y actualizar inventarios a medida que vallan surgiendo novedades durante el préstamo de las salas. (Pendiente por falta de tiempo)
    • ·         Gestionar usuarios del Sistema (Listar, editar, eliminar, agregar, actualizar). 
    • ·         Entregar y Recibir salas por parte del administrador de las salas y el usuario que usa el servicio de reserva. 
    • ·         El Administrador deberá Generar Reportes en .PDF de forma mensual para cada sala.

    Requerimientos no funcionales 

      • ·         El software debe estar desarrollado (construido) en una herramienta libre (NetBeans 6.8) y con almacenamiento de datos en un motor libre (mysql). 
      • ·         Desarrollo en lenguaje Java (JSP) en combinación con tecnología ajax usando el Framework Ext.js de Sencha. 
      • ·         Debe estar Desarrollado aplicando una arquitectura J2EE
      • ·         Uso de la metodología de desarrollo de software RUP 
      • ·         Uso de la herramienta Visual Paradigm para modelamiento UML.

        domingo, 9 de mayo de 2010

        Tecnologia Arrastrar y soltar elementos WEB con AJAX (JSP, Java, MySql, Javascript, CSS,JQuery)

        La respuesta rapida y eficiente a una peticion realizada por un usuario (cliente) acredita y potencializa la vida actual del software y su sobrevivencia al medio (Servidor e Internet).
        Como dijo mi amigo Darwin Todo es Evolucion, aun la mas simple libreria existente actualmente para el ambiente web, empezo con unas pequeñas lineas de codigo con redundancia y simpleza. Hoy en dia las librerias evolucionan a un ritmo impresionante con tecnicas que en realidad me asustan. Sino Veamos Algunas de ellas y de quienes vivo muy agradecido por brindar sus recursos a la comunidad desarrolladora del mundo.

        Hablemos un poco de AJAX. Ajax no es un lenguaje, ni un API mucho menos, Ajax es un a tecnica de  pogramacion para el engranaje de apis en diferentes lenguajes de forma eficiente y adaptable a los nuevos entornos web 2.0
        Si bien diversos navegadores existen en la actualidad es porque la limitacion de la evolucion en la tecnologia no existe en esta era ni mucho menos lo sera en las que vienen, y bien, tambien muchos desarrolladores se han ido involucrando en la creacion de mecanismos (Api´s,. IDE´s, Motores de BD, Servidores, Librerias, Frameworks, etc) que con mucho esfuerzo y dedicacion nos hacen la vida facil a muchos que los usamos sus creaciones y las adaptamos a nuestras aplicaciones web.

        Es Gracias a Todos Ellos que ahora puedo escribir personalizadamante este tipo de recursos y compartirlos con ustedes.

        • JQuery
        • Mootools
        • Mail
        • JfreeChart
        • Itext
        • JDom
        • etc.
        Hasta Este momento supongo que la persona que va a observar este tutorial sabe de:
        • Tecnologia Java y JSP (Servlet)
        • Hojas de Estilo CSS
        • Javascript - Jquery (Framework Javacript)
        • Mysql (SQL)
        • Servidores TOMCAT o RESIN 
        • AJAX
        Bueno ahora si vamos a ver el Ejemplo 100% Funcional
        Para ahorrarme la descripcion del ejemplo he puesto los comentarios en todos los codigos (API) usados.

        SQL
        -- 
        -- Estructura de tabla para la tabla `tabla`
        -- 
        CREATE TABLE `tabla` (
          `nombre_li` varchar(50) NOT NULL,
          `posicion` varchar(100) NOT NULL,
          `id` int(11) NOT NULL
        ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
        
        INSERT INTO `tabla` VALUES (\'listItem_1\', \'2\', 1);
        INSERT INTO `tabla` VALUES (\'listItem_2\', \'1\', 2);
        INSERT INTO `tabla` VALUES (\'listItem_3\', \'3\', 3);
        INSERT INTO `tabla` VALUES (\'listItem_4\', \'4\', 4);
        INSERT INTO `tabla` VALUES (\'listItem_5\', \'5\', 5);
        INSERT INTO `tabla` VALUES (\'listItem_6\', \'6\', 6);
        

        Stylo Visual CSS
        /* Estilo Visual para la GUI
        * Es muy importante conocer CSS y la aplicacion de estos
        * estilos de manera dinamica con Javascript.
        */
        * { margin: 0; padding: 0; }
        
        body {
         font: 0.9em Arial;
         padding: 10px;
        }
        
        #info {
         display: block;
         padding: 10px; 
            margin-bottom: 5px;
         border: 1px solid #333;
         background-color: #efefef;
        }
        
        #test-list {
         list-style: none;
        }
        
        #test-list li {
         display: block;
         padding: 20px 10px; margin-bottom: 3px;
         background-color: #efefef;
        }
        
        #test-list li img.handle {
         margin-right: 20px;
         cursor: move;
        }
        #test-lista {
         list-style: none;
        }
        
        #test-lista li {
         display: block;
         padding: 20px 10px; margin-bottom: 3px;
         background-color: #efefef;
        }
        
        #test-lista li img.handles {
         margin-right: 20px;
         cursor: move;
        }
        #tabla{
            border: 1px solid black;
        }
        

        Java JSP

        <%@page import="java.sql.*, java.util.Date, javax.swing.*, javax.servlet.*, java.util.*"  session="true" %>
        <jsp:useBean id="conect" scope="session" class="Control.BeanConnection" />
        <jsp:useBean id="consulta" scope="session" class="Control.Consultas" />
        <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
        <html xmlns="http://www.w3.org/1999/xhtml">
            <head>
                <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
                <title>Tecnologia Arrastrar y soltar elementos con AJAX (JSP, Java, MySql, Javascript, CSS)</title>
                <!--Llamado a los componentes Jquery
                La mejor manera de no consumir recursos en nuestro servidor
                es llamar directamente las librerias desde la zona de recursos
                de JQUERY en google Sources
                Excelente.! siempre se mantienen actualizadas.
                -->
                <!--<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js" type="text/javascript"></script>-->
                <script type="text/javascript" src="jquery-1.3.2.min.js"></script>
                <script type="text/javascript" src="jquery-ui-1.7.1.custom.min.js"></script>
                <link rel=\'stylesheet\' href=\'styles.css\' type=\'text/css\' media=\'all\' />
                <script type="text/javascript">
                    $(document).ready(function() {/*Nos ponemos a la Escucha*/
                        $("#test-list").sortable({//Creamos el elemento
                            placeholder: \'tabla\',/*Le Programos sus propiedades y Acciones*/
                            containment: "ul",
                            items: "li",
                            axis: \'y\',
                            opacity: 0.6,
                            handle : \'.handle\',
                            update : function () {//Al Actualizarse
                                var order = $(\'#test-list\').sortable(\'serialize\');//Toma en serie los componentes y almacenelos en una variable arreglo order
                                $("#info").load("sortable.jsp",{ordenar: order, evento: "Run"}),//envio de Parametros a la Pagina Sortable.jsp
                                //Quien sera la encargada de procesar la informacion con la BD 
                                alert(order);
                            }
                        });
                    });
                </script>
            </head>
            <body>
                <pre>
        <div id="info">Esperando Para Actualizar</div>
                </pre>
                <ul id="test-list" >
                    <%
                                int cont = 0;//
                                ResultSet ListaImagenes = consulta.ListaImagenes(conect);//Llamamos el resultet
                                while (ListaImagenes != null && ListaImagenes.next()) {//Lo vaciamos y tiene registros
                                    cont++;
                    %>
                    <li id="listItem_<%=cont+ ""/*Valor de la Serie*/%>"><img src="img.png" alt="move" width="16" height="16" class="handle" /><strong><%=ListaImagenes.getString("id") + " con nombre de fila:" + ListaImagenes.getString("nombre_li") + ""%> </strong></li>
                    <%}%>
                </ul>
            </body>
        </html>
        

        Clase Java para consulta SQL

        /*
         * To change this template, choose Tools | Templates
         * and open the template in the editor.
         */
        package Control;
        
        import java.sql.ResultSet;
        import java.sql.SQLException;
        
        /**
         *
         * @author Yovany Suarez Silva
         */
        public class Consultas {
        
            public Consultas() {
            }
              /**
               * Este es el metodo que consulta y almacena en un componente tipo
               * resultSet todos los valores de la Tabla
               *
               * @ListaImagenes Arreglo de Registros  en la Tabla
               */
        
            public ResultSet ListaImagenes(BeanConnection conect) throws SQLException {
                String strSQL = "select * from tabla";
                ResultSet ListaImagenes = conect.ejecutar_select_catch(strSQL);
                return ListaImagenes;
            }
        }
        

        Pagina JSP de ACCION

        <%--
            Document   : index
            Created on : 2/05/2010, 07:36:48 PM
            Author     : Yovany Suarez Silva
        --%>
        <%@page import="java.sql.*,  javax.servlet.*, java.util.*"  session="true" %>
        <jsp:useBean id="conect" scope="session" class="Control.BeanConnection" />
        <%//Esto es Java Basico De VI Semestre
                    try {//Las Excepciones No permiten reventar nuestras aplicaciones y nos informan de los errores.
                        if (request.getMethod().equals("POST")) { //Se recibe el metodo
                            String evento = request.getParameter("evento"); //Se recogen los parametros
                            String order = request.getParameter("ordenar");
                            if (evento.equals("Run")) {
                                String palabras[] = order.split("&");//Se separan los items que vienen en el arreglo JSON
                                for (int i = 0; i < palabras.length; i++) { //Se vacea el arreglo
                                    String palabras2[] = palabras[i].split("=");
                                    String b = palabras2[0];
                                    String a = palabras2[1];
                                    String consulta = "UPDATE tabla SET posicion=\'" + a + "\' " +
                                            "WHERE nombre_li=\'" + (b.substring(0, 8)) + "_" + (i + 1) + "\' ";//Se Actualiza y con se escribe la respuesta
                                    conect.ejecutar_sql_catch(consulta);//se llama al metodo de ejecucion para enviar datos a la bd
                                    out.println(consulta);
                                }
                            }
                        }
                    } catch (SQLException e) {//Si hay una Excepcion en SQL
                        out.println(e.getMessage());
                    }
        
        %>
        

        BEAN De Conexion

        package Control;
        /**
         *
         * @author Yovany Suarez Silva
         */
        import java.sql.*;
        
        public class BeanConnection{
            private Connection con = null;
            private PreparedStatement st = null;
            private Statement st1;
            private ResultSet rs;
        
            private int id=0;
        
            public BeanConnection() {
        
            }
            public int getId(){
                return id;
            }
            public void setId(int _id){id=_id;}
            String cadena="";
        
            public void instituciones(){
                cadena="ajax?user=root&password=";
            }
            public void conecta(){
                instituciones();
                try {
                    Class.forName("com.mysql.jdbc.Driver").newInstance();
                    con =  (Connection) DriverManager.getConnection("jdbc:mysql://localhost/"+cadena);
                } catch(Exception e) {
                    System.out.println("\nERROR pool: " + e.toString());
                }
            }
            public Connection getConect(){return con;}
            public void close() {
                try {
                    
                } catch(Exception e) { }
            }
            public void closing() {
                try {
                    st.close();
                    con.close();
                } catch(Exception e) { }
            }
            public ResultSet ejecutar_select_catch(String la_sql) throws SQLException {
                conecta();
                rs = null;
                st= con.prepareStatement(la_sql);
                rs = st.executeQuery();
                return rs;   
            }
            public int ejecutar_sql_catch(String la_sql) throws SQLException {
                conecta();
                int num_filas = 0;
                st=con.prepareStatement(la_sql);
                num_filas = st.executeUpdate();
                return num_filas;
            }
        }
        

        Espero le Aprovechen, lo remodelen y me cuenten como les fue, a traves de pequeños comentarios.
         y Termino con Esta magnifica Frase "Todo lo que no Se Comparte se Pierde", Hafary.


        viernes, 12 de febrero de 2010

        Concatenacion de Caracteres en paginas JSP (" "+String+" ");

        La concatenacion en aplicaciones java web (JSP) es uno de los recursos que se hace irrelevante en el momento de obtener resultados de datos procesados en un controlador y de responder al usuario que hace la peticion o mejor dicho quien realiza la accion.

        Una concatenacion permite juntar caracteres que vienen de variables ya sean (int) enteras, String (caracter), Date, etc.

        Para la conbinacion de tipos de variables se emplean metodos para la conversion de datos como el famoso .toString(int); o Integer.parseInt("String");

        En el siguiente codigo se define una variable tipo String que obtiene los datos de una lista, la idea basicamente es mostrar un valor String que se imprime en el html,, resultado de la concatenacion de un valor nombre1, nombre2, apellido1,apellido2 que contiene los datos de un usuario, si el usuario tiene un segundo apellido y un segundo nombre, se mostrara solo la Inicial en estilo mayuscula.


        
        <%@page contentType="text/html"%>
        
        <%@page pageEncoding="UTF-8"%>
        
        <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
        
           "http://www.w3.org/TR/html4/loose.dtd">
        
        <html>
        
            <head>
        
                <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        
                <title>JSP Page</title>
        
            </head>
        
            <body>
        
                <h1>JSP (Concatenacion)</h1>
        
                <%
        
                try{
        
                    
        
                    List usuario=BeanUsuarios.getListaUsuarios(); //se crea un elemento tipo lista y se trae algunos valores de la clase BeanUsuarios y el metodo GetListaUsuarios que evidentemente sera un bean tipo list
        
                    int contador=0;
        
                    while(contador<=usuario.size()){ //para vaciar la lista se pregunta por el tamaño
        
                    contador ++;
        
                    String pdf="";
        
                    //
        
                    pdf+=("<span><strong>Apellidos: <strong>"+usuario.apellido1+"</span><div style=\"text-transform:uppercase;\"> ");
        
                    if(usuario.apellido2.substring(0,1).length()!=0){
        
                        pdf+=(""+usuario.apellido2.substring(0,1));
        
                    }else{
        
                        pdf+=(""+usuario.apellido2);
        
                    }
        
                    pdf+=(".</div> <span><strong>Nombre: <strong>"+usuario.nombre1);
        
                    pdf+=("</span><div style=\"text-transform:uppercase;\"> "); //Estilo CSS para poner primera letra en mayuscula.
        
                    if(usuario.nombre2.substring(0,1).length()!=0){//preguntar por el tamaño del valor de la propiedad de la lista usuarios
        
                        pdf+=(""+usuario.nombre2.substring(0,1));
        
                    }else{
        
                        pdf+=(""+usuario.nombre2);
        
                    }
        
                    pdf+=(".</div>"); // el += hace que se siga almacendo en la variable sin eliminarse ningun caracter
        
                    out.print(""+pdf); //Se imprime en la JSP
        
                    }
        
                   
        
                } catch (Exception ex) { //si existe un error en el codigo se obtiente una excepcion y se imprime el error en consola
        
                    out.print("Error: "+ex.getMessage());
        
                }
        
                %>
        
                
        
                
        
                
        
            </body>
        
        </html>
        
        
        
        
        

        El Resultado final Sera de esta Manera.

        Apellidos: Suarez S. Nombres: Yovany
        o,
        Apellidos: Suarez . Nombres: Yovany M.

        martes, 2 de febrero de 2010

        Pagina Dinamica con JSP

        JSP (Javas Servlet Pages)

        Con ajax, la nueva tecnologia que combina, css, javascript y xml, se pueden realizar cargas de paginas dentro de divs o frames ubicados en una pagina principal, pero esto realmente no es dinamismo en el sentido del desarrollo web, este proceso solo se hace con lenguajes que se copilan en el navegador o el cliente en el caso de javascript, css, html, etc.

        Para realizar aplicaciones web Dinamicas de alto nivel es necesario utilizar lenguaje de servidor como lo es php, jsp, aspx, etc.

        En Este ejemplo ilustro de una manera sencilla como poner en marcha la logica del dinamismo en paginas JSP

        La idea consiste en crear una variable que servira como pin de corte entre los diferentes fragmentos html , mediante un comando href se enviaran valores en parametros, se recibiran a travez del metodo HttpServletRequest y se pondran en la variable para luego ser condicionada por la JSP

        <%-- 
            Document   : PaginaDinamica
            Created on : 3/02/2010, 12:28:41 AM
            Author     : Yovany Suarez Silva
        --%>
        
        <%@page contentType="text/html"  import="java.sql.*, java.util.Date, javax.swing.*, javax.servlet.http.*, javax.servlet.*, javax.servlet.http.HttpSession"  import="java.util.*, java.io.*" %>
        <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
           "http://www.w3.org/TR/html4/loose.dtd">
        <%
        int pin=0; //ummmm
        
        try{ //capturamos las excepciones para que no nos reviente la pagina, es muy importante
            if(request.getMethod().compareTo("GET")==0){ //Preguntamos si el metodo del formulario es tipo get, 
                //en este caso como viene de un href (propiedad de un <a>). viene como tipo GET
            pin = Integer.parseInt(request.getParameter("pin"));//capturamos el valor del componente pin='', 
               //que mandamos en el href="PaginaDinamica.jsp?pin=1"
            }else{
                pin=0;
                }
        }catch(Exception e){//si existe una excepcion imprimimos el mensaje.
            out.print("valor: "+e.getMessage()+"; No se ha recibido un Valor.");
            }
        %>
        <html>
            <head>
                <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
                <title>Pagina Dinamica Con JSP</title>
            </head>
            <body>
                <%--Menu para enviar los parametros a la variable pin--%>
                <ul>
                    <li><a href="PaginaDinamica.jsp?pin=1" <%-- Se envia el parametro con el valor pin=1 en la accion del href --%>>Mostrar el Fragmento de pagina 1</a></li>
                    <li><a href="PaginaDinamica.jsp?pin=2">Mostrar el Fragmento de pagina 2</a></li>
                    <li><a href="PaginaDinamica.jsp?pin=0">Volver al Inicio</a></li>
                </ul>
                <% if(pin == 0){/*si pin tiene un valor = 0 */%>
                Hola a todos este es un ejemplo muy facil para explicar un poco la logica de las paginas JSP dinamicas
                <%}if(pin == 1){/*si pin tiene un valor = 1 */%>
                Este es el Fragmento HTML 1
                <%}if(pin == 2){/*si pin tiene un valor = 2 */%>
                Este es el Fragmento HTML 2
                <%}%>
            </body>
        </html>
        
        
        Informacion de Ayuda.

        miércoles, 20 de enero de 2010

        Div con Esquinas redondeadas hechas con puro CSS

        CSS es uno de los lenguajes mas usados en el desarrollo de paginas web dinamicas con estilos visuales atractivas, las Cascading Style Sheets (CSS) son archivos que contienen clases visuales para aplicar a componentes html.

        Ejemplo

        <style>
        .texto{
          text-aling:center; /*texto centrado*/
          font-size:15px;/*tamaño del texto*/
          color:#000000;
          border-bottom:1px solid gray; 
          /*Borde inferior de grosor 1px solido y de color gris*/
        }
        </style> 
        Ahora para aplicar este estilo a un elemento simplemente lo aplicamos en el atributo class del elemento. La mayor ventaja de usar CSS es que se puede reutilizar la clase en varios elementos html.

        Ejemplo:

        <div class="texto">
        Este es un texto de prueba con un estilo visual aplicado.
        </div>
        

        Despues de esta breve introduccion ahora si vamos a ver tres ejemplos de Cajas (div) con bordes redondeados hechos solo con css y algunas imagenes en el caso del 3 ejemplo.

        martes, 19 de enero de 2010

        Validacion de Formularios usando la Libreria Prototype

        Este sencillo ejemplo de validacion de formularios con la libreria ajax llamada PROTOTYPE nos permite realizar una validacion de los campos de un formulario, en ocasiones es bueno y seguro para la aplicacion ya que se puede desde la capa de presentacion decirle al usuario cual es el dato requerido para cada campo en el formulario y asi evitar que los datos que lleguen a nuestra capa de controladores tengan que ser validados de nuevo.
        <html>
        <head>
        <script src="scriptaculous/lib/prototype.js" type="text/javascript"></script>
        <script src="scriptaculous/src/effects.js" type="text/javascript"></script>
        <script type="text/javascript" src="fabtabulous.js"></script>
        <script type="text/javascript" src="validation.js"></script>
        <link rel="stylesheet" type="text/css" href="style.css" />
        </head>
        <body>
        <div id="container">
        <h1>Formulario de Registro de Nuevo Usuario </h1>
        <div id="mainmenu">
        <div id="tab2"><ul id="taabs">
        <a href="#standard">Nuevo Usuario </a>
        <a href="#using-titles">Nueva Afiliacion </a>
        <a href="#no-element-ids">Mas Informacion</a>
        </ul><div>
        <div class="bar">&nbsp;</div>
        <div class="panel" id="standard">
        <form id="test" action="registro.jsp" method="post">
        <table width="405" border="0" align="center">
        <tr>
        <td width="399"><ul id="tabs1">
        
        <a href="#standard1">Tu Cuenta</a>      
        
        <a href="#using-titles1">Profesional</a>      
        
        <a href="#no-element-ids1">Mas Informacion</a>      
        </ul><div>
        <div class="bar">&nbsp;</div>
        <div class="panel" id="standard1">
        
        <fieldset>
        <legend>Datos para la Cuenta Nueva </legend>
        <div class="form-row">
        <div class="field-label">
        <label for="nombre">Nombre Completo </label>
        :</div>
        <div class="field-widget"><input name="nombre" class="required" id="nombre" title="Ingrese su Nombre Completo" size="30" />
        </div>
        </div><div class="form-row">
        <div class="field-label">
        <label for="field1">Apellidos</label>
        :</div>
        <div class="field-widget"><input name="apellidos" class="required" id="apellidos" title="Enter your name" size="40" />
        </div>
        </div><div class="form-row">
        <div class="field-label">
        <label for="documento">Documento de Identidad </label>
        :</div>
        <div class="field-widget"><input name="cedula" class="validate-number" id="cedula" title="Ingrese su Nombre Completo" size="20" />
        No de Cedula</div>
        </div><div class="form-row">
        <div class="field-label">
        <label for="field1">Nombre de Usuario</label>
        :</div>
        <div class="field-widget"><input name="user" class="required" id="user" title="Enter your name" size="30" />
        </div>
        </div>
        <div class="form-row">
        <div class="field-label"><label for="pass">Password</label>:</div>
        <div class="field-widget"><input type="password" name="pass" id="pass" class="required validate-password" title="Ingrese un password con mas de 6 caracteres" />
        </div>
        </div>
        <div class="form-row">
        <div class="field-label">
        <label for="password">Confirmar Password</label>:</div>
        <div class="field-widget"><input type="password" name="password" id="password" class="required validate-password-confirm" title="Ingrese el password de confirmacion" />
        </div>
        </div>
        <p><a href="#" onClick="$('email-signup').toggle(); return false">Ingrese Su Correo Electronico!</a></p>
        <div id="email-signup" class="form-row" style="display:none;">
        <div class="field-label"><label for="email">Email</label>:</div>
        <div class="field-widget"><input name="email" id="email" class="required validate-email" title="Opcional: Ingrese su Correo Electronico" size="50"/></div>
        </div>
        </fieldset>
        </div>
        <div class="panel" id="using-titles1">
        <fieldset>
        <legend>Informacion Profesional del Usuario </legend>
        <div class="form-row">
        <div class="field-label">
        <label for="field1-t2">Empresa</label>:</div>
        <div class="field-widget"><input name="empresa" class="required" id="empresa" title="Enter your name. This is a required field" size="50" />
        </div>
        </div>
        <div class="form-row">
        <div class="field-label">
        <label for="field3-t2">Profesion</label>:</div>
        <div class="field-widget"><input name="profesion" class="required" id="profesion"  title="Enter your employee number, please use only alphanumeric characters" size="40" />
        </div>
        </div>
        <div class="form-row">
        <div class="field-label">
        <label for="field4-t2">Cargo Actual  </label>
        :</div>
        <div class="field-widget"><input name="cargoactual" class="required" id="cargoactual"  title="Optional: Enter your age, please use only numbers" size="40" /> 
        (opcional)</div>
        </div>
        <div class="form-row">
        <div class="field-label">
        <label for="field5-t2">Tiempo de Labores Profesionales  </label>
        :</div>
        <div class="field-widget"><input name="tlabores" class="validate-number" id="tlabores"  title="Optional: Enter a dollar amount for donation" size="10" /> 
        (Anos)</div>
        </div>
        </fieldset>
        <div align="center"><br>
        <input name="evento" type="submit" class="boton" id="evento" value="Enviar" /> 
        <input name="evento" type="button" class="boton" id="evento" onClick="valid.reset(); return false" value="Limpiar" />
        </div>
        </div>
        <div class="panel" id="no-element-ids1">
        <fieldset>
        <legend>Registrar Otros Servicios </legend>
        <div class="form-row">
        <div class="field-label">
        <label for="field5-t2">Informacion del Sistema   </label>
        :</div>
        <div>
        <p align="justify" >Por favor ingresa los datos generales y tambien los datos laborales, luego si envia el formulario. Para Solicitar tus datos personales llena el formulario para Forzar el Password. Estos datos seran consultados y validados por el sistema y le seran arrojados los valores de la consulta en el email que se regsitro para la cuenta de usuario.</p>
        <p>El Olvido de Password acarrea grandes problemas de inseguridad por favor sea prudente a la hora de almacenar sus password en lugares de recordatorio facil. </p>
        </div>
        </div>
        </fieldset>
        </div>
        </div> </td>
        </tr>
        </table>     <script type="text/javascript">
        function formCallback(result, form) {
        window.status = "valiation callback for form '" + form.id + "': result = " + result;
        }
        
        var valid = new Validation('test', {immediate : true, onFormValidate : formCallback});
        Validation.addAllThese([
        
        ['validate-password-confirm', 'La Confirmacion del Password es Invalida. Por favor intentelo nuevamente', {
        equalToField : 'pass'
        }]
        ]);
        </script></form>
        </p></div>
        <div class="panel" id="using-titles">
        <form id="afiliacion" action="afiliacion.jsp" method="post">
        <table width="405" border="0" align="center">
        <tr><td><table width="396" border="0" align="center">
        <tr>
        <td class="field-label">Fecha de Afiliacion:</td>
        </tr>
        </table></td></tr>
        <tr>
        <td width="399"><ul id="tabs2">
        
        <a href="#standard2">Identificacion</a>      
        
        <a href="#using-titles2">Domicilio</a>      
        
        <a href="#inforeferido2">Referido</a>
        <a href="#no-element-ids2">Mas Informacion</a>      
        </ul><div>
        <div class="bar">&nbsp;</div>
        <div class="panel" id="standard2">
        
        <fieldset>
        <legend>Datos para la Afiliacion </legend>
        <div class="form-row">
        <div class="field-label">
        <label for="nombre">Id de Usuario </label>
        :</div>
        <div class="field-widget"><input name="id" class="required" id="id" title="Ingrese El Id de Usuario" size="10" />
        </div>
        </div>
        <div class="form-row">
        <div class="field-label">
        <label for="nombre">Nombre Completo </label>
        :</div>
        <div class="field-widget"><input name="nombre" class="required" id="nombre" size="30" />
        </div>
        </div><div class="form-row">
        <div class="field-label">
        <label for="field1">Apellidos</label>
        :</div>
        <div class="field-widget"><input name="apellidos" class="required" id="apellidos" size="40" />
        </div>
        </div><div class="form-row">
        <div class="field-label">
        <label for="documento">Sexo </label>
        :</div>
        <div class="field-widget"><input type="radio" name="sexo" id="sexo" value="M" />
        Masculino<br />
        <input type="radio" name="sexo" id="sexo" value="F" class="validate-one-required" />
        Femenino</div>
        </div><div class="form-row">
        <div class="field-label">
        <label for="documento">Tipo de Documento  </label>
        :</div>
        <div class="field-widget">
        <select name="tipodocumento" class="required" id="tipodocumento">
        <option>Seleccione..</option>
        <option value="1">Cedula</option>
        <option value="2">C. Extranjeria</option>
        </select>       
        Tipo de Documento </div>
        </div><div class="form-row">
        <div class="field-label">
        <label for="documento">No de Documento </label>
        :</div>
        <div class="field-widget"><input name="nodocumento" class="required validate-number" id="nodocumento" title="Ingrese el numero del documento" size="20" />
        No del Documento </div>
        </div><div class="form-row">
        <div class="field-label">
        <label for="field1">Telefono</label>
        Fijo:</div>
        <div class="field-widget"><input name="telfijo" class="required validate-number" id="telfijo" title="Ingrese un Telefono Fijo" />
        </div>
        </div>
        <div class="form-row">
        <div class="field-label">
        <label for="pass">Telefono Celular </label>
        :</div>
        <div class="field-widget"><input name="telcel" id="telcel" class="required validate-number" title="Ingrese un Numero Celular" />
        </div>
        </div>
        <div class="form-row">
        <div class="field-label">
        <label for="password">Profesion</label>
        :</div>
        <div class="field-widget"><input name="profesion" class="required" id="profesion" title="Ingrese su Profesion" size="50" />
        </div>
        </div><div class="form-row">
        <div class="field-label">
        <label for="password">Web</label>
        :</div>
        <div class="field-widget"><input name="web" class="required validate-url" id="web" title="Ingrese el password de confirmacion" size="40" />
        </div>
        </div>
        <p><a href="#" onClick="$('email-signup').toggle(); return false">Ingrese Su Correo Electronico!</a></p>
        <div id="email-signup" class="form-row" style="display:none;">
        <div class="field-label"><label for="email">Email</label>:</div>
        <div class="field-widget"><input name="email" id="email" class="required validate-email" title="Opcional: Ingrese su Correo Electronico" size="50"/></div>
        </div>
        </fieldset>
        </div>
        <div class="panel" id="using-titles2">
        <fieldset>
        <legend>Informacion de Domicilio a Efecto de Notificaciones </legend>
        <div class="form-row">
        <div class="field-label">
        <label for="field1-t2">Ciudad</label>
        :</div>
        <div class="field-widget"><input name="ciudad" class="required" id="ciudad" title="Enter your name. This is a required field" size="40" />
        </div>
        </div>
        <div class="form-row">
        <div class="field-label">
        <label for="field3-t2">Barrio</label>
        :</div>
        <div class="field-widget"><input name="barrio" class="required" id="barrio"  title="Ingrese el Nombre del Barrio de Residencia" size="40" />
        </div>
        </div>
        <div class="form-row">
        <div class="field-label">
        <label for="field4-t2">Telefono  </label>
        :</div>
        <div class="field-widget"><input name="telefono" class="required validate-number" id="telefono"  title="Ingrese un Numero de Telefono de Domicilio" />
        </div>
        </div><div class="form-row">
        <div class="field-label">
        <label for="field4-t2">Entidad  </label>
        :</div>
        <div class="field-widget"><input name="entidad" class="required" id="entidad"  title="Ingrese el nombre de la Entidad" size="40" />
        </div>
        </div><div class="form-row">
        <div class="field-label">
        <label for="field4-t2">Direccion  </label>
        :</div>
        <div class="field-widget"><input name="direccion" class="required" id="direccion"  title="Ingrese una Direccion Valida de Ubicacion" size="40" />
        </div>
        </div>
        <div class="form-row">
        <div class="field-label">
        <label for="field5-t2">Oficina  </label>
        :</div>
        <div class="field-widget"><input name="oficina" class="required" id="oficina"  title="Ingrese un identificador de Oficina" size="30" />
        </div>
        </div>
        </fieldset>
        
        </div>
        <div class="panel" id="inforeferido2">
        <fieldset>
        <legend>Informacion del Referido  </legend>
        <div class="form-row">
        <div class="field-label">
        <label for="field1-t2">No Documento </label>
        :</div>
        <div class="field-widget"><input name="nodocrefe" class="required validate-number" id="nodocrefe" title="No del Documento de quien lo refirio" />
        </div>
        </div><div class="form-row">
        <div class="field-label">
        <label for="field1-t2">Nombre </label>
        :</div>
        <div class="field-widget"><input name="nombrerefe" class="required" id="nombrerefe" title="Ingrese el Nombre de Quien lo Refirio" size="40" />
        </div>
        </div><div class="form-row">
        <div class="field-label">
        <label for="field1-t2">Apellidos</label>
        :</div>
        <div class="field-widget"><input name="apellidosrefe" class="required" id="apellidosrefe" title="Ingrese el Apellido de quien lo Refirio" size="50" />
        </div>
        </div><div align="center"><br>
        <input name="evento" type="submit" class="boton" id="evento" value="Enviar" /> 
        <input name="evento" type="button" class="boton" id="evento" onClick="valid.reset(); return false" value="Limpiar" />
        </div>
        </fieldset>
        </div><div class="panel" id="no-element-ids2">
        <fieldset>
        <legend>Informacion para el Afiliado  </legend>
        <div class="form-row">
        <div class="field-label">
        <label for="field5-t2">Informacion del Sistema   </label>
        :</div>
        <div>
        <p align="justify" >Por favor ingresa todos los datos en el formularios de afiliacion. un administrador aprobara la afiliacion y te enviara el codigo unico de usuario al email registrado.</p>
        <p>El Olvido de Password acarrea grandes problemas de inseguridad por favor sea prudente a la hora de almacenar sus password en lugares de recordatorio facil. </p>
        </div>
        </div>
        </fieldset>
        </div>
        </div> </td>
        </tr>
        </table>     <script type="text/javascript">
        function formCallback(result, form) {
        window.status = "valiation callback for form '" + form.id + "': result = " + result;
        }
        
        var valid = new Validation('afiliacion', {immediate : true, onFormValidate : formCallback});
        </script></form>
        
        
        </p></div>
        <div class="panel" id="no-element-ids">
        <form id="test3" action="#" method="get">
        <fieldset>
        <legend>Mensaje</legend>
        <div class="form-row">
        <div class="field-label">
        <label for="field5-t2">Informacion del Sistema   </label>
        :</div>
        <div>
        <p align="justify" class="required">Para Solicitar tus datos personales llena el formulario para Forzar el Password. Estos datos seran consultados y validados por el sistema y le seran arrojados los valores de la consulta en el email que se regitro para la cuetna de usuario.</p>
        <p>El Olvido de Password acarrea grandes problemas de inseguridad por favor sea prudente a la hora de almacenar sus password en lugares de recordatorio facil. </p>
        </div>
        </div>
        </fieldset><br>
        </form>
        </div>
        </div></div>
        </div></div>
        
        <script type="text/javascript">
        new Fabtabs('taabs');
        new Fabtabs('tabs1');
        new Fabtabs('tabs2');
        </script>
        </body>
        </html>
        

        Ver Ejemplo en Linea.

        Mostrar y Ocultar elementos HTML en una JSP con JQuery

        Ahora y Desde hace mucho, Mediante la libreria jquery podemos realizar efectos especiales en los componentes html (input,select,checkbox,etc) de nuestras jsp, este es un ejemplo basico para ocultar y mostrar un campo de texto al seleccionar una casilla de verificacion.

        <html>
        <head>
        <title>Mostrar Ocultar</title>
        <script src="jquery-1.3.2.min.js" type="text/javascript"></script> 
        <script> 
             $(document).ready(function(){
             $("#mayoria_edad").click(function(evento){
                if ($("#mayoria_edad").attr("checked")){
               $("#formulariomayores").css("display", "block");
               }else{
               $("#formulariomayores").css("display", "none");
             }
        });
        });
        </script>
        </head>
        
        <body>
        
        <form>
        Nombre: <input type="text" name="nombre">
        <br>
        <input type="checkbox" name="mayor_edad" value="1" id="mayoria_edad"> Soy mayor de Edad
        <br>
        <div id="formulariomayores" style="display: none;">
        Solo mayores de Edad: <input type="text" name="mayores_edad">
        </div>
        </form>
        </body>
        </html>
        
        Informacion de Ayuda.

        viernes, 15 de enero de 2010

        Efectos Sobre Etiquetas DIV usando Mootols y su funcion FxTween

        Mootools es una libreria ajax que nos permite realizar una gran variedad de efectos especiales sobre componentes html como div, span, a, etc.
        En esta ocasion vamos a ver la utilidad de la funcion Fx.Tween y para ello vamos a ver dos pequeños ejemplos. El primero consite en aplicar transparencia en capas a una div, el segundo consiste en cambiar el color de fondo de una div al dar click sobre un enlace.
        <html><head>
        <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
        <title>Cambiar Fondo DIV</title>
        <script src="libreria/mootools-1.js" type="text/javascript"></script>
        <script>
        function CambiarColorDiv(){
        efecto = new Fx.Tween("micapa1");
        efecto.start("background-color", "#ffffff");
        efecto.start("color", "#ffffff");
        
        efectoColorTexto = new Fx.Tween("micapa2", {
        property: 'background-color',
        duration: 'long',
        fps: 200
        });
        efectoColorTexto.start("#ff8800"); 
        };
        </script>
        </head><body>
        <div id="micapa1" style="padding: 5px; background-color: rgb(120, 166, 0); width: 160px; font-size:11px; color:#FFFFFF;">
        cambiando el color de una div usando librerias javascript MOOTOLS y la Super funcion Fx.Tween
        </div>
        <div id="micapa2" style="padding: 5px; background-color: rgb(120, 166, 0); width: 160px; font-size:11px; color:#FFFFFF;">
        cambiando el color de una div usando librerias javascript MOOTOLS y la Super funcion Fx.Tween
        </div>
        
        <a onClick="CambiarColorDiv();">Click Aca para Cambiar el Fondo de la Div</a>
        </body></html>