domingo, 30 de noviembre de 2014

Actividades a entregar

  • Mapa conceptual sobre: control de datos, maneras de compartirlos y chequeo de tipos de datos en el lenguaje JSP.
  • Prácticas con un reporte de cada una:
  1. Subir archivos a un servidor.
  2. Conexión a la BD y CRUD de operaciones básicas: insertar, buscar, modificar y eliminar registros a una BD.
  3. Validar si el usuario ya existe y validar los caracteres de entrada al formulario.
  4. Crear archivos PDF.

Proyecto final

  • Viernes 5 de dic. Entregar el proyecto con JSP y Base de Datos funcionando.
  • Domingo 7 de dic. Entregar reporte con la siguiente descripción:
El reporte deberá mostrar una descripción coherente y completa del desarrollo del proyecto. Deberá iniciar con una descripción de requerimientos y un análisis del mismo. En el análisis se deberán elaborar los diagramas de casos de uso, de clases y entidad-relación. Además deberán explicarse los detalles de su implementación. Agregar el código comentado y las pantallas del funcionamiento del programa. Explicar los resultados obtenidos.
  • Domingo 7 de dic. Presentación en PowerPoint con los resultados obtenidos.
Subir proyecto a Drive

viernes, 21 de noviembre de 2014

Ejemplo Sesiones con Base de Datos

login.jsp
Código:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%
// Leemos la variable de sessión 'validado'
Boolean validado = (Boolean) session.getAttribute( "validado" );
// Si la variable de session 'valiadado' ya
// ha sido creada o el valor es 'true'
if( validado!=null && validado.booleanValue())
// Redireccionamos a la página bienvenido.jsp
response.sendRedirect( "bienvenido.jsp" );
%>
<!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=ISO-8859-1">
<title>Login</title>
</head>
<body>
<%
// Leemos la variable de sesión 'usuario'
String usuario = (String) session.getAttribute( "usuario" );
// Si las variable de sesión 'validado'
// y 'usuario' ya habia sido creadadas
if(validado!=null && usuario!=null)
// Mostramos mensaje de advertencia
out.println("<p>Usuario o contraseña incorrectos</p>");
// Si la variable de sesión usuario
// no ha sido creada
if(usuario==null)
// Instanciamos la variable local 'usuario'
usuario = "";
// Borramos la variable de sesión 'usuario'
session.setAttribute( "usuario", null);
%>
<form method="post" action="bienvenido.jsp" name="formLogin">
<input type="text" name="usuario" value="<%=usuario%>"><br>
<input type="password" name="contrasena"><br>
<input type="submit" name="enviar" value="enviar">
</form>
</body>

bienvenido.jsp

Código:
<%@ page import="java.sql.*" %>
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%
// Leemos la variable de sesión 'validado'
Boolean validado = (Boolean) session.getAttribute( "validado" );
// Si la variable de sesión 'validado' no ha
// sido creada o contiene un valor 'false'
if( validado==null || !validado.booleanValue() )
{
// Leemos la variable POST 'usuario'
String usuario= request.getParameter( "usuario" );
// Leemos la variable POST 'contrasena'
String contrasena = request.getParameter( "contrasena" );
// Si las variables POST 'usuario' y 'contrasena'
// existen y 'usuario' contiene texto
if(usuario!=null && contrasena!=null && !usuario.equals("") )
{
// Establecemos la variable de sessión 'usuario'
session.setAttribute( "usuario", usuario);
// Cargamos el Driver de MySQL
Class.forName( "com.mysql.jdbc.Driver" );
// Creamos una conección a MySQL, Sintaxis:
// jdbc:mysql://[servidor]:[puerto]/[base de datos], usuario, contraseña
Connection conn = DriverManager.getConnection( "jdbc:mysql://localhost/test" , "root", "tu_contraseña" );
// Creamos un Statement
Statement stmt = conn.createStatement();
// Cramos un Resultado de Consulta SQL
ResultSet rs = stmt.executeQuery(
"SELECT usuario FROM usuarios " +
"WHERE usuario='" + usuario + "' " +
"AND contrasena='" + contrasena + "'"
);
// Si el resultado contiene filas
if( rs.next() )
// Establecemos la variable local
// 'validado' a true
validado = new Boolean(true);
// Cerramos el Statment
stmt.close();
// Cerramos la conexión
conn.close();
}
}
// Si la variable de sesión
// 'validado' no ha sido creada
if(validado==null)
// Establecemos la variable local
// 'validado' a true
validado = new Boolean(false);
// Añadimos la variable de sesión 'validado'
// con el contenido de la variable local
session.setAttribute( "validado", validado);
// Si la variable local 'validado' es false
if( !validado.booleanValue() )
// Redireccionamos a la página login.jsp
response.sendRedirect( "login.jsp" );
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head><title>Bienvenido</title></head>
<body>Bienvenido</body>
</html>

martes, 18 de noviembre de 2014

PDF con BD MySQL

<%@page import="java.servlet.*,
        javax.servlet.http.*,
        java.io.*,
        java.util.*,
        com.itextpdf.text.pdf.*,
        com.itextpdf.text.*,java.sql.*"
%>

<%
response.setContentType("application/pdf");
Document document = new Document();
try{
    ByteArrayOutputStream buffer = new ByteArrayOutputStream();
    PdfWriter.getInstance(document, buffer);
    document.open();
       PdfPTable table=new PdfPTable(2);
       table.addCell("First Name");
       table.addCell("Last Name");
       Class.forName("com.mysql.jdbc.Driver");
       Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/trydb", "root", "root");
       Statement st=con.createStatement();
       ResultSet rs=st.executeQuery("Select * from trytable");
       while(rs.next()){

       table.addCell(rs.getString("fname"));
       table.addCell(rs.getString("lname"));
       }

    document.add(table);   
    document.close();

    DataOutput dataOutput = new DataOutputStream(response.getOutputStream());
    byte[] bytes = buffer.toByteArray();
    response.setContentLength(bytes.length);
    for(int i = 0; i < bytes.length; i++)
    {
        dataOutput.writeByte(bytes[i]);
    }

}catch(DocumentException e){
    e.printStackTrace();
}

%>

/* Database : trydb 

create table trytable (fname varchar(10), lname varchar(10));  */

-------------------------------------------------------------
Dando formato:

Párrafos, fotos y tablas

http://chuwiki.chuidiang.org/index.php?title=Ejemplo_sencillo_de_creaci%C3%B3n_de_un_pdf_con_iText

Incluir fecha: document.add(new Paragraph("Hola a todos!"));
document.add(new Paragraph(new Date().toString()));

crear PDF básico- Instalar librería

Librería iText: Descargar
o también se puede descargar de:

http://itextpdf.com/download.phphttp://sourceforge.net/projects/itext/files/

----------------------------------------------------------------
Código básico:

<%@page import="java.io.*, com.itextpdf.text.*, com.itextpdf.text.pdf.*"%>
<%
    response.setContentType( "application/pdf" );
    // Paso 1:
    Document documento = new Document();
    // Paso 2:
    ByteArrayOutputStream buffer = new ByteArrayOutputStream();
    PdfWriter.getInstance( documento, buffer );
    // Paso 3:
    documento.open();
    // Paso 4:
    documento.add(new Paragraph("Hola mundo"));
    // Paso 5:
    documento.close();
    // se escribe la salida
    DataOutput output = new DataOutputStream( response.getOutputStream() );
    byte[] bytes = buffer.toByteArray();
    response.setContentLength(bytes.length);
 
    for( int i = 0; i < bytes.length; i++ ) {
            output.writeByte( bytes[i] );
    }
%>

----------------------------------------------------------
Repetimos lo mismo pero ahora con una tabla

<%@
page import="java.servlet.*,
        javax.servlet.http.*,
        java.io.*,
        java.util.*,
        com.itextpdf.text.pdf.*,
        com.itextpdf.text.*,java.sql.*"
%>

<%
response.setContentType("application/pdf");
Document document = new Document();
try{
    ByteArrayOutputStream buffer = new ByteArrayOutputStream();
    PdfWriter.getInstance(document, buffer);
    document.open();


    PdfPTable table = new PdfPTable(2);
    table.addCell("1");
    table.addCell("2");
    table.addCell("3");
    table.addCell("4");
    table.addCell("5");
    table.addCell("6");      
  
    document.add(table);      
    document.close();
  
    DataOutput dataOutput = new DataOutputStream(response.getOutputStream());
    byte[] bytes = buffer.toByteArray();
    response.setContentLength(bytes.length);
    for(int i = 0; i < bytes.length; i++)
    {
        dataOutput.writeByte(bytes[i]);
    }
  
}catch(DocumentException e){
    e.printStackTrace();
}
%>

lunes, 10 de noviembre de 2014

Validación de caracteres

Script para validar la entrada de los caracteres que se escriban en nombre y correo:

<script>
  function valida_envia(){
                var er_nombre = /^([0-9]|[0-9]|á|é|í|ó|ú|ñ|ü|\s|\.|-)+$/
        //expresion regular solo letras
                 var sr_nombre = /^([a-z]|[A-Z]|á|é|í|ó|ú|ñ|ü|\s|\.|-)+$/
         //expresion regular solo numeros
         var correo =  /^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$/
         //expresion regular correo electronico

//primer bloque validamos el nombre
  if(!sr_nombre.test(document.fvalida.usuario.value)) {
         alert('Nombre no valido .')     
                                document.fvalida.usuario.focus()
                 document.fvalida.usuario.value = ""
        return false
   }
   if(!sr_nombre.test(document.fvalida.password.value)) {
         alert('Apellido no valido')
                                document.fvalida.password.focus()
                 document.fvalida.password.value = ""
         return false
   }


   if(!sr_nombre.test(document.fvalida.nombre.value)) {
         alert('edad no valida')
                                document.fvalida.nombre.focus()
                 document.fvalida.nombre.value = ""
         return false
   }
  if(!sr_nombre.test(document.fvalida.estado.value)) {
         alert('correo no valido')
                                document.fvalida.estado.focus()
                 document.fvalida.estado.value = ""
         return false
   }
   //el formulario se envia si todo esta correcto
               
                document.fvalida.submit();
}

</script>

sábado, 8 de noviembre de 2014

Proyecto 2

Hacer una aplicación web para el control de clientes, servicios y pagos de servicio de televisión digital que ofrece renta de canales e internet. 
  • Los administradores de la empresa pueden realizar acciones de alta, consulta, baja, y actualización de clientes (datos personales y el servicio que renta) y servicios (televisión básica, televisión completa, cada uno con y sin internet así como el precio de cada servicio). 
  • Los cajeros podrán registrar los pagos de los clientes (fecha, cantidad, cliente, saldo, etc.). 
  • Los clientes podrán realizar búsquedas por medio de su clave o nombre y revisar su saldo.
Ejemplo:
Revisar la siguiente aplicación de un carrito de compras:
http://desarrolloaplicacionesweb2.blogspot.mx/2012/12/carrito-de-compras-jsp-mysql.html

Tarea

Agregar Bases de Datos a su proyecto del segundo parcial.

Actividad

Validar que no exista el usuario para que pueda realizarse el registro.
usar if(resultSet.next) después de que rs hace un select por medio del usuario, si es verdadero ya existe el registro con ese usuario, en caso contrario no existe.
ResultSet resultSet = stmt.executeQuery("SELECT * FROM my_table");

    // Move cursor forward
    while (resultSet.next()) {
      // Get data at cursor
      String s = resultSet.getString(1);
    }

o también preguntando por
if (resultSet== null) {

lunes, 3 de noviembre de 2014

Insertar corregido

conexión.java
import com.mysql.jdbc.Connection;
import java.sql.DriverManager;
import javax.swing.JOptionPane;
/**
 *
 * @author JesusMiguel
 */
public class ConexionMySQL {
    public String  db="menudb";
    public String url="jdbc:mysql://localhost/"+db;
    public String user="root";
    public String pass="";
    public ConexionMySQL() {
       
    }
   
    public Connection Conectar()
    {
        Connection link=null;
        try
        {
            Class.forName("com.mysql.jdbc.Driver");
            link = (Connection) DriverManager.getConnection(this.url,this.user,this.pass);
            System.out.println("LA CONEXION FUE EXITOSA");
        }
        catch(Exception e)
        {
        JOptionPane.showMessageDialog(null,e);
        }
        return link;
    }
}

insertar.jsp
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@page import="conexion.ConexionMySQL"%>
<%@page import="com.mysql.jdbc.Connection"%>
<%@page import="com.mysql.jdbc.PreparedStatement"%>
<%@page import="com.mysql.jdbc.Statement"%>
<%@page import="java.sql.*"%>
<%@page import="java.sql.DriverManager"%>
<!DOCTYPE html>
<%      
     ConexionMySQL cnx= new ConexionMySQL();
     String[] Registro=null;
    
     Connection on=cnx.Conectar();
        String user="",clave="",nom="",estad="";
        String aSQL = "";
         
     if(request.getParameter("usuario")!=null)
     {user=request.getParameter("usuario");}
     if(request.getParameter("clave")!=null)
     {clave=request.getParameter("clave");}
     if(request.getParameter("nombre")!=null)
     {nom=request.getParameter("nombre");}
     if(request.getParameter("estado")!=null)
     {estad=request.getParameter("estado");}
      
     aSQL= "INSERT INTO usuarios(idusuarios,password,nombre,estado) VALUES(?,?,?,?);";
      
         try
        {
            java.sql.PreparedStatement pst=on.prepareStatement(aSQL);
            pst.setString(1, user);
            pst.setString(2, clave);
            pst.setString(3, nom);
            pst.setString(4, estad);
           
            int n=pst.executeUpdate();
           
            if(n > 0)
            {%>
                <jsp:forward page="index.jsp">
                <jsp:param name="registroexitoso" value="Se ha Registrado Correctamente"/>
                </jsp:forward>
            <%}
            on.close();
        }catch(Exception ex)
        {%>
            <jsp:forward page="index.jsp">
            <jsp:param name="registroexitoso" value="No se ALmacenaron los Datos"/>
            </jsp:forward>
        <%}
     %>

domingo, 2 de noviembre de 2014

Modificar y eliminar registros

Otra forma de hacerlo usando más código web. Revisar la siguiente liga:
http://vacilmio.blogspot.mx/2010/10/modificar-y-eliminar-registros-en-una.html

Actividad: hacer un CRUD que incluya insertar, consultar, modificar y eliminar registros a la BD correos de la tabla Usuarios con los atributos: usuario (PK), nombre, estado (con un select) y contraseña.

Aplicación biblioteca

Probar la siguiente aplicación y explicar frente a grupo lo que se te asigne:
Revisar toda la aplicación completa.

Clase Lunes

Laboratorio 6 las 2 horas, de 3:10 a 4:50pm.